diff --git a/asset-manifest.json b/asset-manifest.json index 7a48f4f..8d5f861 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { - "main.css": "/llm-explorer/static/css/main.248a94b4.css", - "main.js": "/llm-explorer/static/js/main.0e1c4cdc.js", + "main.css": "/llm-explorer/static/css/main.026bf9f5.css", + "main.js": "/llm-explorer/static/js/main.bedeeb68.js", "static/js/453.a852a576.chunk.js": "/llm-explorer/static/js/453.a852a576.chunk.js", "index.html": "/llm-explorer/index.html", - "main.248a94b4.css.map": "/llm-explorer/static/css/main.248a94b4.css.map", - "main.0e1c4cdc.js.map": "/llm-explorer/static/js/main.0e1c4cdc.js.map", + "main.026bf9f5.css.map": "/llm-explorer/static/css/main.026bf9f5.css.map", + "main.bedeeb68.js.map": "/llm-explorer/static/js/main.bedeeb68.js.map", "453.a852a576.chunk.js.map": "/llm-explorer/static/js/453.a852a576.chunk.js.map" }, "entrypoints": [ - "static/css/main.248a94b4.css", - "static/js/main.0e1c4cdc.js" + "static/css/main.026bf9f5.css", + "static/js/main.bedeeb68.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 1b0d8d5..1cb1243 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -LLM Explorer
\ No newline at end of file +LLM Explorer
\ No newline at end of file diff --git a/static/css/main.248a94b4.css b/static/css/main.026bf9f5.css similarity index 93% rename from static/css/main.248a94b4.css rename to static/css/main.026bf9f5.css index 369345b..059545f 100644 --- a/static/css/main.248a94b4.css +++ b/static/css/main.026bf9f5.css @@ -1,6 +1,6 @@ /* ! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com -*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root,[data-theme]{background-color:oklch(.929519 .002163 17.197414/1);background-color:var(--fallback-b1,oklch(var(--b1)/1));color:oklch(.169617 .001664 17.32068/1);color:var(--fallback-bc,oklch(var(--bc)/1))}@supports not (color:oklch(0 0 0)){:root{--fallback-p:#491eff;--fallback-pc:#d4dbff;--fallback-s:#ff41c7;--fallback-sc:#fff9fc;--fallback-a:#00cfbd;--fallback-ac:#00100d;--fallback-n:#2b3440;--fallback-nc:#d7dde4;--fallback-b1:#fff;--fallback-b2:#e5e6e6;--fallback-b3:#e5e6e6;--fallback-bc:#1f2937;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:light}@media (prefers-color-scheme:dark){:root{--fallback-p:#7582ff;--fallback-pc:#050617;--fallback-s:#ff71cf;--fallback-sc:#190211;--fallback-a:#00c7b5;--fallback-ac:#000e0c;--fallback-n:#2a323c;--fallback-nc:#a6adbb;--fallback-b1:#1d232a;--fallback-b2:#191e24;--fallback-b3:#15191e;--fallback-bc:#a6adbb;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:dark}}}html{-webkit-tap-highlight-color:transparent}:root{--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}@media (prefers-color-scheme:dark){:root{--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}}[data-theme=garden]{--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}:root:has(input.theme-controller[value=garden]:checked){--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}[data-theme=dark]{--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}:root:has(input.theme-controller[value=dark]:checked){--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}[data-theme=dracula]{--b2:0.268053 0.020556 277.508664;--b3:0.247877 0.019009 277.508664;--pc:0.150922 0.036614 346.812432;--sc:0.148405 0.029709 301.883095;--ac:0.166785 0.024826 66.558491;--nc:0.878891 0.006515 275.524078;--inc:0.176526 0.018676 212.846491;--suc:0.174199 0.043903 148.024881;--wac:0.191068 0.026849 112.757109;--erc:0.136441 0.041266 24.430965;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.754611 0.18307 346.812432;--s:0.742023 0.148546 301.883095;--a:0.833927 0.124132 66.558491;--n:0.394456 0.032576 275.524078;--b1:0.288229 0.022103 277.508664;--bc:0.977477 0.007913 106.545019;--in:0.88263 0.09338 212.846491;--su:0.870995 0.219516 148.024881;--wa:0.955338 0.134246 112.757109;--er:0.682204 0.206328 24.430965;color-scheme:dark}:root:has(input.theme-controller[value=dracula]:checked){--b2:0.268053 0.020556 277.508664;--b3:0.247877 0.019009 277.508664;--pc:0.150922 0.036614 346.812432;--sc:0.148405 0.029709 301.883095;--ac:0.166785 0.024826 66.558491;--nc:0.878891 0.006515 275.524078;--inc:0.176526 0.018676 212.846491;--suc:0.174199 0.043903 148.024881;--wac:0.191068 0.026849 112.757109;--erc:0.136441 0.041266 24.430965;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.754611 0.18307 346.812432;--s:0.742023 0.148546 301.883095;--a:0.833927 0.124132 66.558491;--n:0.394456 0.032576 275.524078;--b1:0.288229 0.022103 277.508664;--bc:0.977477 0.007913 106.545019;--in:0.88263 0.09338 212.846491;--su:0.870995 0.219516 148.024881;--wa:0.955338 0.134246 112.757109;--er:0.682204 0.206328 24.430965;color-scheme:dark}*{font-size:1rem;line-height:1.5rem}pre{display:inline-table;margin-bottom:.5rem;margin-top:.5rem;max-width:100%;width:100%}li{margin-bottom:.25rem;margin-top:.25rem}ol{list-style-position:inside;list-style-type:decimal;padding-left:.5rem!important;padding-right:.5rem!important}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:initial}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.avatar.placeholder>div{align-items:center;display:flex;justify-content:center}@media (hover:hover){.label a:hover{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}}.btn{--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-bg-opacity:1;--tw-border-opacity:1;align-items:center;animation:button-pop .25s ease-out;animation:button-pop var(--animation-btn,.25s) ease-out;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity));border-color:#0000;border-color:oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity));border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;border-width:var(--border-btn,1px);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;display:inline-flex;flex-shrink:0;flex-wrap:wrap;font-size:.875rem;font-weight:600;gap:.5rem;height:3rem;justify-content:center;line-height:1em;min-height:3rem;outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));padding-left:1rem;padding-right:1rem;text-align:center;text-decoration-line:none;transition-duration:.2s;transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-user-select:none;user-select:none}.btn-disabled,.btn:disabled,.btn[disabled]{pointer-events:none}.btn-square{height:3rem;padding:0;width:3rem}:where(.btn:is(input[type=checkbox])),:where(.btn:is(input[type=radio])){-webkit-appearance:none;appearance:none;width:auto}.btn:is(input[type=checkbox]):after,.btn:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.\!chat{grid-column-gap:.75rem!important;column-gap:.75rem!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;padding-bottom:.25rem!important;padding-top:.25rem!important}.chat{grid-column-gap:.75rem;column-gap:.75rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:.25rem;padding-top:.25rem}.checkbox{--chkbg:var(--fallback-bc,oklch(var(--bc)/1));--chkfg:var(--fallback-b1,oklch(var(--b1)/1));--tw-border-opacity:0.2;-webkit-appearance:none;appearance:none;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;cursor:pointer;flex-shrink:0;height:1.5rem;width:1.5rem}.drawer{display:grid;grid-auto-columns:-webkit-max-content auto;grid-auto-columns:max-content auto;position:relative;width:100%}.drawer-content{grid-column-start:2;grid-row-start:1;min-width:0}.drawer-side{align-items:flex-start;display:grid;grid-column-start:1;grid-row-start:1;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-rows:repeat(1,minmax(0,1fr));height:100vh;height:100dvh;inset-inline-start:0;justify-items:start;overflow-x:hidden;overflow-y:hidden;overscroll-behavior:contain;pointer-events:none;position:fixed;top:0;width:100%}.drawer-side>.drawer-overlay{background-color:initial;cursor:pointer;place-self:stretch;position:-webkit-sticky;position:sticky;top:0;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.drawer-side>*{grid-column-start:1;grid-row-start:1}.drawer-side>:not(.drawer-overlay){transform:translateX(-100%);transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);will-change:transform}[dir=rtl] .drawer-side>:not(.drawer-overlay){transform:translateX(100%)}.drawer-toggle{-webkit-appearance:none;appearance:none;height:0;opacity:0;position:fixed;width:0}.drawer-toggle:checked~.drawer-side{overflow-y:auto;pointer-events:auto;visibility:visible}.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.drawer-end{grid-auto-columns:auto -webkit-max-content;grid-auto-columns:auto max-content}.drawer-end .drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end .drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end .drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(100%)}[dir=rtl] .drawer-end .drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(-100%)}.drawer-end .drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.dropdown{display:inline-block;position:relative}.dropdown>:not(summary):focus{outline:2px solid #0000;outline-offset:2px}.dropdown .dropdown-content{position:absolute}.dropdown:is(:not(details)) .dropdown-content{--tw-scale-x:.95;--tw-scale-y:.95;opacity:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform-origin:top;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);visibility:hidden}.dropdown-end .dropdown-content{inset-inline-end:0}.dropdown-left .dropdown-content{bottom:auto;inset-inline-end:100%;top:0;transform-origin:right}.dropdown-right .dropdown-content{bottom:auto;inset-inline-start:100%;top:0;transform-origin:left}.dropdown-bottom .dropdown-content{bottom:auto;top:100%;transform-origin:top}.dropdown-top .dropdown-content{bottom:100%;top:auto;transform-origin:bottom}.dropdown-end.dropdown-left .dropdown-content,.dropdown-end.dropdown-right .dropdown-content{bottom:0;top:auto}.dropdown.dropdown-open .dropdown-content,.dropdown:focus-within .dropdown-content,.dropdown:not(.dropdown-hover):focus .dropdown-content{opacity:1;visibility:visible}@media (hover:hover){.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;visibility:visible}.btm-nav>.disabled:hover,.btm-nav>[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btn:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:oklch(.799386 .00186 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));border-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:hover{background-color:color-mix(in oklab,oklch(.864453 .002011 17.197414/1) 90%,#000);background-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity,1)) 90%,#000);border-color:color-mix(in oklab,oklch(.864453 .002011 17.197414/1) 90%,#000);border-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity,1)) 90%,#000)}}@supports not (color:oklch(0 0 0)){.btn:hover{background-color:var(--fallback-b2);background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}}.btn.glass:hover{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost:hover{border-color:#0000}@supports (color:oklch(0 0 0)){.btn-ghost:hover{background-color:oklch(.169617 .001664 17.32068/.2);background-color:var(--fallback-bc,oklch(var(--bc)/.2))}}.btn-outline:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)))}.btn-outline.btn-primary:hover{--tw-text-opacity:1;color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-primary:hover{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.btn-outline.btn-secondary:hover{--tw-text-opacity:1;color:oklch(.89699 .022197 355.095988/var(--tw-text-opacity));color:var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-secondary:hover{background-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000)}}.btn-outline.btn-accent:hover{--tw-text-opacity:1;color:oklch(.112547 .010859 154.390187/var(--tw-text-opacity));color:var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-accent:hover{background-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000)}}.btn-outline.btn-success:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-success:hover{background-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000)}}.btn-outline.btn-info:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-info:hover{background-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000)}}.btn-outline.btn-warning:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-warning:hover{background-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000)}}.btn-outline.btn-error:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-error:hover{background-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000)}}.btn-disabled:hover,.btn:disabled:hover,.btn[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:is(input[type=checkbox]:checked):hover,.btn:is(input[type=radio]:checked):hover{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.dropdown.dropdown-hover:hover .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{cursor:pointer;outline:2px solid #0000;outline-offset:2px}@supports (color:oklch(0 0 0)){:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1))}}}.dropdown:is(details) summary::-webkit-details-marker{display:none}.form-control{display:flex;flex-direction:column}.label{align-items:center;display:flex;justify-content:space-between;padding:.5rem .25rem;-webkit-user-select:none;user-select:none}.indicator{display:inline-flex;position:relative;width:-webkit-max-content;width:max-content}.indicator :where(.indicator-item){position:absolute;white-space:nowrap;z-index:1}.input{--tw-bg-opacity:1;-webkit-appearance:none;appearance:none;background-color:oklch(.929519 .002163 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:#0000;border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;flex-shrink:1;font-size:1rem;height:3rem;line-height:2;line-height:1.5rem;padding-left:1rem;padding-right:1rem}.input-md[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-inner-spin-button{margin-bottom:-1rem;margin-top:-1rem;margin-inline-end:-1rem}.join .dropdown .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .dropdown .join-item{border-end-end-radius:inherit;border-start-end-radius:inherit}.link{cursor:pointer;text-decoration-line:underline}.menu{display:flex;flex-direction:column;flex-wrap:wrap;font-size:.875rem;line-height:1.25rem;padding:.5rem}.menu :where(li ul){margin-inline-start:1rem;padding-inline-start:.5rem;position:relative;white-space:nowrap}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){grid-gap:.5rem;align-content:flex-start;align-items:center;display:grid;gap:.5rem;grid-auto-columns:minmax(auto,-webkit-max-content) auto -webkit-max-content;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;-webkit-user-select:none;user-select:none}.menu li.disabled{color:oklch(.169617 .001664 17.32068/.3);color:var(--fallback-bc,oklch(var(--bc)/.3));cursor:not-allowed;-webkit-user-select:none;user-select:none}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}:where(.menu li){align-items:stretch;display:flex;flex-direction:column;flex-shrink:0;flex-wrap:wrap;position:relative}:where(.menu li) .badge{justify-self:end}.modal{background-color:initial;color:inherit;display:grid;height:100%;inset:0;justify-items:center;margin:0;max-height:none;max-width:none;opacity:0;overflow-y:hidden;overscroll-behavior:contain;padding:0;pointer-events:none;position:fixed;transition-duration:.2s;transition-property:transform,opacity,visibility;transition-timing-function:cubic-bezier(0,0,.2,1);width:100%;z-index:999}:where(.modal){align-items:center}.modal-box{--tw-scale-x:.9;--tw-scale-y:.9;--tw-bg-opacity:1;background-color:oklch(.929519 .002163 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);box-shadow:0 25px 50px -12px #00000040;grid-column-start:1;grid-row-start:1;max-height:calc(100vh - 5em);max-width:32rem;overflow-y:auto;overscroll-behavior:contain;padding:1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:91.666667%}.modal-open,.modal-toggle:checked+.modal,.modal:target,.modal[open]{opacity:1;pointer-events:auto;visibility:visible}.modal-action{display:flex;justify-content:flex-end;margin-top:1.5rem}:root:has(:is(.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open])){overflow:hidden}.navbar{align-items:center;display:flex;min-height:4rem;padding:.5rem;padding:var(--navbar-padding,.5rem);width:100%}:where(.navbar>:not(script,style)){align-items:center;display:inline-flex}.radio{--chkbg:var(--bc);--tw-border-opacity:0.2;-webkit-appearance:none;appearance:none;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-radius:9999px;border-width:1px;cursor:pointer;flex-shrink:0;height:1.5rem;width:1.5rem}.swap{cursor:pointer;display:inline-grid;place-content:center;position:relative;-webkit-user-select:none;user-select:none}.swap>*{grid-column-start:1;grid-row-start:1;transition-duration:.3s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(0,0,.2,1)}.swap input{-webkit-appearance:none;appearance:none}.swap .swap-indeterminate,.swap .swap-on,.swap input:checked~.swap-off,.swap input:indeterminate~.swap-off,.swap input:indeterminate~.swap-on,.swap-active .swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate,.swap-active .swap-on{opacity:1}.btm-nav>.disabled,.btm-nav>[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btm-nav>* .label{font-size:1rem;line-height:1.5rem}.btn:active:focus,.btn:active:hover{animation:button-pop 0s ease-out;transform:scale(.95);transform:scale(var(--btn-focus-scale,.97))}@supports not (color:oklch(0 0 0)){.btn{background-color:var(--fallback-b2);background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}.btn-neutral{--btn-color:var(--fallback-n)}.btn-error{--btn-color:var(--fallback-er)}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:oklch(.799386 .00186 17.197414/1);background-color:var(--fallback-b3,oklch(var(--b3)/1))}}@supports (color:color-mix(in oklab,black,black)){.btn-active{background-color:color-mix(in oklab,oklch(.799386 .00186 17.197414/1) 90%,#000);background-color:color-mix(in oklab,oklch(var(--btn-color,var(--b3))/var(--tw-bg-opacity,1)) 90%,#000);border-color:color-mix(in oklab,oklch(.799386 .00186 17.197414/1) 90%,#000);border-color:color-mix(in oklab,oklch(var(--btn-color,var(--b3))/var(--tw-border-opacity,1)) 90%,#000)}.btn-outline.btn-primary.btn-active{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}.btn-outline.btn-secondary.btn-active{background-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000)}.btn-outline.btn-accent.btn-active{background-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000)}.btn-outline.btn-success.btn-active{background-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000)}.btn-outline.btn-info.btn-active{background-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000)}.btn-outline.btn-warning.btn-active{background-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000)}.btn-outline.btn-error.btn-active{background-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000)}}.btn:focus-visible{outline-offset:2px;outline-style:solid;outline-width:2px}@supports (color:oklch(0 0 0)){.btn-neutral{--btn-color:var(--n)}.btn-error{--btn-color:var(--er)}}.btn-neutral{--tw-text-opacity:1;color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));outline-color:oklch(.241559 .049362 89.070594/1);outline-color:var(--fallback-n,oklch(var(--n)/1))}.btn-error{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));outline-color:oklch(.7176 .221 22.18/1);outline-color:var(--fallback-er,oklch(var(--er)/1))}.btn.glass{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);outline-color:currentColor}.btn.glass.btn-active{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:initial;border-color:#0000;border-width:1px;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:currentColor;outline-color:currentColor}.btn-ghost.btn-active{background-color:oklch(.169617 .001664 17.32068/.2);background-color:var(--fallback-bc,oklch(var(--bc)/.2));border-color:#0000}.btn-link.btn-active{background-color:initial;border-color:#0000;text-decoration-line:underline}.btn-outline{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:initial;border-color:currentColor;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.btn-outline.btn-active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)))}.btn-outline.btn-primary{--tw-text-opacity:1;color:oklch(.6245 .278 3.83636/var(--tw-text-opacity));color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)))}.btn-outline.btn-primary.btn-active{--tw-text-opacity:1;color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn-outline.btn-secondary{--tw-text-opacity:1;color:oklch(.484952 .110985 355.095988/var(--tw-text-opacity));color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity)))}.btn-outline.btn-secondary.btn-active{--tw-text-opacity:1;color:oklch(.89699 .022197 355.095988/var(--tw-text-opacity));color:var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)))}.btn-outline.btn-accent{--tw-text-opacity:1;color:oklch(.562735 .054297 154.390187/var(--tw-text-opacity));color:var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity)))}.btn-outline.btn-accent.btn-active{--tw-text-opacity:1;color:oklch(.112547 .010859 154.390187/var(--tw-text-opacity));color:var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)))}.btn-outline.btn-success{--tw-text-opacity:1;color:oklch(64.8% .15 160/var(--tw-text-opacity));color:var(--fallback-su,oklch(var(--su)/var(--tw-text-opacity)))}.btn-outline.btn-success.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}.btn-outline.btn-info{--tw-text-opacity:1;color:oklch(.7206 .191 231.6/var(--tw-text-opacity));color:var(--fallback-in,oklch(var(--in)/var(--tw-text-opacity)))}.btn-outline.btn-info.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}.btn-outline.btn-warning{--tw-text-opacity:1;color:oklch(.8471 .199 83.87/var(--tw-text-opacity));color:var(--fallback-wa,oklch(var(--wa)/var(--tw-text-opacity)))}.btn-outline.btn-warning.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}.btn-outline.btn-error{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.btn-outline.btn-error.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}.btn.btn-disabled,.btn:disabled,.btn[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked),.btn:is(input[type=radio]:checked){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.6245 .278 3.83636/var(--tw-bg-opacity));background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));border-color:var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked):focus-visible,.btn:is(input[type=radio]:checked):focus-visible{outline-color:oklch(.6245 .278 3.83636/1);outline-color:var(--fallback-p,oklch(var(--p)/1))}@keyframes button-pop{0%{transform:scale(.95);transform:scale(var(--btn-focus-scale,.98))}40%{transform:scale(1.02)}to{transform:scale(1)}}.checkbox:focus{box-shadow:none}.checkbox:focus-visible{outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.checkbox:checked,.checkbox[aria-checked=true],.checkbox[checked=true]{background-color:var(--chkbg);background-image:linear-gradient(-45deg,#0000 65%,var(--chkbg) 65.99%),linear-gradient(45deg,#0000 75%,var(--chkbg) 75.99%),linear-gradient(-45deg,var(--chkbg) 40%,#0000 40.99%),linear-gradient(45deg,var(--chkbg) 30%,var(--chkfg) 30.99%,var(--chkfg) 40%,#0000 40.99%),linear-gradient(-45deg,var(--chkfg) 50%,var(--chkbg) 50.99%)}.checkbox:checked,.checkbox:indeterminate,.checkbox[aria-checked=true],.checkbox[checked=true]{animation:checkmark .2s ease-out;animation:checkmark var(--animation-input,.2s) ease-out;background-repeat:no-repeat}.checkbox:indeterminate{background-image:linear-gradient(90deg,#0000 80%,var(--chkbg) 80%),linear-gradient(-90deg,#0000 80%,var(--chkbg) 80%),linear-gradient(0deg,var(--chkbg) 43%,var(--chkfg) 43%,var(--chkfg) 57%,var(--chkbg) 57%)}.checkbox:disabled,.checkbox:indeterminate{--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)))}.checkbox:disabled{border-color:#0000;cursor:not-allowed;opacity:.2}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}to{background-position-y:0}}.drawer-toggle:checked~.drawer-side>.drawer-overlay{background-color:#0006}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline-style:solid;outline-width:2px}.dropdown.dropdown-open .dropdown-content,.dropdown:focus .dropdown-content,.dropdown:focus-within .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.label-text{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));font-size:.875rem;line-height:1.25rem}.input input{--tw-bg-opacity:1;background-color:oklch(.6245 .278 3.83636/var(--tw-bg-opacity));background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));background-color:initial}.input input:focus{outline:2px solid #0000;outline-offset:2px}.input[list]::-webkit-calendar-picker-indicator{line-height:1em}.input-bordered,.input:focus,.input:focus-within{border-color:oklch(.169617 .001664 17.32068/.2);border-color:var(--fallback-bc,oklch(var(--bc)/.2))}.input:focus,.input:focus-within{box-shadow:none;outline-color:oklch(.169617 .001664 17.32068/.2);outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}.input-disabled,.input:disabled,.input[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:oklch(.169617 .001664 17.32068/.4);color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}.input-disabled::placeholder,.input:disabled::placeholder,.input[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:oklch(.169617 .001664 17.32068/var(--tw-placeholder-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.input::-webkit-date-and-time-value{text-align:inherit}.link:focus{outline:2px solid #0000;outline-offset:2px}.link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.loading{aspect-ratio:1/1;background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;pointer-events:none;width:1.5rem}.loading-dots{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_8HQG{0%25,57.14%25{animation-timing-function:cubic-bezier(.33,.66,.66,1);transform:translate(0)}28.57%25{animation-timing-function:cubic-bezier(.33,0,.66,.33);transform:translateY(-6px)}to{transform:translate(0)}}.spinner_qM83{animation:spinner_8HQG 1.05s infinite}%3C/style%3E%3Ccircle class='spinner_qM83' cx='4' cy='12' r='3'/%3E%3Ccircle class='spinner_qM83' cx='12' cy='12' r='3' style='animation-delay:.1s'/%3E%3Ccircle class='spinner_qM83' cx='20' cy='12' r='3' style='animation-delay:.2s'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_8HQG{0%25,57.14%25{animation-timing-function:cubic-bezier(.33,.66,.66,1);transform:translate(0)}28.57%25{animation-timing-function:cubic-bezier(.33,0,.66,.33);transform:translateY(-6px)}to{transform:translate(0)}}.spinner_qM83{animation:spinner_8HQG 1.05s infinite}%3C/style%3E%3Ccircle class='spinner_qM83' cx='4' cy='12' r='3'/%3E%3Ccircle class='spinner_qM83' cx='12' cy='12' r='3' style='animation-delay:.1s'/%3E%3Ccircle class='spinner_qM83' cx='20' cy='12' r='3' style='animation-delay:.2s'/%3E%3C/svg%3E")}.loading-sm{width:1.25rem}:where(.menu li:empty){--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));height:1px;margin:.5rem 1rem;opacity:.1}.menu :where(li ul):before{--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));bottom:.75rem;content:"";inset-inline-start:0;opacity:.1;position:absolute;top:.75rem;width:1px}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){text-wrap:balance;border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);padding:.5rem 1rem;text-align:start;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn):focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn):focus{--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;outline:2px solid #0000;outline-offset:2px}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.menu :where(li>details>summary)::-webkit-details-marker{display:none}.menu :where(li>.menu-dropdown-toggle):after,.menu :where(li>details>summary):after{box-shadow:2px 2px;content:"";display:block;height:.5rem;justify-self:end;margin-top:-.5rem;pointer-events:none;transform:rotate(45deg);transform-origin:75% 75%;transition-duration:.3s;transition-property:transform,margin-top;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.5rem}.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after,.menu :where(li>details[open]>summary):after{margin-top:0;transform:rotate(225deg)}.mockup-browser .mockup-browser-toolbar .input{--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));direction:ltr;display:block;height:1.75rem;margin-left:auto;margin-right:auto;overflow:hidden;padding-left:2rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:24rem}.mockup-browser .mockup-browser-toolbar .input:before{--tw-translate-y:-50%;aspect-ratio:1/1;border-color:currentColor;border-radius:9999px;border-width:2px;height:.75rem;left:.5rem}.mockup-browser .mockup-browser-toolbar .input:after,.mockup-browser .mockup-browser-toolbar .input:before{content:"";opacity:.6;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.mockup-browser .mockup-browser-toolbar .input:after{--tw-translate-y:25%;--tw-rotate:-45deg;border-color:currentColor;border-radius:9999px;border-width:1px;height:.5rem;left:1.25rem}.modal::backdrop,.modal:not(dialog:not(.modal-open)){animation:modal-pop .2s ease-out;background-color:#0006}.modal-backdrop{align-self:stretch;color:#0000;display:grid;grid-column-start:1;grid-row-start:1;justify-self:stretch;z-index:-1}.modal-open .modal-box,.modal-toggle:checked+.modal .modal-box,.modal:target .modal-box,.modal[open] .modal-box{--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-action>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}@keyframes modal-pop{0%{opacity:0}}@keyframes progress-loading{50%{background-position-x:-115%}}.radio:focus{box-shadow:none}.radio:focus-visible{outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.radio:checked,.radio[aria-checked=true]{--tw-bg-opacity:1;animation:radiomark .2s ease-out;animation:radiomark var(--animation-input,.2s) ease-out;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));background-image:none;box-shadow:inset 0 0 0 4px oklch(.929519 .002163 17.197414/1),inset 0 0 0 4px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}.radio:disabled{cursor:not-allowed;opacity:.2}@keyframes radiomark{0%{box-shadow:inset 0 0 0 12px oklch(.929519 .002163 17.197414/1),inset 0 0 0 12px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset}50%{box-shadow:inset 0 0 0 3px oklch(.929519 .002163 17.197414/1),inset 0 0 0 3px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset}to{box-shadow:inset 0 0 0 4px oklch(.929519 .002163 17.197414/1),inset 0 0 0 4px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}}@keyframes rating-pop{0%{transform:translateY(-.125em)}40%{transform:translateY(-.125em)}to{transform:translateY(0)}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}.swap-rotate .swap-indeterminate,.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-active:where(.swap-rotate) .swap-off,.swap-rotate input:checked~.swap-off,.swap-rotate input:indeterminate~.swap-off{--tw-rotate:-45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-active:where(.swap-rotate) .swap-on,.swap-rotate input:checked~.swap-on,.swap-rotate input:indeterminate~.swap-indeterminate{--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-flip .swap-indeterminate,.swap-flip .swap-on,.swap-flip input:indeterminate~.swap-on{-webkit-backface-visibility:hidden;backface-visibility:hidden;opacity:1;transform:rotateY(180deg)}.swap-active:where(.swap-flip) .swap-off,.swap-flip input:checked~.swap-off,.swap-flip input:indeterminate~.swap-off{-webkit-backface-visibility:hidden;backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.swap-active:where(.swap-flip) .swap-on,.swap-flip input:checked~.swap-on,.swap-flip input:indeterminate~.swap-indeterminate{transform:rotateY(0deg)}@keyframes toast-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}:root .prose{--tw-prose-body:var(--fallback-bc,oklch(var(--bc)/0.8));--tw-prose-headings:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-lead:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-links:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bold:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-counters:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bullets:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-hr:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-quotes:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-quote-borders:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-captions:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-code:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-pre-code:var(--fallback-nc,oklch(var(--nc)/1));--tw-prose-pre-bg:var(--fallback-n,oklch(var(--n)/1));--tw-prose-th-borders:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-td-borders:var(--fallback-bc,oklch(var(--bc)/0.2))}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1));border-radius:1.9rem;border-radius:var(--rounded-badge);font-weight:400;padding:1px 8px}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{display:none}.prose pre code{border-radius:0;padding:0}.prose :where(tbody tr,thead):not(:where([class~=not-prose] *)){border-bottom-color:oklch(.169617 .001664 17.32068/.2);border-bottom-color:var(--fallback-bc,oklch(var(--bc)/.2))}.glass,.glass.btn-active{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(var(--glass-blur,40px));backdrop-filter:blur(var(--glass-blur,40px));background-color:initial;background-image:linear-gradient(135deg,#ffffff4d,#0000),linear-gradient(100deg,#ffffff1a 25%,#0000 0);background-image:linear-gradient(135deg,rgb(255 255 255/var(--glass-opacity,30%)) 0,#0000 100%),linear-gradient(var(--glass-reflex-degree,100deg),rgb(255 255 255/var(--glass-reflex-opacity,10%)) 25%,#0000 25%);border:none;box-shadow:inset 0 0 0 1px #ffffff1a,0 0 0 2px #0000000d;box-shadow:0 0 0 1px rgb(255 255 255/var(--glass-border-opacity,10%)) inset,0 0 0 2px #0000000d;text-shadow:0 1px #0000000d;text-shadow:0 1px rgb(0 0 0/var(--glass-text-shadow-opacity,5%))}@media (hover:hover){.glass.btn-active{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(var(--glass-blur,40px));backdrop-filter:blur(var(--glass-blur,40px));background-color:initial;background-image:linear-gradient(135deg,#ffffff4d,#0000),linear-gradient(100deg,#ffffff1a 25%,#0000 0);background-image:linear-gradient(135deg,rgb(255 255 255/var(--glass-opacity,30%)) 0,#0000 100%),linear-gradient(var(--glass-reflex-degree,100deg),rgb(255 255 255/var(--glass-reflex-opacity,10%)) 25%,#0000 25%);border:none;box-shadow:inset 0 0 0 1px #ffffff1a,0 0 0 2px #0000000d;box-shadow:0 0 0 1px rgb(255 255 255/var(--glass-border-opacity,10%)) inset,0 0 0 2px #0000000d;text-shadow:0 1px #0000000d;text-shadow:0 1px rgb(0 0 0/var(--glass-text-shadow-opacity,5%))}}.btn-sm{font-size:.875rem;height:2rem;min-height:2rem;padding-left:.75rem;padding-right:.75rem}.btn-block{width:100%}.btn-square:where(.btn-xs){height:1.5rem;padding:0;width:1.5rem}.btn-square:where(.btn-sm){height:2rem;padding:0;width:2rem}.btn-square:where(.btn-md){height:3rem;padding:0;width:3rem}.btn-square:where(.btn-lg){height:4rem;padding:0;width:4rem}.btn-circle:where(.btn-sm){border-radius:9999px;height:2rem;padding:0;width:2rem}.drawer-open>.drawer-toggle{display:none}.drawer-open>.drawer-toggle~.drawer-side{display:block;overscroll-behavior:auto;pointer-events:auto;position:-webkit-sticky;position:sticky;visibility:visible;width:auto}.drawer-open>.drawer-toggle~.drawer-side>:not(.drawer-overlay),[dir=rtl] .drawer-open>.drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.drawer-open>.drawer-toggle:checked~.drawer-side{pointer-events:auto;visibility:visible}.drawer-open>.drawer-side{overflow-y:auto}html:has(.drawer-toggle:checked){overflow-y:hidden;scrollbar-gutter:stable}.indicator :where(.indicator-item){--tw-translate-y:-50%;--tw-translate-x:50%;bottom:auto;inset-inline-end:0;inset-inline-start:auto;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item)){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-start){--tw-translate-x:-50%;inset-inline-end:auto;inset-inline-start:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-start)){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-center){--tw-translate-x:-50%;inset-inline-end:50%;inset-inline-start:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-center)){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-end){--tw-translate-x:50%;inset-inline-end:0;inset-inline-start:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-end)){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-bottom){--tw-translate-y:50%;bottom:0;top:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-middle){--tw-translate-y:-50%;bottom:50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-top){--tw-translate-y:-50%;bottom:auto;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-top{place-items:start}.tooltip{--tooltip-offset:calc(100% + 1px + var(--tooltip-tail, 0px))}.tooltip:before{--tw-content:attr(data-tip);content:var(--tw-content);pointer-events:none;position:absolute;z-index:1}.tooltip-top:before,.tooltip:before{bottom:var(--tooltip-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}.drawer-open>.drawer-toggle~.drawer-side>.drawer-overlay{background-color:initial;cursor:default}.modal-top :where(.modal-box){--tw-translate-y:-2.5rem;--tw-scale-x:1;--tw-scale-y:1;border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:0;border-top-right-radius:0;max-width:none;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.modal-middle :where(.modal-box){--tw-translate-y:0px;--tw-scale-x:.9;--tw-scale-y:.9;border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);max-width:32rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:91.666667%}.modal-bottom :where(.modal-box){--tw-translate-y:2.5rem;--tw-scale-x:1;--tw-scale-y:1;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);max-width:none;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.tooltip{--tooltip-tail:0.1875rem;--tooltip-color:var(--fallback-n,oklch(var(--n)/1));--tooltip-text-color:var(--fallback-nc,oklch(var(--nc)/1));--tooltip-tail-offset:calc(100% + 0.0625rem - var(--tooltip-tail));display:inline-block;position:relative;text-align:center}.tooltip:after,.tooltip:before{opacity:0;transition-delay:.1s;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tooltip:after{border-style:solid;border-width:0;border-width:var(--tooltip-tail,0);content:"";display:block;height:0;position:absolute;width:0}.tooltip:before{background-color:var(--tooltip-color);border-radius:.25rem;color:var(--tooltip-text-color);font-size:.875rem;line-height:1.25rem;max-width:20rem;padding:.25rem .5rem;width:-webkit-max-content;width:max-content}.tooltip.tooltip-open:after,.tooltip.tooltip-open:before,.tooltip:hover:after,.tooltip:hover:before{opacity:1;transition-delay:75ms}.tooltip:has(:focus-visible):after,.tooltip:has(:focus-visible):before{opacity:1;transition-delay:75ms}.tooltip:not([data-tip]):hover:after,.tooltip:not([data-tip]):hover:before{opacity:0;visibility:hidden}.tooltip-top:after,.tooltip:after{border-color:var(--tooltip-color) #0000 #0000 #0000;bottom:var(--tooltip-tail-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}.static{position:static}.absolute{position:absolute}.right-2{right:.5rem}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-\[1\]{z-index:1}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-8{margin-left:2rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.line-clamp-1{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.flex{display:flex}.inline-table{display:inline-table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-fit{min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content}.min-h-full{min-height:100%}.w-4{width:1rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-80{width:20rem}.w-9\/12{width:75%}.w-\[260px\]{width:260px}.w-fit{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-24{min-width:6rem}.min-w-\[260px\]{min-width:260px}.min-w-full{min-width:100%}.max-w-\[1000px\]{max-width:1000px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1}.flex-none{flex:none}.flex-grow,.grow{flex-grow:1}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.place-self-center{place-self:center}.self-end{align-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-box{border-radius:1rem;border-radius:var(--rounded-box,1rem)}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-base-content\/20{border-color:oklch(.169617 .001664 17.32068/.2);border-color:var(--fallback-bc,oklch(var(--bc)/.2))}.bg-base-200{--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)))}.bg-base-300{--tw-bg-opacity:1;background-color:oklch(.799386 .00186 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pr-6{padding-right:1.5rem}.pt-0{padding-top:0}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.text-base-content\/30{color:oklch(.169617 .001664 17.32068/.3);color:var(--fallback-bc,oklch(var(--bc)/.3))}.text-error{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.text-error\/30{color:oklch(.7176 .221 22.18/.3);color:var(--fallback-er,oklch(var(--er)/.3))}.text-neutral-content\/30{color:oklch(.929519 .002163 17.197414/.3);color:var(--fallback-nc,oklch(var(--nc)/.3))}.opacity-0{opacity:0}.opacity-40{opacity:.4}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.placeholder\:opacity-30::placeholder{opacity:.3}.hover\:text-base-content:hover{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.hover\:text-base-content\/40:hover{color:oklch(.169617 .001664 17.32068/.4);color:var(--fallback-bc,oklch(var(--bc)/.4))}.hover\:text-current:hover{color:currentColor}.hover\:text-error:hover{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.hover\:text-neutral-content:hover{--tw-text-opacity:1;color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:outline-0:focus{outline-width:0}.group:hover .group-hover\:opacity-90{opacity:.9}@media (min-width:1024px){.lg\:block{display:block}.lg\:hidden{display:none}}@media (min-width:1280px){.xl\:max-w-\[700px\]{max-width:700px}}@media (min-width:1536px){.\32xl\:max-w-\[1000px\]{max-width:1000px}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px} +*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root,[data-theme]{background-color:oklch(.929519 .002163 17.197414/1);background-color:var(--fallback-b1,oklch(var(--b1)/1));color:oklch(.169617 .001664 17.32068/1);color:var(--fallback-bc,oklch(var(--bc)/1))}@supports not (color:oklch(0 0 0)){:root{--fallback-p:#491eff;--fallback-pc:#d4dbff;--fallback-s:#ff41c7;--fallback-sc:#fff9fc;--fallback-a:#00cfbd;--fallback-ac:#00100d;--fallback-n:#2b3440;--fallback-nc:#d7dde4;--fallback-b1:#fff;--fallback-b2:#e5e6e6;--fallback-b3:#e5e6e6;--fallback-bc:#1f2937;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:light}@media (prefers-color-scheme:dark){:root{--fallback-p:#7582ff;--fallback-pc:#050617;--fallback-s:#ff71cf;--fallback-sc:#190211;--fallback-a:#00c7b5;--fallback-ac:#000e0c;--fallback-n:#2a323c;--fallback-nc:#a6adbb;--fallback-b1:#1d232a;--fallback-b2:#191e24;--fallback-b3:#15191e;--fallback-bc:#a6adbb;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:dark}}}html{-webkit-tap-highlight-color:transparent}:root{--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}@media (prefers-color-scheme:dark){:root{--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}}[data-theme=garden]{--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}:root:has(input.theme-controller[value=garden]:checked){--b2:0.864453 0.002011 17.197414;--b3:0.799386 0.00186 17.197414;--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--sc:0.89699 0.022197 355.095988;--ac:0.112547 0.010859 154.390187;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6245 0.278 3.83636;--pc:1 0 0;--s:0.484952 0.110985 355.095988;--a:0.562735 0.054297 154.390187;--n:0.241559 0.049362 89.070594;--nc:0.929519 0.002163 17.197414;--b1:0.929519 0.002163 17.197414;--bc:0.169617 0.001664 17.32068;color-scheme:light}[data-theme=dark]{--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}:root:has(input.theme-controller[value=dark]:checked){--in:0.7206 0.191 231.6;--su:64.8% 0.150 160;--wa:0.8471 0.199 83.87;--er:0.7176 0.221 22.18;--pc:0.13138 0.0392 275.75;--sc:0.1496 0.052 342.55;--ac:0.14902 0.0334 183.61;--inc:0 0 0;--suc:0 0 0;--wac:0 0 0;--erc:0 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.6569 0.196 275.75;--s:0.748 0.26 342.55;--a:0.7451 0.167 183.61;--n:0.313815 0.021108 254.139175;--nc:0.746477 0.0216 264.435964;--b1:0.253267 0.015896 252.417568;--b2:0.232607 0.013807 253.100675;--b3:0.211484 0.01165 254.087939;--bc:0.746477 0.0216 264.435964;color-scheme:dark}[data-theme=dracula]{--b2:0.268053 0.020556 277.508664;--b3:0.247877 0.019009 277.508664;--pc:0.150922 0.036614 346.812432;--sc:0.148405 0.029709 301.883095;--ac:0.166785 0.024826 66.558491;--nc:0.878891 0.006515 275.524078;--inc:0.176526 0.018676 212.846491;--suc:0.174199 0.043903 148.024881;--wac:0.191068 0.026849 112.757109;--erc:0.136441 0.041266 24.430965;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.754611 0.18307 346.812432;--s:0.742023 0.148546 301.883095;--a:0.833927 0.124132 66.558491;--n:0.394456 0.032576 275.524078;--b1:0.288229 0.022103 277.508664;--bc:0.977477 0.007913 106.545019;--in:0.88263 0.09338 212.846491;--su:0.870995 0.219516 148.024881;--wa:0.955338 0.134246 112.757109;--er:0.682204 0.206328 24.430965;color-scheme:dark}:root:has(input.theme-controller[value=dracula]:checked){--b2:0.268053 0.020556 277.508664;--b3:0.247877 0.019009 277.508664;--pc:0.150922 0.036614 346.812432;--sc:0.148405 0.029709 301.883095;--ac:0.166785 0.024826 66.558491;--nc:0.878891 0.006515 275.524078;--inc:0.176526 0.018676 212.846491;--suc:0.174199 0.043903 148.024881;--wac:0.191068 0.026849 112.757109;--erc:0.136441 0.041266 24.430965;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:0.754611 0.18307 346.812432;--s:0.742023 0.148546 301.883095;--a:0.833927 0.124132 66.558491;--n:0.394456 0.032576 275.524078;--b1:0.288229 0.022103 277.508664;--bc:0.977477 0.007913 106.545019;--in:0.88263 0.09338 212.846491;--su:0.870995 0.219516 148.024881;--wa:0.955338 0.134246 112.757109;--er:0.682204 0.206328 24.430965;color-scheme:dark}*{font-size:1rem;line-height:1.5rem}pre{display:inline-table;margin-bottom:.5rem;margin-top:.5rem;max-width:100%;width:100%}li{margin-bottom:.25rem;margin-top:.25rem}ol{list-style-position:inside;list-style-type:decimal;padding-left:.5rem!important;padding-right:.5rem!important}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:initial}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.avatar.placeholder>div{align-items:center;display:flex;justify-content:center}@media (hover:hover){.label a:hover{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}}.btn{--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-bg-opacity:1;--tw-border-opacity:1;align-items:center;animation:button-pop .25s ease-out;animation:button-pop var(--animation-btn,.25s) ease-out;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity));border-color:#0000;border-color:oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity));border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;border-width:var(--border-btn,1px);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;display:inline-flex;flex-shrink:0;flex-wrap:wrap;font-size:.875rem;font-weight:600;gap:.5rem;height:3rem;justify-content:center;line-height:1em;min-height:3rem;outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));padding-left:1rem;padding-right:1rem;text-align:center;text-decoration-line:none;transition-duration:.2s;transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-user-select:none;user-select:none}.btn-disabled,.btn:disabled,.btn[disabled]{pointer-events:none}.btn-square{height:3rem;padding:0;width:3rem}:where(.btn:is(input[type=checkbox])),:where(.btn:is(input[type=radio])){-webkit-appearance:none;appearance:none;width:auto}.btn:is(input[type=checkbox]):after,.btn:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.\!chat{grid-column-gap:.75rem!important;column-gap:.75rem!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;padding-bottom:.25rem!important;padding-top:.25rem!important}.chat{grid-column-gap:.75rem;column-gap:.75rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:.25rem;padding-top:.25rem}.checkbox{--chkbg:var(--fallback-bc,oklch(var(--bc)/1));--chkfg:var(--fallback-b1,oklch(var(--b1)/1));--tw-border-opacity:0.2;-webkit-appearance:none;appearance:none;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;cursor:pointer;flex-shrink:0;height:1.5rem;width:1.5rem}.drawer{display:grid;grid-auto-columns:-webkit-max-content auto;grid-auto-columns:max-content auto;position:relative;width:100%}.drawer-content{grid-column-start:2;grid-row-start:1;min-width:0}.drawer-side{align-items:flex-start;display:grid;grid-column-start:1;grid-row-start:1;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-rows:repeat(1,minmax(0,1fr));height:100vh;height:100dvh;inset-inline-start:0;justify-items:start;overflow-x:hidden;overflow-y:hidden;overscroll-behavior:contain;pointer-events:none;position:fixed;top:0;width:100%}.drawer-side>.drawer-overlay{background-color:initial;cursor:pointer;place-self:stretch;position:-webkit-sticky;position:sticky;top:0;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.drawer-side>*{grid-column-start:1;grid-row-start:1}.drawer-side>:not(.drawer-overlay){transform:translateX(-100%);transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);will-change:transform}[dir=rtl] .drawer-side>:not(.drawer-overlay){transform:translateX(100%)}.drawer-toggle{-webkit-appearance:none;appearance:none;height:0;opacity:0;position:fixed;width:0}.drawer-toggle:checked~.drawer-side{overflow-y:auto;pointer-events:auto;visibility:visible}.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.drawer-end{grid-auto-columns:auto -webkit-max-content;grid-auto-columns:auto max-content}.drawer-end .drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end .drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end .drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(100%)}[dir=rtl] .drawer-end .drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(-100%)}.drawer-end .drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.dropdown{display:inline-block;position:relative}.dropdown>:not(summary):focus{outline:2px solid #0000;outline-offset:2px}.dropdown .dropdown-content{position:absolute}.dropdown:is(:not(details)) .dropdown-content{--tw-scale-x:.95;--tw-scale-y:.95;opacity:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform-origin:top;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);visibility:hidden}.dropdown-end .dropdown-content{inset-inline-end:0}.dropdown-left .dropdown-content{bottom:auto;inset-inline-end:100%;top:0;transform-origin:right}.dropdown-right .dropdown-content{bottom:auto;inset-inline-start:100%;top:0;transform-origin:left}.dropdown-bottom .dropdown-content{bottom:auto;top:100%;transform-origin:top}.dropdown-top .dropdown-content{bottom:100%;top:auto;transform-origin:bottom}.dropdown-end.dropdown-left .dropdown-content,.dropdown-end.dropdown-right .dropdown-content{bottom:0;top:auto}.dropdown.dropdown-open .dropdown-content,.dropdown:focus-within .dropdown-content,.dropdown:not(.dropdown-hover):focus .dropdown-content{opacity:1;visibility:visible}@media (hover:hover){.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;visibility:visible}.btm-nav>.disabled:hover,.btm-nav>[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btn:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:oklch(.799386 .00186 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));border-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:hover{background-color:color-mix(in oklab,oklch(.864453 .002011 17.197414/1) 90%,#000);background-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity,1)) 90%,#000);border-color:color-mix(in oklab,oklch(.864453 .002011 17.197414/1) 90%,#000);border-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity,1)) 90%,#000)}}@supports not (color:oklch(0 0 0)){.btn:hover{background-color:var(--fallback-b2);background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}}.btn.glass:hover{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost:hover{border-color:#0000}@supports (color:oklch(0 0 0)){.btn-ghost:hover{background-color:oklch(.169617 .001664 17.32068/.2);background-color:var(--fallback-bc,oklch(var(--bc)/.2))}}.btn-outline:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)))}.btn-outline.btn-primary:hover{--tw-text-opacity:1;color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-primary:hover{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.btn-outline.btn-secondary:hover{--tw-text-opacity:1;color:oklch(.89699 .022197 355.095988/var(--tw-text-opacity));color:var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-secondary:hover{background-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000)}}.btn-outline.btn-accent:hover{--tw-text-opacity:1;color:oklch(.112547 .010859 154.390187/var(--tw-text-opacity));color:var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-accent:hover{background-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000)}}.btn-outline.btn-success:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-success:hover{background-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000)}}.btn-outline.btn-info:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-info:hover{background-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000)}}.btn-outline.btn-warning:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-warning:hover{background-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000)}}.btn-outline.btn-error:hover{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-error:hover{background-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000)}}.btn-disabled:hover,.btn:disabled:hover,.btn[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:is(input[type=checkbox]:checked):hover,.btn:is(input[type=radio]:checked):hover{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.dropdown.dropdown-hover:hover .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{cursor:pointer;outline:2px solid #0000;outline-offset:2px}@supports (color:oklch(0 0 0)){:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1))}}}.dropdown:is(details) summary::-webkit-details-marker{display:none}.form-control{display:flex;flex-direction:column}.label{align-items:center;display:flex;justify-content:space-between;padding:.5rem .25rem;-webkit-user-select:none;user-select:none}.indicator{display:inline-flex;position:relative;width:-webkit-max-content;width:max-content}.indicator :where(.indicator-item){position:absolute;white-space:nowrap;z-index:1}.input{--tw-bg-opacity:1;-webkit-appearance:none;appearance:none;background-color:oklch(.929519 .002163 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:#0000;border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);border-width:1px;flex-shrink:1;font-size:1rem;height:3rem;line-height:2;line-height:1.5rem;padding-left:1rem;padding-right:1rem}.input-md[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-inner-spin-button{margin-bottom:-1rem;margin-top:-1rem;margin-inline-end:-1rem}.join .dropdown .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .dropdown .join-item{border-end-end-radius:inherit;border-start-end-radius:inherit}.link{cursor:pointer;text-decoration-line:underline}.menu{display:flex;flex-direction:column;flex-wrap:wrap;font-size:.875rem;line-height:1.25rem;padding:.5rem}.menu :where(li ul){margin-inline-start:1rem;padding-inline-start:.5rem;position:relative;white-space:nowrap}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){grid-gap:.5rem;align-content:flex-start;align-items:center;display:grid;gap:.5rem;grid-auto-columns:minmax(auto,-webkit-max-content) auto -webkit-max-content;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;-webkit-user-select:none;user-select:none}.menu li.disabled{color:oklch(.169617 .001664 17.32068/.3);color:var(--fallback-bc,oklch(var(--bc)/.3));cursor:not-allowed;-webkit-user-select:none;user-select:none}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}:where(.menu li){align-items:stretch;display:flex;flex-direction:column;flex-shrink:0;flex-wrap:wrap;position:relative}:where(.menu li) .badge{justify-self:end}.modal{background-color:initial;color:inherit;display:grid;height:100%;inset:0;justify-items:center;margin:0;max-height:none;max-width:none;opacity:0;overflow-y:hidden;overscroll-behavior:contain;padding:0;pointer-events:none;position:fixed;transition-duration:.2s;transition-property:transform,opacity,visibility;transition-timing-function:cubic-bezier(0,0,.2,1);width:100%;z-index:999}:where(.modal){align-items:center}.modal-box{--tw-scale-x:.9;--tw-scale-y:.9;--tw-bg-opacity:1;background-color:oklch(.929519 .002163 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);box-shadow:0 25px 50px -12px #00000040;grid-column-start:1;grid-row-start:1;max-height:calc(100vh - 5em);max-width:32rem;overflow-y:auto;overscroll-behavior:contain;padding:1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:91.666667%}.modal-open,.modal-toggle:checked+.modal,.modal:target,.modal[open]{opacity:1;pointer-events:auto;visibility:visible}.modal-action{display:flex;justify-content:flex-end;margin-top:1.5rem}:root:has(:is(.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open])){overflow:hidden}.navbar{align-items:center;display:flex;min-height:4rem;padding:.5rem;padding:var(--navbar-padding,.5rem);width:100%}:where(.navbar>:not(script,style)){align-items:center;display:inline-flex}.radio{--chkbg:var(--bc);--tw-border-opacity:0.2;-webkit-appearance:none;appearance:none;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-radius:9999px;border-width:1px;cursor:pointer;flex-shrink:0;height:1.5rem;width:1.5rem}.swap{cursor:pointer;display:inline-grid;place-content:center;position:relative;-webkit-user-select:none;user-select:none}.swap>*{grid-column-start:1;grid-row-start:1;transition-duration:.3s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(0,0,.2,1)}.swap input{-webkit-appearance:none;appearance:none}.swap .swap-indeterminate,.swap .swap-on,.swap input:checked~.swap-off,.swap input:indeterminate~.swap-off,.swap input:indeterminate~.swap-on,.swap-active .swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate,.swap-active .swap-on{opacity:1}.btm-nav>.disabled,.btm-nav>[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btm-nav>* .label{font-size:1rem;line-height:1.5rem}.btn:active:focus,.btn:active:hover{animation:button-pop 0s ease-out;transform:scale(.95);transform:scale(var(--btn-focus-scale,.97))}@supports not (color:oklch(0 0 0)){.btn{background-color:var(--fallback-b2);background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}.btn-neutral{--btn-color:var(--fallback-n)}.btn-error{--btn-color:var(--fallback-er)}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:oklch(.799386 .00186 17.197414/1);background-color:var(--fallback-b3,oklch(var(--b3)/1))}}@supports (color:color-mix(in oklab,black,black)){.btn-active{background-color:color-mix(in oklab,oklch(.799386 .00186 17.197414/1) 90%,#000);background-color:color-mix(in oklab,oklch(var(--btn-color,var(--b3))/var(--tw-bg-opacity,1)) 90%,#000);border-color:color-mix(in oklab,oklch(.799386 .00186 17.197414/1) 90%,#000);border-color:color-mix(in oklab,oklch(var(--btn-color,var(--b3))/var(--tw-border-opacity,1)) 90%,#000)}.btn-outline.btn-primary.btn-active{background-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.6245 .278 3.83636/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}.btn-outline.btn-secondary.btn-active{background-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.484952 .110985 355.095988/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-s,oklch(var(--s)/1)) 90%,#000)}.btn-outline.btn-accent.btn-active{background-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.562735 .054297 154.390187/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-a,oklch(var(--a)/1)) 90%,#000)}.btn-outline.btn-success.btn-active{background-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(64.8% .15 160/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-su,oklch(var(--su)/1)) 90%,#000)}.btn-outline.btn-info.btn-active{background-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7206 .191 231.6/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-in,oklch(var(--in)/1)) 90%,#000)}.btn-outline.btn-warning.btn-active{background-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.8471 .199 83.87/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-wa,oklch(var(--wa)/1)) 90%,#000)}.btn-outline.btn-error.btn-active{background-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);background-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000);border-color:color-mix(in oklab,oklch(.7176 .221 22.18/1) 90%,#000);border-color:color-mix(in oklab,var(--fallback-er,oklch(var(--er)/1)) 90%,#000)}}.btn:focus-visible{outline-offset:2px;outline-style:solid;outline-width:2px}@supports (color:oklch(0 0 0)){.btn-neutral{--btn-color:var(--n)}.btn-error{--btn-color:var(--er)}}.btn-neutral{--tw-text-opacity:1;color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));outline-color:oklch(.241559 .049362 89.070594/1);outline-color:var(--fallback-n,oklch(var(--n)/1))}.btn-error{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));outline-color:oklch(.7176 .221 22.18/1);outline-color:var(--fallback-er,oklch(var(--er)/1))}.btn.glass{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);outline-color:currentColor}.btn.glass.btn-active{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:initial;border-color:#0000;border-width:1px;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:currentColor;outline-color:currentColor}.btn-ghost.btn-active{background-color:oklch(.169617 .001664 17.32068/.2);background-color:var(--fallback-bc,oklch(var(--bc)/.2));border-color:#0000}.btn-link.btn-active{background-color:initial;border-color:#0000;text-decoration-line:underline}.btn-outline{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:initial;border-color:currentColor;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.btn-outline.btn-active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)))}.btn-outline.btn-primary{--tw-text-opacity:1;color:oklch(.6245 .278 3.83636/var(--tw-text-opacity));color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)))}.btn-outline.btn-primary.btn-active{--tw-text-opacity:1;color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn-outline.btn-secondary{--tw-text-opacity:1;color:oklch(.484952 .110985 355.095988/var(--tw-text-opacity));color:var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity)))}.btn-outline.btn-secondary.btn-active{--tw-text-opacity:1;color:oklch(.89699 .022197 355.095988/var(--tw-text-opacity));color:var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)))}.btn-outline.btn-accent{--tw-text-opacity:1;color:oklch(.562735 .054297 154.390187/var(--tw-text-opacity));color:var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity)))}.btn-outline.btn-accent.btn-active{--tw-text-opacity:1;color:oklch(.112547 .010859 154.390187/var(--tw-text-opacity));color:var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)))}.btn-outline.btn-success{--tw-text-opacity:1;color:oklch(64.8% .15 160/var(--tw-text-opacity));color:var(--fallback-su,oklch(var(--su)/var(--tw-text-opacity)))}.btn-outline.btn-success.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}.btn-outline.btn-info{--tw-text-opacity:1;color:oklch(.7206 .191 231.6/var(--tw-text-opacity));color:var(--fallback-in,oklch(var(--in)/var(--tw-text-opacity)))}.btn-outline.btn-info.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}.btn-outline.btn-warning{--tw-text-opacity:1;color:oklch(.8471 .199 83.87/var(--tw-text-opacity));color:var(--fallback-wa,oklch(var(--wa)/var(--tw-text-opacity)))}.btn-outline.btn-warning.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}.btn-outline.btn-error{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.btn-outline.btn-error.btn-active{--tw-text-opacity:1;color:oklch(0 0 0/var(--tw-text-opacity));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}.btn.btn-disabled,.btn:disabled,.btn[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked),.btn:is(input[type=radio]:checked){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.6245 .278 3.83636/var(--tw-bg-opacity));background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));border-color:var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));color:oklch(1 0 0/var(--tw-text-opacity));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked):focus-visible,.btn:is(input[type=radio]:checked):focus-visible{outline-color:oklch(.6245 .278 3.83636/1);outline-color:var(--fallback-p,oklch(var(--p)/1))}@keyframes button-pop{0%{transform:scale(.95);transform:scale(var(--btn-focus-scale,.98))}40%{transform:scale(1.02)}to{transform:scale(1)}}.checkbox:focus{box-shadow:none}.checkbox:focus-visible{outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.checkbox:checked,.checkbox[aria-checked=true],.checkbox[checked=true]{background-color:var(--chkbg);background-image:linear-gradient(-45deg,#0000 65%,var(--chkbg) 65.99%),linear-gradient(45deg,#0000 75%,var(--chkbg) 75.99%),linear-gradient(-45deg,var(--chkbg) 40%,#0000 40.99%),linear-gradient(45deg,var(--chkbg) 30%,var(--chkfg) 30.99%,var(--chkfg) 40%,#0000 40.99%),linear-gradient(-45deg,var(--chkfg) 50%,var(--chkbg) 50.99%)}.checkbox:checked,.checkbox:indeterminate,.checkbox[aria-checked=true],.checkbox[checked=true]{animation:checkmark .2s ease-out;animation:checkmark var(--animation-input,.2s) ease-out;background-repeat:no-repeat}.checkbox:indeterminate{background-image:linear-gradient(90deg,#0000 80%,var(--chkbg) 80%),linear-gradient(-90deg,#0000 80%,var(--chkbg) 80%),linear-gradient(0deg,var(--chkbg) 43%,var(--chkfg) 43%,var(--chkfg) 57%,var(--chkbg) 57%)}.checkbox:disabled,.checkbox:indeterminate{--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)))}.checkbox:disabled{border-color:#0000;cursor:not-allowed;opacity:.2}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}to{background-position-y:0}}.drawer-toggle:checked~.drawer-side>.drawer-overlay{background-color:#0006}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline-style:solid;outline-width:2px}.dropdown.dropdown-open .dropdown-content,.dropdown:focus .dropdown-content,.dropdown:focus-within .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.label-text{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));font-size:.875rem;line-height:1.25rem}.input input{--tw-bg-opacity:1;background-color:oklch(.6245 .278 3.83636/var(--tw-bg-opacity));background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));background-color:initial}.input input:focus{outline:2px solid #0000;outline-offset:2px}.input[list]::-webkit-calendar-picker-indicator{line-height:1em}.input-bordered,.input:focus,.input:focus-within{border-color:oklch(.169617 .001664 17.32068/.2);border-color:var(--fallback-bc,oklch(var(--bc)/.2))}.input:focus,.input:focus-within{box-shadow:none;outline-color:oklch(.169617 .001664 17.32068/.2);outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}.input-disabled,.input:disabled,.input[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:oklch(.169617 .001664 17.32068/.4);color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}.input-disabled::placeholder,.input:disabled::placeholder,.input[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:oklch(.169617 .001664 17.32068/var(--tw-placeholder-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.input::-webkit-date-and-time-value{text-align:inherit}.link:focus{outline:2px solid #0000;outline-offset:2px}.link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.loading{aspect-ratio:1/1;background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;pointer-events:none;width:1.5rem}.loading-dots{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_8HQG{0%25,57.14%25{animation-timing-function:cubic-bezier(.33,.66,.66,1);transform:translate(0)}28.57%25{animation-timing-function:cubic-bezier(.33,0,.66,.33);transform:translateY(-6px)}to{transform:translate(0)}}.spinner_qM83{animation:spinner_8HQG 1.05s infinite}%3C/style%3E%3Ccircle class='spinner_qM83' cx='4' cy='12' r='3'/%3E%3Ccircle class='spinner_qM83' cx='12' cy='12' r='3' style='animation-delay:.1s'/%3E%3Ccircle class='spinner_qM83' cx='20' cy='12' r='3' style='animation-delay:.2s'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_8HQG{0%25,57.14%25{animation-timing-function:cubic-bezier(.33,.66,.66,1);transform:translate(0)}28.57%25{animation-timing-function:cubic-bezier(.33,0,.66,.33);transform:translateY(-6px)}to{transform:translate(0)}}.spinner_qM83{animation:spinner_8HQG 1.05s infinite}%3C/style%3E%3Ccircle class='spinner_qM83' cx='4' cy='12' r='3'/%3E%3Ccircle class='spinner_qM83' cx='12' cy='12' r='3' style='animation-delay:.1s'/%3E%3Ccircle class='spinner_qM83' cx='20' cy='12' r='3' style='animation-delay:.2s'/%3E%3C/svg%3E")}.loading-sm{width:1.25rem}:where(.menu li:empty){--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));height:1px;margin:.5rem 1rem;opacity:.1}.menu :where(li ul):before{--tw-bg-opacity:1;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));bottom:.75rem;content:"";inset-inline-start:0;opacity:.1;position:absolute;top:.75rem;width:1px}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){text-wrap:balance;border-radius:.5rem;border-radius:var(--rounded-btn,.5rem);padding:.5rem 1rem;text-align:start;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn):focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn):focus{--tw-text-opacity:1;background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1));color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;outline:2px solid #0000;outline-offset:2px}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:oklch(.241559 .049362 89.070594/var(--tw-bg-opacity));background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.menu :where(li>details>summary)::-webkit-details-marker{display:none}.menu :where(li>.menu-dropdown-toggle):after,.menu :where(li>details>summary):after{box-shadow:2px 2px;content:"";display:block;height:.5rem;justify-self:end;margin-top:-.5rem;pointer-events:none;transform:rotate(45deg);transform-origin:75% 75%;transition-duration:.3s;transition-property:transform,margin-top;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.5rem}.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after,.menu :where(li>details[open]>summary):after{margin-top:0;transform:rotate(225deg)}.mockup-browser .mockup-browser-toolbar .input{--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));direction:ltr;display:block;height:1.75rem;margin-left:auto;margin-right:auto;overflow:hidden;padding-left:2rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:24rem}.mockup-browser .mockup-browser-toolbar .input:before{--tw-translate-y:-50%;aspect-ratio:1/1;border-color:currentColor;border-radius:9999px;border-width:2px;height:.75rem;left:.5rem}.mockup-browser .mockup-browser-toolbar .input:after,.mockup-browser .mockup-browser-toolbar .input:before{content:"";opacity:.6;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.mockup-browser .mockup-browser-toolbar .input:after{--tw-translate-y:25%;--tw-rotate:-45deg;border-color:currentColor;border-radius:9999px;border-width:1px;height:.5rem;left:1.25rem}.modal::backdrop,.modal:not(dialog:not(.modal-open)){animation:modal-pop .2s ease-out;background-color:#0006}.modal-backdrop{align-self:stretch;color:#0000;display:grid;grid-column-start:1;grid-row-start:1;justify-self:stretch;z-index:-1}.modal-open .modal-box,.modal-toggle:checked+.modal .modal-box,.modal:target .modal-box,.modal[open] .modal-box{--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-action>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}@keyframes modal-pop{0%{opacity:0}}@keyframes progress-loading{50%{background-position-x:-115%}}.radio:focus{box-shadow:none}.radio:focus-visible{outline-color:oklch(.169617 .001664 17.32068/1);outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.radio:checked,.radio[aria-checked=true]{--tw-bg-opacity:1;animation:radiomark .2s ease-out;animation:radiomark var(--animation-input,.2s) ease-out;background-color:oklch(.169617 .001664 17.32068/var(--tw-bg-opacity));background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));background-image:none;box-shadow:inset 0 0 0 4px oklch(.929519 .002163 17.197414/1),inset 0 0 0 4px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}.radio:disabled{cursor:not-allowed;opacity:.2}@keyframes radiomark{0%{box-shadow:inset 0 0 0 12px oklch(.929519 .002163 17.197414/1),inset 0 0 0 12px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset}50%{box-shadow:inset 0 0 0 3px oklch(.929519 .002163 17.197414/1),inset 0 0 0 3px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset}to{box-shadow:inset 0 0 0 4px oklch(.929519 .002163 17.197414/1),inset 0 0 0 4px oklch(.929519 .002163 17.197414/1);box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}}@keyframes rating-pop{0%{transform:translateY(-.125em)}40%{transform:translateY(-.125em)}to{transform:translateY(0)}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}.swap-rotate .swap-indeterminate,.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-active:where(.swap-rotate) .swap-off,.swap-rotate input:checked~.swap-off,.swap-rotate input:indeterminate~.swap-off{--tw-rotate:-45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-active:where(.swap-rotate) .swap-on,.swap-rotate input:checked~.swap-on,.swap-rotate input:indeterminate~.swap-indeterminate{--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.swap-flip .swap-indeterminate,.swap-flip .swap-on,.swap-flip input:indeterminate~.swap-on{-webkit-backface-visibility:hidden;backface-visibility:hidden;opacity:1;transform:rotateY(180deg)}.swap-active:where(.swap-flip) .swap-off,.swap-flip input:checked~.swap-off,.swap-flip input:indeterminate~.swap-off{-webkit-backface-visibility:hidden;backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.swap-active:where(.swap-flip) .swap-on,.swap-flip input:checked~.swap-on,.swap-flip input:indeterminate~.swap-indeterminate{transform:rotateY(0deg)}@keyframes toast-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}:root .prose{--tw-prose-body:var(--fallback-bc,oklch(var(--bc)/0.8));--tw-prose-headings:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-lead:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-links:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bold:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-counters:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bullets:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-hr:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-quotes:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-quote-borders:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-captions:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-code:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-pre-code:var(--fallback-nc,oklch(var(--nc)/1));--tw-prose-pre-bg:var(--fallback-n,oklch(var(--n)/1));--tw-prose-th-borders:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-td-borders:var(--fallback-bc,oklch(var(--bc)/0.2))}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:oklch(.169617 .001664 17.32068/.1);background-color:var(--fallback-bc,oklch(var(--bc)/.1));border-radius:1.9rem;border-radius:var(--rounded-badge);font-weight:400;padding:1px 8px}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{display:none}.prose pre code{border-radius:0;padding:0}.prose :where(tbody tr,thead):not(:where([class~=not-prose] *)){border-bottom-color:oklch(.169617 .001664 17.32068/.2);border-bottom-color:var(--fallback-bc,oklch(var(--bc)/.2))}.glass,.glass.btn-active{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(var(--glass-blur,40px));backdrop-filter:blur(var(--glass-blur,40px));background-color:initial;background-image:linear-gradient(135deg,#ffffff4d,#0000),linear-gradient(100deg,#ffffff1a 25%,#0000 0);background-image:linear-gradient(135deg,rgb(255 255 255/var(--glass-opacity,30%)) 0,#0000 100%),linear-gradient(var(--glass-reflex-degree,100deg),rgb(255 255 255/var(--glass-reflex-opacity,10%)) 25%,#0000 25%);border:none;box-shadow:inset 0 0 0 1px #ffffff1a,0 0 0 2px #0000000d;box-shadow:0 0 0 1px rgb(255 255 255/var(--glass-border-opacity,10%)) inset,0 0 0 2px #0000000d;text-shadow:0 1px #0000000d;text-shadow:0 1px rgb(0 0 0/var(--glass-text-shadow-opacity,5%))}@media (hover:hover){.glass.btn-active{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(var(--glass-blur,40px));backdrop-filter:blur(var(--glass-blur,40px));background-color:initial;background-image:linear-gradient(135deg,#ffffff4d,#0000),linear-gradient(100deg,#ffffff1a 25%,#0000 0);background-image:linear-gradient(135deg,rgb(255 255 255/var(--glass-opacity,30%)) 0,#0000 100%),linear-gradient(var(--glass-reflex-degree,100deg),rgb(255 255 255/var(--glass-reflex-opacity,10%)) 25%,#0000 25%);border:none;box-shadow:inset 0 0 0 1px #ffffff1a,0 0 0 2px #0000000d;box-shadow:0 0 0 1px rgb(255 255 255/var(--glass-border-opacity,10%)) inset,0 0 0 2px #0000000d;text-shadow:0 1px #0000000d;text-shadow:0 1px rgb(0 0 0/var(--glass-text-shadow-opacity,5%))}}.btn-sm{font-size:.875rem;height:2rem;min-height:2rem;padding-left:.75rem;padding-right:.75rem}.btn-block{width:100%}.btn-square:where(.btn-xs){height:1.5rem;padding:0;width:1.5rem}.btn-square:where(.btn-sm){height:2rem;padding:0;width:2rem}.btn-square:where(.btn-md){height:3rem;padding:0;width:3rem}.btn-square:where(.btn-lg){height:4rem;padding:0;width:4rem}.btn-circle:where(.btn-sm){border-radius:9999px;height:2rem;padding:0;width:2rem}.drawer-open>.drawer-toggle{display:none}.drawer-open>.drawer-toggle~.drawer-side{display:block;overscroll-behavior:auto;pointer-events:auto;position:-webkit-sticky;position:sticky;visibility:visible;width:auto}.drawer-open>.drawer-toggle~.drawer-side>:not(.drawer-overlay),[dir=rtl] .drawer-open>.drawer-toggle~.drawer-side>:not(.drawer-overlay){transform:translateX(0)}.drawer-open>.drawer-toggle:checked~.drawer-side{pointer-events:auto;visibility:visible}.drawer-open>.drawer-side{overflow-y:auto}html:has(.drawer-toggle:checked){overflow-y:hidden;scrollbar-gutter:stable}.indicator :where(.indicator-item){--tw-translate-y:-50%;--tw-translate-x:50%;bottom:auto;inset-inline-end:0;inset-inline-start:auto;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item)){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-start){--tw-translate-x:-50%;inset-inline-end:auto;inset-inline-start:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-start)){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-center){--tw-translate-x:-50%;inset-inline-end:50%;inset-inline-start:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-center)){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-end){--tw-translate-x:50%;inset-inline-end:0;inset-inline-start:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .indicator :where(.indicator-item.indicator-end)){--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-bottom){--tw-translate-y:50%;bottom:0;top:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-middle){--tw-translate-y:-50%;bottom:50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.indicator :where(.indicator-item.indicator-top){--tw-translate-y:-50%;bottom:auto;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-top{place-items:start}.tooltip{--tooltip-offset:calc(100% + 1px + var(--tooltip-tail, 0px))}.tooltip:before{--tw-content:attr(data-tip);content:var(--tw-content);pointer-events:none;position:absolute;z-index:1}.tooltip-top:before,.tooltip:before{bottom:var(--tooltip-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}.drawer-open>.drawer-toggle~.drawer-side>.drawer-overlay{background-color:initial;cursor:default}.modal-top :where(.modal-box){--tw-translate-y:-2.5rem;--tw-scale-x:1;--tw-scale-y:1;border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:0;border-top-right-radius:0;max-width:none;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.modal-middle :where(.modal-box){--tw-translate-y:0px;--tw-scale-x:.9;--tw-scale-y:.9;border-bottom-left-radius:1rem;border-bottom-left-radius:var(--rounded-box,1rem);border-bottom-right-radius:1rem;border-bottom-right-radius:var(--rounded-box,1rem);border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);max-width:32rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:91.666667%}.modal-bottom :where(.modal-box){--tw-translate-y:2.5rem;--tw-scale-x:1;--tw-scale-y:1;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:1rem;border-top-left-radius:var(--rounded-box,1rem);border-top-right-radius:1rem;border-top-right-radius:var(--rounded-box,1rem);max-width:none;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.tooltip{--tooltip-tail:0.1875rem;--tooltip-color:var(--fallback-n,oklch(var(--n)/1));--tooltip-text-color:var(--fallback-nc,oklch(var(--nc)/1));--tooltip-tail-offset:calc(100% + 0.0625rem - var(--tooltip-tail));display:inline-block;position:relative;text-align:center}.tooltip:after,.tooltip:before{opacity:0;transition-delay:.1s;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tooltip:after{border-style:solid;border-width:0;border-width:var(--tooltip-tail,0);content:"";display:block;height:0;position:absolute;width:0}.tooltip:before{background-color:var(--tooltip-color);border-radius:.25rem;color:var(--tooltip-text-color);font-size:.875rem;line-height:1.25rem;max-width:20rem;padding:.25rem .5rem;width:-webkit-max-content;width:max-content}.tooltip.tooltip-open:after,.tooltip.tooltip-open:before,.tooltip:hover:after,.tooltip:hover:before{opacity:1;transition-delay:75ms}.tooltip:has(:focus-visible):after,.tooltip:has(:focus-visible):before{opacity:1;transition-delay:75ms}.tooltip:not([data-tip]):hover:after,.tooltip:not([data-tip]):hover:before{opacity:0;visibility:hidden}.tooltip-top:after,.tooltip:after{border-color:var(--tooltip-color) #0000 #0000 #0000;bottom:var(--tooltip-tail-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}.static{position:static}.absolute{position:absolute}.right-2{right:.5rem}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-\[1\]{z-index:1}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.line-clamp-1{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.flex{display:flex}.inline-table{display:inline-table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-fit{min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content}.min-h-full{min-height:100%}.w-4{width:1rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-80{width:20rem}.w-9\/12{width:75%}.w-\[260px\]{width:260px}.w-fit{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-24{min-width:6rem}.min-w-\[260px\]{min-width:260px}.min-w-full{min-width:100%}.max-w-\[1000px\]{max-width:1000px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1}.flex-none{flex:none}.flex-grow,.grow{flex-grow:1}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.place-self-center{place-self:center}.self-end{align-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-box{border-radius:1rem;border-radius:var(--rounded-box,1rem)}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-base-content\/20{border-color:oklch(.169617 .001664 17.32068/.2);border-color:var(--fallback-bc,oklch(var(--bc)/.2))}.bg-base-200{--tw-bg-opacity:1;background-color:oklch(.864453 .002011 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)))}.bg-base-300{--tw-bg-opacity:1;background-color:oklch(.799386 .00186 17.197414/var(--tw-bg-opacity));background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pr-6{padding-right:1.5rem}.pt-0{padding-top:0}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.text-base-content\/30{color:oklch(.169617 .001664 17.32068/.3);color:var(--fallback-bc,oklch(var(--bc)/.3))}.text-error{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.text-error\/30{color:oklch(.7176 .221 22.18/.3);color:var(--fallback-er,oklch(var(--er)/.3))}.text-neutral-content\/30{color:oklch(.929519 .002163 17.197414/.3);color:var(--fallback-nc,oklch(var(--nc)/.3))}.opacity-0{opacity:0}.opacity-40{opacity:.4}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@media (min-width:1024px){.lg\:dropdown-right .dropdown-content{bottom:auto;inset-inline-start:100%;top:0;transform-origin:left}.lg\:dropdown-right.dropdown-end .dropdown-content{bottom:0;top:auto}}.placeholder\:opacity-30::placeholder{opacity:.3}.hover\:text-base-content:hover{--tw-text-opacity:1;color:oklch(.169617 .001664 17.32068/var(--tw-text-opacity));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.hover\:text-base-content\/40:hover{color:oklch(.169617 .001664 17.32068/.4);color:var(--fallback-bc,oklch(var(--bc)/.4))}.hover\:text-current:hover{color:currentColor}.hover\:text-error:hover{--tw-text-opacity:1;color:oklch(.7176 .221 22.18/var(--tw-text-opacity));color:var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)))}.hover\:text-neutral-content:hover{--tw-text-opacity:1;color:oklch(.929519 .002163 17.197414/var(--tw-text-opacity));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:outline-0:focus{outline-width:0}.group:hover .group-hover\:opacity-90{opacity:.9}@media (min-width:1024px){.lg\:ml-3{margin-left:.75rem}.lg\:block{display:block}.lg\:hidden{display:none}}@media (min-width:1280px){.xl\:max-w-\[700px\]{max-width:700px}}@media (min-width:1536px){.\32xl\:max-w-\[1000px\]{max-width:1000px}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px} /*! Theme: GitHub Description: Light theme as seen on github.com @@ -11,4 +11,4 @@ Outdated base version: https://github.com/primer/github-syntax-light Current colors taken from GitHub's CSS */.hljs{background:#fff;color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{background-color:#f0fff4;color:#22863a}.hljs-deletion{background-color:#ffeef0;color:#b31d28} -/*# sourceMappingURL=main.248a94b4.css.map*/ \ No newline at end of file +/*# sourceMappingURL=main.026bf9f5.css.map*/ \ No newline at end of file diff --git a/static/css/main.248a94b4.css.map b/static/css/main.026bf9f5.css.map similarity index 83% rename from static/css/main.248a94b4.css.map rename to static/css/main.026bf9f5.css.map index e6761d1..cda7cce 100644 --- a/static/css/main.248a94b4.css.map +++ b/static/css/main.026bf9f5.css.map @@ -1 +1 @@ -{"version":3,"file":"static/css/main.248a94b4.css","mappings":"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","sources":["index.css","../node_modules/highlight.js/styles/github.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n * {\n @apply text-base;\n }\n\n pre {\n @apply inline-table my-2 w-full max-w-full;\n }\n\n li {\n @apply my-1;\n }\n\n ol {\n @apply list-decimal list-inside !px-2;\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n .pause-animation {\n transition-delay: 500ms;\n animation-play-state: paused;\n }\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',\n 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n*/\n.hljs {\n color: #24292e;\n background: #ffffff\n}\n.hljs-doctag,\n.hljs-keyword,\n.hljs-meta .hljs-keyword,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #d73a49\n}\n.hljs-title,\n.hljs-title.class_,\n.hljs-title.class_.inherited__,\n.hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #6f42c1\n}\n.hljs-attr,\n.hljs-attribute,\n.hljs-literal,\n.hljs-meta,\n.hljs-number,\n.hljs-operator,\n.hljs-variable,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #005cc5\n}\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #032f62\n}\n.hljs-built_in,\n.hljs-symbol {\n /* prettylights-syntax-variable */\n color: #e36209\n}\n.hljs-comment,\n.hljs-code,\n.hljs-formula {\n /* prettylights-syntax-comment */\n color: #6a737d\n}\n.hljs-name,\n.hljs-quote,\n.hljs-selector-tag,\n.hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #22863a\n}\n.hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #24292e\n}\n.hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #005cc5;\n font-weight: bold\n}\n.hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #735c0f\n}\n.hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #24292e;\n font-style: italic\n}\n.hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #24292e;\n font-weight: bold\n}\n.hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #22863a;\n background-color: #f0fff4\n}\n.hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #b31d28;\n background-color: #ffeef0\n}\n.hljs-char.escape_,\n.hljs-link,\n.hljs-params,\n.hljs-property,\n.hljs-punctuation,\n.hljs-tag {\n /* purposely ignored */\n \n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/css/main.026bf9f5.css","mappings":"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","sources":["index.css","../node_modules/highlight.js/styles/github.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n * {\n @apply text-base;\n }\n\n pre {\n @apply inline-table my-2 w-full max-w-full;\n }\n\n li {\n @apply my-1;\n }\n\n ol {\n @apply list-decimal list-inside !px-2;\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n .pause-animation {\n transition-delay: 500ms;\n animation-play-state: paused;\n }\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',\n 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n*/\n.hljs {\n color: #24292e;\n background: #ffffff\n}\n.hljs-doctag,\n.hljs-keyword,\n.hljs-meta .hljs-keyword,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #d73a49\n}\n.hljs-title,\n.hljs-title.class_,\n.hljs-title.class_.inherited__,\n.hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #6f42c1\n}\n.hljs-attr,\n.hljs-attribute,\n.hljs-literal,\n.hljs-meta,\n.hljs-number,\n.hljs-operator,\n.hljs-variable,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #005cc5\n}\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #032f62\n}\n.hljs-built_in,\n.hljs-symbol {\n /* prettylights-syntax-variable */\n color: #e36209\n}\n.hljs-comment,\n.hljs-code,\n.hljs-formula {\n /* prettylights-syntax-comment */\n color: #6a737d\n}\n.hljs-name,\n.hljs-quote,\n.hljs-selector-tag,\n.hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #22863a\n}\n.hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #24292e\n}\n.hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #005cc5;\n font-weight: bold\n}\n.hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #735c0f\n}\n.hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #24292e;\n font-style: italic\n}\n.hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #24292e;\n font-weight: bold\n}\n.hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #22863a;\n background-color: #f0fff4\n}\n.hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #b31d28;\n background-color: #ffeef0\n}\n.hljs-char.escape_,\n.hljs-link,\n.hljs-params,\n.hljs-property,\n.hljs-punctuation,\n.hljs-tag {\n /* purposely ignored */\n \n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.0e1c4cdc.js.map b/static/js/main.0e1c4cdc.js.map deleted file mode 100644 index 1f9273c..0000000 --- a/static/js/main.0e1c4cdc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.0e1c4cdc.js","mappings":"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AAQ,CACZvS,UAAW,QACX+C,MAAO,OACP71E,IAAK,KACLqmD,SAAU,CAAEirB,EAAKsE,mBAEb0P,EAAW,CACfzP,MAAO,iBACP2C,OAAQ,CAAEnyB,SAAU,CAClBirB,EAAK2F,kBAAkB,CACrBpB,MAAO,QACP71E,IAAK,QACL8yE,UAAW,cAIXyS,EAAe,CACnBzS,UAAW,SACX+C,MAAO,IACP71E,IAAK,IACLqmD,SAAU,CACRirB,EAAKsE,iBACLuP,EACAE,IAGJA,EAAMh/B,SAAS1lD,KAAK4kF,GACpB,MAWMC,EAAa,CACjB3P,MAAO,UACP71E,IAAK,OACLqmD,SAAU,CACR,CACEwvB,MAAO,gBACP/C,UAAW,UAEbxB,EAAKkF,YACL2O,IAcEM,EAAgBnU,EAAKmG,QAAQ,CACjCE,OAAQ,IAAF18C,OAZe,CACrB,OACA,OACA,MACA,KACA,MACA,MACA,OACA,OACA,QAG2BzyB,KAAK,KAAI,KACpCstE,UAAW,KAEP4P,EAAW,CACf5S,UAAW,WACX+C,MAAO,4BACP6E,aAAa,EACbr0B,SAAU,CAAEirB,EAAKwM,QAAQxM,EAAKsF,WAAY,CAAEf,MAAO,gBACnDC,UAAW,GA4Pb,MAAO,CACL34E,KAAM,OACN+gF,QAAS,CAAE,MACXhG,SAAU,CACR0E,SAAU,wBACVxD,QA9Pa,CACf,KACA,OACA,OACA,OACA,KACA,MACA,QACA,QACA,KACA,KACA,OACA,OACA,OACA,WACA,UAgPEuM,QA7Oa,CACf,OACA,SA4OEC,SAAU,CApOZ,QACA,KACA,WACA,OACA,OACA,OACA,SACA,UACA,OACA,MACA,WACA,SACA,QACA,OACA,QACA,OACA,QACA,QAIA,QACA,OACA,UACA,SACA,UACA,UACA,OACA,SACA,OACA,MACA,QACA,SACA,UACA,SACA,OACA,YACA,SACA,OACA,UACA,SACA,UA+LI,MACA,QA5LJ,WACA,KACA,UACA,MACA,MACA,QACA,QACA,gBACA,WACA,UACA,eACA,YACA,aACA,YACA,WACA,UACA,aACA,OACA,UACA,SACA,SACA,SACA,UACA,KACA,KACA,QACA,YACA,SACA,QACA,UACA,UACA,OACA,OACA,QACA,MACA,SACA,OACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,OACA,UACA,SACA,aACA,SACA,UACA,WACA,QACA,OACA,SACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,aACA,QACA,OACA,cACA,UACA,SACA,OAIA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,MACA,YACA,KACA,KACA,QACA,SACA,QACA,SACA,KACA,WACA,KACA,QACA,QACA,OACA,QACA,WACA,OACA,QACA,SACA,SACA,MACA,QACA,OACA,SACA,MACA,SACA,MACA,OACA,OACA,OACA,SACA,KACA,SACA,KACA,QACA,MACA,KACA,UACA,YACA,YACA,YACA,YACA,OACA,OACA,QACA,MACA,MACA,OACA,KACA,QACA,WACA,OACA,KACA,OACA,WACA,SACA,OACA,UACA,KACA,OACA,MACA,OACA,SAEA,SACA,SACA,KACA,OACA,UACA,OACA,QACA,QACA,UACA,QACA,WACA,SACA,MACA,WACA,SACA,MACA,QACA,OACA,SACA,OACA,MACA,OACA,UAEA,MACA,QACA,SACA,SACA,QACA,MACA,SACA,QAoBAv/B,SAAU,CACRo/B,EACAnU,EAAKmG,UACLiO,EACAF,EACAlU,EAAKiF,kBACL+O,EAxPc,CAAE/lF,MAAO,kBA0PvBgmF,EAhUkB,CACpBhmF,MAAO,OAEW,CAClBuzE,UAAW,SACX+C,MAAO,IACP71E,IAAK,KAEc,CACnBT,MAAO,OA2TL4lF,GAGN,YCvEAznF,EAAOC,QAtTP,SAAW2zE,GACT,MAAM8D,EAAQ9D,EAAK8D,MAIbiB,EAAsB/E,EAAK4E,QAAQ,KAAM,IAAK,CAAE7vB,SAAU,CAAE,CAAEwvB,MAAO,WACrEgQ,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,IACrBF,EAAmB,IACnBzQ,EAAMd,SAASwR,GACf,gBAAkB1Q,EAAMd,SAJC,YAK3B,IAGI0R,EAAQ,CACZlT,UAAW,OACXqK,SAAU,CACR,CAAEtH,MAAO,sBACT,CAAEt2E,M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CrBF,EAAmB,IACnBzQ,EAAMd,SAASwR,GACf,gBAAkB1Q,EAAMd,SAJC,YAK3B,IAEIqS,EAAsB,CAC1B7T,UAAW,OACX+C,MAAO,sBAMHoQ,EAAU,CACdnT,UAAW,SACXqK,SAAU,CACR,CACEtH,MAAO,cACP71E,IAAK,IACLg2E,QAAS,MACT3vB,SAAU,CAAEirB,EAAKsE,mBAEnB,CACEC,MAAO,sEACP71E,IAAK,IACLg2E,QAAS,KAEX1E,EAAK2F,kBAAkB,CACrBpB,MAAO,mCACP71E,IAAK,0BAKLkmF,EAAU,CACdpT,UAAW,SACXqK,SAAU,CACR,CAAEtH,MAAO,iBACT,CAAEA,MAAO,yFACT,CAAEA,MAAO,wFAEXC,UAAW,GAGPqQ,EAAe,CACnBrT,UAAW,OACX+C,MAAO,eACP71E,IAAK,IACLk4E,SAAU,CAAEkB,QACR,0FAEJ/yB,SAAU,CACR,CACEwvB,MAAO,OACPC,UAAW,GAEbxE,EAAKwM,QAAQmI,EAAS,CAAEnT,UAAW,WACnC,CACEA,UAAW,SACX+C,MAAO,SAETQ,EACA/E,EAAKgF,uBAIHM,EAAa,CACjB9D,UAAW,QACX+C,MAAOT,EAAMd,SAASwR,GAAgBxU,EAAKiE,SAC3CO,UAAW,GAGPsQ,EAAiBhR,EAAMd,SAASwR,GAAgBxU,EAAKiE,SAAW,UA6RhEqR,EAAe,CACnBtlF,KAhMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAiLA83E,QA5RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAsMAuM,QAde,CACf,OACA,QACA,UACA,UACA,QAUAC,SANe,CAAE,WAOjBiB,YAjLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxBhU,UAAW,oBACXgD,UAAW,EACXoC,SAAU,CAER6O,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAlR,MAAOT,EAAMn6C,OACX,KACA,eACA,SACA,UACA,aACA,YACAq2C,EAAKiE,SACLH,EAAMhB,UAAU,sBAGdkS,EAAsB,CAC1BQ,EACAX,EACAQ,EACAtQ,EACA/E,EAAKgF,qBACL4P,EACAD,GAGIM,EAAqB,CAIzBpJ,SAAU,CACR,CACEtH,MAAO,IACP71E,IAAK,KAEP,CACE61E,MAAO,KACP71E,IAAK,MAEP,CACEg4E,cAAe,wBACfh4E,IAAK,MAGTk4E,SAAU0O,EACVvgC,SAAUigC,EAAoBrrD,OAAO,CACnC,CACE46C,MAAO,KACP71E,IAAK,KACLk4E,SAAU0O,EACVvgC,SAAUigC,EAAoBrrD,OAAO,CAAE,SACvC66C,UAAW,KAGfA,UAAW,GAGP0Q,EAAuB,CAC3B1T,UAAW,WACX+C,MAAO,IAAMkQ,EAAmB,eAAiBK,EACjD1L,aAAa,EACb16E,IAAK,QACL46E,YAAY,EACZ1C,SAAU0O,EACV5Q,QAAS,iBACT3vB,SAAU,CACR,CACEwvB,MAAOgQ,EACP3N,SAAU0O,EACV9Q,UAAW,GAEb,CACED,MAAOuQ,EACP1L,aAAa,EACbr0B,SAAU,CAAEuwB,GACZd,UAAW,GAIb,CACED,MAAO,KACPC,UAAW,GAGb,CACED,MAAO,IACPkH,gBAAgB,EAChB12B,SAAU,CACR4/B,EACAC,IAKJ,CACEpQ,UAAW,EACXv2E,MAAO,KAET,CACEuzE,UAAW,SACX+C,MAAO,KACP71E,IAAK,KACLk4E,SAAU0O,EACV9Q,UAAW,EACXzvB,SAAU,CACRgwB,EACA/E,EAAKgF,qBACL2P,EACAC,EACAS,EAEA,CACE9Q,MAAO,KACP71E,IAAK,KACLk4E,SAAU0O,EACV9Q,UAAW,EACXzvB,SAAU,CACR,OACAgwB,EACA/E,EAAKgF,qBACL2P,EACAC,EACAS,MAKRA,EACAtQ,EACA/E,EAAKgF,qBACL6P,IAIJ,MAAO,CACLhpF,KAAM,MACN+gF,QAAS,CACP,KACA,MACA,MACA,MACA,KACA,MACA,OAEFhG,SAAU0O,EACV5Q,QAAS,KACTsG,iBAAkB,CAAE,oBAAqB,YACzCj2B,SAAU,GAAGprB,OACXsrD,EACAC,EACAM,EACAR,EACA,CACEH,EACA,CACEtQ,MAAO,4MACP71E,IAAK,IACLk4E,SAAU0O,EACVvgC,SAAU,CACR,OACAsgC,IAGJ,CACE9Q,MAAOvE,EAAKiE,SAAW,KACvB2C,SAAU0O,GAEZ,CACErnF,MAAO,CAEL,wDACA,MACA,OAEFuzE,UAAW,CACT,EAAG,UACH,EAAG,kBAKf,YCtKAp1E,EAAOC,QAtYP,SAAgB2zE,GACd,MA6IM+U,EAAW,CACfjN,QAjGsB,CACtB,WACA,KACA,OACA,QACA,OACA,QACA,QACA,QACA,WACA,KACA,OACA,QACA,WACA,SACA,UACA,QACA,MACA,UACA,OACA,KACA,WACA,KACA,YACA,WACA,KACA,OACA,YACA,MACA,WACA,MACA,WACA,SACA,UACA,YACA,SACA,WACA,SACA,MACA,SACA,SACA,SACA,SACA,aACA,SACA,SACA,SACA,OACA,QACA,MACA,SACA,YACA,SACA,QACA,UACA,OACA,WACA,SAwCyBn+C,OAtCC,CAC1B,MACA,QACA,MACA,YACA,QACA,QACA,KACA,aACA,SACA,OACA,MACA,SACA,QACA,OACA,OACA,OACA,MACA,SACA,MACA,UACA,KACA,KACA,UACA,UACA,SACA,SACA,MACA,YACA,UACA,MACA,OACA,QACA,OACA,UAKA2qD,SA/IwB,CACxB,OACA,OACA,OACA,UACA,WACA,SACA,UACA,OACA,QACA,MACA,OACA,OACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,UA4HAD,QAzGuB,CACvB,UACA,QACA,OACA,SAuGI/O,EAAatF,EAAKwM,QAAQxM,EAAKsF,WAAY,CAAEf,MAAO,uBACpDqQ,EAAU,CACdpT,UAAW,SACXqK,SAAU,CACR,CAAEtH,MAAO,iBACT,CAAEA,MAAO,mEACT,CAAEA,MAAO,wFAEXC,UAAW,GAEPkR,EAAkB,CACtBlU,UAAW,SACX+C,MAAO,KACP71E,IAAK,IACLqmD,SAAU,CAAE,CAAEwvB,MAAO,QAEjBoR,EAAwB3V,EAAKwM,QAAQkJ,EAAiB,CAAEhR,QAAS,OACjEqP,EAAQ,CACZvS,UAAW,QACX+C,MAAO,KACP71E,IAAK,KACLk4E,SAAUmO,GAENa,EAAc5V,EAAKwM,QAAQuH,EAAO,CAAErP,QAAS,OAC7CmR,EAAsB,CAC1BrU,UAAW,SACX+C,MAAO,MACP71E,IAAK,IACLg2E,QAAS,KACT3vB,SAAU,CACR,CAAEwvB,MAAO,QACT,CAAEA,MAAO,QACTvE,EAAKsE,iBACLsR,IAGEE,EAA+B,CACnCtU,UAAW,SACX+C,MAAO,OACP71E,IAAK,IACLqmD,SAAU,CACR,CAAEwvB,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACTwP,IAGEgC,EAAqC/V,EAAKwM,QAAQsJ,EAA8B,CACpFpR,QAAS,KACT3vB,SAAU,CACR,CAAEwvB,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACTqR,KAGJ7B,EAAMh/B,SAAW,CACf+gC,EACAD,EACAH,EACA1V,EAAKyE,iBACLzE,EAAK2E,kBACLiQ,EACA5U,EAAKgF,sBAEP4Q,EAAY7gC,SAAW,CACrBghC,EACAF,EACAF,EACA3V,EAAKyE,iBACLzE,EAAK2E,kBACLiQ,EACA5U,EAAKwM,QAAQxM,EAAKgF,qBAAsB,CAAEN,QAAS,QAErD,MAAMsR,EAAS,CAAEnK,SAAU,CACzBiK,EACAD,EACAH,EACA1V,EAAKyE,iBACLzE,EAAK2E,oBAGDsR,EAAmB,CACvB1R,MAAO,IACP71E,IAAK,IACLqmD,SAAU,CACR,CAAE2xB,cAAe,UACjBpB,IAGE4Q,EAAgBlW,EAAKiE,SAAW,KAAOjE,EAAKiE,SAAW,aAAejE,EAAKiE,SAAW,iBACtFkS,EAAgB,CAGpB5R,MAAO,IAAMvE,EAAKiE,SAClBO,UAAW,GAGb,MAAO,CACL34E,KAAM,KACN+gF,QAAS,CACP,KACA,MAEFhG,SAAUmO,EACVrQ,QAAS,KACT3vB,SAAU,CACRirB,EAAK4E,QACH,MACA,IACA,CACEwE,aAAa,EACbr0B,SAAU,CACR,CACEysB,UAAW,SACXqK,SAAU,CACR,CACEtH,MAAO,MACPC,UAAW,GAEb,CAAED,MAAO,kBACT,CACEA,MAAO,MACP71E,IAAK,UAOjBsxE,EAAK+E,oBACL/E,EAAKgF,qBACL,CACExD,UAAW,OACX+C,MAAO,IACP71E,IAAK,IACLk4E,SAAU,CAAEkB,QAAS,wFAEvBkO,EACApB,EACA,CACElO,cAAe,kBACflC,UAAW,EACX91E,IAAK,QACLg2E,QAAS,UACT3vB,SAAU,CACR,CAAE2xB,cAAe,eACjBpB,EACA2Q,EACAjW,EAAK+E,oBACL/E,EAAKgF,uBAGT,CACE0B,cAAe,YACflC,UAAW,EACX91E,IAAK,QACLg2E,QAAS,SACT3vB,SAAU,CACRuwB,EACAtF,EAAK+E,oBACL/E,EAAKgF,uBAGT,CACE0B,cAAe,SACflC,UAAW,EACX91E,IAAK,QACLg2E,QAAS,SACT3vB,SAAU,CACRuwB,EACA2Q,EACAjW,EAAK+E,oBACL/E,EAAKgF,uBAGT,CAEExD,UAAW,OACX+C,MAAO,oBACPM,cAAc,EACdn2E,IAAK,MACL46E,YAAY,EACZv0B,SAAU,CACR,CACEysB,UAAW,SACX+C,MAAO,IACP71E,IAAK,OAIX,CAGEg4E,cAAe,8BACflC,UAAW,GAEb,CACEhD,UAAW,WACX+C,MAAO,IAAM2R,EAAgB,SAAWlW,EAAKiE,SAAW,wBACxDmF,aAAa,EACb16E,IAAK,WACL46E,YAAY,EACZ1C,SAAUmO,EACVhgC,SAAU,CAER,CACE2xB,cA3UiB,CACzB,SACA,UACA,YACA,SACA,WACA,YACA,WACA,QACA,SACA,WACA,SACA,UACA,MACA,SACA,WA4T0CxvE,KAAK,KACvCstE,UAAW,GAEb,CACED,MAAOvE,EAAKiE,SAAW,wBACvBmF,aAAa,EACbr0B,SAAU,CACRirB,EAAKsF,WACL2Q,GAEFzR,UAAW,GAEb,CAAEv2E,MAAO,QACT,CACEuzE,UAAW,SACX+C,MAAO,KACP71E,IAAK,KACLm2E,cAAc,EACdyE,YAAY,EACZ1C,SAAUmO,EACVvQ,UAAW,EACXzvB,SAAU,CACRihC,EACApB,EACA5U,EAAKgF,uBAGThF,EAAK+E,oBACL/E,EAAKgF,uBAGTmR,GAGN,YC7YA,MA6CMC,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,MACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,UACA,qBACA,oBACA,gBACA,MACA,YACA,aACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,iBACA,eACA,oBACA,0BACA,yBACA,uBACA,wBACA,0BACA,cACA,MACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,cACA,YACA,kBACA,OACA,iBACA,aACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,QACA,cACA,eACA,cACA,qBACA,iBACA,WACA,SACA,SACA,OACA,aACA,cACA,QACA,UACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,QACA,WACA,MACA,WACA,eACA,aACA,iBACA,kBACA,uBACA,kBACA,wBACA,uBACA,wBACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,gBACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,WAGA9yE,UA0IFtX,EAAOC,QAhIP,SAAa2zE,GACX,MAAM8D,EAAQ9D,EAAK8D,MACb2S,EAnmBOzW,KACN,CACL0W,UAAW,CACTzV,MAAO,OACPsD,MAAO,cAEToS,cAAe3W,EAAKgF,qBACpB4R,SAAU,CACR3V,MAAO,SACPsD,MAAO,mDAETiR,kBAAmB,CACjBhU,UAAW,WACX+C,MAAO,gBAETsS,wBAAyB,CACvB5V,MAAO,gBACPsD,MAAO,KACP71E,IAAK,KACLg2E,QAAS,IACT3vB,SAAU,CACRirB,EAAKyE,iBACLzE,EAAK2E,oBAGTmS,gBAAiB,CACf7V,MAAO,SACPsD,MAAOvE,EAAKmE,UAALnE,kGASPwE,UAAW,GAEbuS,aAAc,CACZvV,UAAW,OACX+C,MAAO,+BA2jBGkB,CAAMzF,GAKd2U,EAAU,CACd3U,EAAKyE,iBACLzE,EAAK2E,mBAGP,MAAO,CACL94E,KAAM,MACN+9E,kBAAkB,EAClBlF,QAAS,UACTkC,SAAU,CAAEoQ,iBAAkB,WAC9BhM,iBAAkB,CAGhBgM,iBAAkB,gBACpBjiC,SAAU,CACR0hC,EAAME,cAnBY,CAAEpS,MAAO,gCAuB3BkS,EAAMK,gBACN,CACEtV,UAAW,cACX+C,MAAO,kBACPC,UAAW,GAEb,CACEhD,UAAW,iBACX+C,MAAO,6BACPC,UAAW,GAEbiS,EAAMI,wBACN,CACErV,UAAW,kBACXqK,SAAU,CACR,CAAEtH,MAAO,KAAO+R,EAAep/E,KAAK,KAAO,KAC3C,CAAEqtE,MAAO,SAAWgS,EAAgBr/E,KAAK,KAAO,OASpDu/E,EAAMM,aACN,CACEvV,UAAW,YACX+C,MAAO,OAASiS,EAAWt/E,KAAK,KAAO,QAGzC,CACEqtE,MAAO,IACP71E,IAAK,QACLqmD,SAAU,CACR0hC,EAAME,cACNF,EAAMG,SACNH,EAAMC,UACND,EAAMK,mBACHnC,EAIH,CACEpQ,MAAO,mBACP71E,IAAK,KACL81E,UAAW,EACXoC,SAAU,CAAE0N,SAAU,gBACtBv/B,SAAU,IACL4/B,EACH,CACEnT,UAAW,SAGX+C,MAAO,OACPkH,gBAAgB,EAChBnC,YAAY,KAIlBmN,EAAMjB,oBAGV,CACEjR,MAAOT,EAAMhB,UAAU,KACvBp0E,IAAK,OACL81E,UAAW,EACXE,QAAS,IACT3vB,SAAU,CACR,CACEysB,UAAW,UACX+C,MA5Fa,qBA8Ff,CACEA,MAAO,KACPkH,gBAAgB,EAChBnC,YAAY,EACZ9E,UAAW,EACXoC,SAAU,CACR0E,SAAU,UACVxD,QAtGS,kBAuGTmP,UAAWZ,EAAen/E,KAAK,MAEjC69C,SAAU,CACR,CACEwvB,MAAO,eACP/C,UAAW,gBAEVmT,EACH8B,EAAMK,oBAKd,CACEtV,UAAW,eACX+C,MAAO,OAAS6R,EAAKl/E,KAAK,KAAO,SAIzC,YClqBA9K,EAAOC,QApDP,SAAc2zE,GACZ,MAAM8D,EAAQ9D,EAAK8D,MACnB,MAAO,CACLj4E,KAAM,OACN+gF,QAAS,CAAE,SACX73B,SAAU,CACR,CACEysB,UAAW,OACXgD,UAAW,GACXv2E,MAAO61E,EAAMX,OACX,+BACA,8BACA,yBAGJ,CACE3B,UAAW,UACXqK,SAAU,CACR,CACEtH,MAAOT,EAAMX,OACX,UACA,SACA,QACA,QACA,UACA,SACA,eAEFz0E,IAAK,KAEP,CAAET,MAAO,cAGb,CACEuzE,UAAW,WACX+C,MAAO,MACP71E,IAAK,KAEP,CACE8yE,UAAW,WACX+C,MAAO,KACP71E,IAAK,KAEP,CACE8yE,UAAW,WACX+C,MAAO,KACP71E,IAAK,MAIb,YCiFAtC,EAAOC,QAnIP,SAAY2zE,GACV,MAwEM+U,EAAW,CACfjN,QA5BU,CACV,QACA,OACA,OACA,QACA,WACA,UACA,QACA,OACA,cACA,MACA,OACA,KACA,OACA,KACA,SACA,YACA,MACA,UACA,QACA,SACA,SACA,SACA,SACA,OACA,OAIA93E,KAnDY,CACZ,OACA,OACA,YACA,aACA,QACA,UACA,UACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,MACA,OACA,UACA,QAgCAqkF,QA3Ee,CACf,OACA,QACA,OACA,OAwEAC,SAtEgB,CAChB,SACA,MACA,QACA,UACA,OACA,OACA,MACA,OACA,MACA,QACA,QACA,UACA,OACA,UACA,WAyDF,MAAO,CACLzoF,KAAM,KACN+gF,QAAS,CAAE,UACXhG,SAAUmO,EACVrQ,QAAS,KACT3vB,SAAU,CACRirB,EAAK+E,oBACL/E,EAAKgF,qBACL,CACExD,UAAW,SACXqK,SAAU,CACR7L,EAAK2E,kBACL3E,EAAKyE,iBACL,CACEF,MAAO,IACP71E,IAAK,OAIX,CACE8yE,UAAW,SACXqK,SAAU,CACR,CACEtH,MAAOvE,EAAKoE,YAAc,MAC1BI,UAAW,GAEbxE,EAAKmF,gBAGT,CAAEZ,MAAO,MAET,CACE/C,UAAW,WACXkF,cAAe,OACfh4E,IAAK,cACL46E,YAAY,EACZv0B,SAAU,CACRirB,EAAKsF,WACL,CACE9D,UAAW,SACX+C,MAAO,KACP71E,IAAK,KACL04E,YAAY,EACZR,SAAUmO,EACVrQ,QAAS,WAMrB,YC7DAt4E,EAAOC,QArEP,SAAiB2zE,GACf,MAAM8D,EAAQ9D,EAAK8D,MAEnB,MAAO,CACLj4E,KAAM,UACN+gF,QAAS,CAAE,OACXhD,kBAAkB,EAClBqD,mBAAmB,EACnBrG,SAAU,CACRkB,QAAS,CACP,QACA,WACA,eACA,OACA,QACA,SACA,YACA,YACA,QACA,SACA,WACA,OACA,MAEFuM,QAAS,CACP,OACA,QACA,SAGJt/B,SAAU,CACRirB,EAAKiF,kBACLjF,EAAK2E,kBACL3E,EAAKkF,YACL,CACEjE,M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B,SAAU,CACRgjC,EACA/X,EAAKyE,iBACLzE,EAAK2E,kBACL+S,EACA1X,EAAKgF,uBAGThF,EAAK+E,oBACL/E,EAAKgF,uBAGT0S,EACAK,GAGN,YC9RA,MAAM9T,EAAW,2BACX8Q,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqC,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAII1C,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIuD,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGIC,EAAY,GAAGzuD,OACnBuuD,EACAxD,EACAuD,GAkmBF7rF,EAAOC,QAtlBP,SAAoB2zE,GAClB,MAAM8D,EAAQ9D,EAAK8D,MAcbuU,EAAapU,EACbqU,EACG,KADHA,EAEC,MAIDC,EAAU,CACdhU,MAAO,sBACP71E,IAAK,4BAKL8pF,kBAAmBA,CAACvqF,EAAOs4E,KACzB,MAAMkS,EAAkBxqF,EAAM,GAAGpB,OAASoB,EAAMyM,MAC1Cg+E,EAAWzqF,EAAMmb,MAAMqvE,GAC7B,GAIe,MAAbC,GAGa,MAAbA,EAGA,YADAnS,EAAS9F,cAiBX,IAAIlxE,EAXa,MAAbmpF,IAtCcC,EAAC1qF,EAAKyzE,KAAg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zvB,SAAU,CACR,CACEwvB,MAAOvE,EAAKkE,oBAAsB,UAClCkF,aAAa,EACb5E,UAAW,EACXzvB,SAAU,CAAEirB,EAAKuF,wBAEnB,CACE/D,UAAW,OACX+C,MAAO,IACP71E,IAAK,IACLk4E,SAAU,UACVpC,UAAW,GAEb,CACEhD,UAAW,SACX+C,MAAO,KACP71E,IAAK,KACL04E,YAAY,EACZR,SAAUmO,EACVvQ,UAAW,EACXzvB,SAAU,CACR,CACEwvB,MAAO,IACP71E,IAAK,SACL+8E,gBAAgB,EAChB12B,SAAU,CACRulC,EACAta,EAAK+E,oBACLsV,GAEF7V,UAAW,GAEbxE,EAAK+E,oBACLsV,EACAF,EACApC,EACA/B,EACAhW,EAAKmF,gBAGTkV,IAGJ,CACE9V,MAAO,CACL,wBACA,MACAvE,EAAKkE,qBAEP+E,WAAY,CACV,EAAG,eAELrC,SAAU,wBACVl4E,IAAK,WACL46E,YAAY,EACZ5E,QAAS,qBACT3vB,SAAU,CACR,CAAE2xB,cAAe,iDACjB1G,EAAKuF,sBACL,CACE/D,UAAW,OACX+C,MAAO,IACP71E,IAAK,IACLm2E,cAAc,EACdyE,YAAY,EACZ9E,UAAW,GAEb,CACEhD,UAAW,OACX+C,MAAO,UACP71E,IAAK,eACLm2E,cAAc,EACd0E,WAAW,GAEb4Q,EACApC,IAGJ/B,EACA,CACExU,UAAW,OACX+C,MAAO,kBACP71E,IAAK,IACLg2E,QAAS,MAEX0V,GAGN,YC3RA,MA6CMhE,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,MACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,UACA,qBACA,oBACA,gBACA,MACA,YACA,aACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,iBACA,eACA,oBACA,0BACA,yBACA,uBACA,wBACA,0BACA,cACA,MACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,cACA,YACA,kBACA,OACA,iBACA,aACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,QACA,cACA,eACA,cACA,qBACA,iBACA,WACA,SACA,SACA,OACA,aACA,cACA,QACA,UACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,QACA,WACA,MACA,WACA,eACA,aACA,iBACA,kBACA,uBACA,kBACA,wBACA,uBACA,wBACA,gBACA,sBACA,yBACA,sBACA,cACA,eA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IAAK,aAEP,CACE61E,MAAO,MACP71E,IAAK,aAEP,CAAE61E,MAAO,SACT,CACEA,MAAO,kBAGPxvB,SAAU,CACR,CACEwvB,MAAO,cACP71E,IAAK,WAGT81E,UAAW,KA9BO,CACtBD,MAAO,cACP71E,IAAK,KAwNHqtF,EAlLmB,CACrBxX,MAAO,eACP6E,aAAa,EACbr0B,SAAU,CACR,CACEysB,UAAW,SACX+C,MAAO,KACP71E,IAAK,KACLm2E,cAAc,EACdyE,YAAY,GAEd,CACE9H,UAAW,OACX+C,MAAO,OACP71E,IAAK,IACLm2E,cAAc,MAuKtB,YCcAz4E,EAAOC,QApPP,SAAoB2zE,GAClB,MAIMqc,EAAgB,yBAkKhBC,EAAiB,CACrBhR,SAAU+Q,EACVvU,QAAS,CACP,aACA,SACA,YACA,oBAGJ,MAAO,CACLj8E,KAAM,cACN+gF,QAAS,CACP,KACA,OACA,QACA,UACA,iBAEFhG,SA7Be,CACf,oBAAqB,CACnB,OACA,SAEF0E,SAAU+Q,EACVvU,QA3IU,CACV,QACA,SACA,SACA,UACA,QACA,SACA,MACA,QACA,WACA,SACA,UACA,KACA,KACA,SACA,OACA,OACA,OACA,QACA,SACA,MACA,OACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,WACA,SACA,YACA,OACA,gBACA,KACA,SACA,YACA,WACA,WACA,SACA,OACA,OACA,KACA,MACA,QACA,SACA,QACA,SACA,WACA,SACA,UACA,kBACA,WACA,aACA,UACA,OACA,YACA,OACA,SACA,SACA,WACA,mBACA,cACA,WACA,YACA,YACA,YACA,UACA,WACA,UACA,QACA,uBACA,WACA,oBACA,oBACA,kBACA,cACA,kBACA,WACA,WACA,YACA,oBACA,eACA,sBACA,gBACA,SACA,SACA,SACA,oBACA,UACA,WACA,mBACA,kBACA,QACA,eACA,4BACA,iBACA,oBACA,2BACA,YACA,eACA,gBACA,UACA,aACA,uBACA,0BACA,wBACA,uBACA,gBACA,mBACA,YACA,aACA,gBACA,iBACA,iBA0BAuM,QAxBe,CACf,QACA,OACA,QACA,OACA,MACA,MACA,KACA,QAiBAC,SAfgB,CAChB,kBACA,mBACA,gBACA,iBACA,iBAWAtkF,KA/JY,CACZ,MACA,QACA,OACA,WACA,SACA,QACA,OACA,SACA,UACA,UACA,OACA,OACA,OACA,OACA,UAqKA00E,QAAS,KACT3vB,SAAU,CA1LM,CAChBysB,UAAW,WACX+C,MAAO,wEA0LLvE,EAAK+E,oBACL/E,EAAKgF,qBACLhF,EAAKmF,cACLnF,EAAK2E,kBACL3E,EAAKyE,iBACL,CACEjD,UAAW,SACXqK,SAAU,CACR,CACEtH,MAAO,KACP71E,IAAK,IACLg2E,QAAS,MACT3vB,SAAU,CAAEirB,EAAKsE,qBAIvB,CACE9C,UAAW,OACX+C,MAAO,eACP71E,IAAK,IACLk4E,SAAU,CAAEkB,QACR,kFAEJ/yB,SAAU,CACR,CACEwvB,MAAO,OACPC,UAAW,GAEbxE,EAAKwM,QAAQxM,EAAK2E,kBAAmB,CAAEnD,UAAW,WAClD,CACEA,UAAW,SACX+C,MAAO,QACP71E,IAAK,IACLg2E,QAAS,OAEX1E,EAAK+E,oBACL/E,EAAKgF,uBAGT,CACExD,UAAW,QACX+C,MAAO,IAAM+X,EAAexU,QAAQ5wE,KAAK,KAAO,OAChDxI,IAAK,SACL46E,YAAY,EACZ1C,SAAU0V,EACVvnC,SAAU,CAAEirB,EAAKuF,wBAEnB,CACEhB,MAAO,MAAQvE,EAAKkE,oBACpBM,UAAW,IAInB,YC4NAp4E,EAAOC,QA9cP,SAAc2zE,GACZ,MAAM8D,EAAQ9D,EAAK8D,MA2ObyY,EAAkB,uBAClBC,EAAgB,CACpBlR,SAAU,SACVxD,QA7Oe,CACf,MACA,SACA,QACA,MACA,QACA,OACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,MACA,SACA,QACA,WACA,UACA,WACA,MACA,QACA,WACA,UACA,UACA,SACA,MACA,KACA,OACA,OACA,OACA,QACA,WACA,aACA,YACA,cACA,WACA,aACA,MACA,OACA,OACA,SACA,OACA,MACA,QACA,SACA,QACA,MACA,UACA,OACA,SACA,WACA,OACA,WACA,WACA,WACA,gBACA,gBACA,aACA,WACA,eACA,eACA,YACA,cACA,UACA,cACA,iBACA,mBACA,cACA,WACA,WACA,WACA,gBACA,gBACA,aACA,cACA,aACA,QACA,OACA,SACA,OACA,OACA,KACA,MACA,KACA,QACA,MACA,QACA,OACA,OACA,OACA,OACA,KACA,UACA,SACA,OACA,SACA,QACA,YACA,MACA,QACA,KACA,KACA,MACA,QACA,SACA,SACA,SACA,SACA,KACA,KACA,OACA,KACA,MACA,MACA,OACA,UACA,KACA,MACA,MACA,OACA,UACA,OACA,MACA,MACA,QACA,SACA,YACA,OACA,MACA,KACA,YACA,KACA,KACA,OACA,OACA,UACA,WACA,WACA,WACA,OACA,OACA,MACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,MACA,SACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,WACA,aACA,YACA,UACA,cACA,cACA,WACA,aACA,aACA,QACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,SACA,aACA,OACA,SACA,QACA,UACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,MACA,OACA,OACA,QACA,KACA,WACA,KACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,QACA,MACA,QACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,QACA,QACA,MACA,MACA,OAOkB5wE,KAAK,MAEnB68E,EAAQ,CACZvS,UAAW,QACX+C,MAAO,UACP71E,IAAK,MACLk4E,SAAU4V,GAENC,EAAS,CACblY,MAAO,OACP71E,IAAK,MAGDmlF,EAAM,CAAEhI,SAAU,CACtB,CAAEtH,MAAO,QACT,CAAEA,MAAOT,EAAMn6C,OACb,iDAEA,0BAGF,CACE46C,MAAO,gBACPC,UAAW,KAGTkY,EAAkB,CACtB1c,EAAKsE,iBACLyP,EACAF,GAEI8I,EAAe,CACnB,IACA,KACA,KACA,KACA,IACA,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CA,YACA,MACA,UACA,YACA,QACA,WACA,OACA,UACA,QACA,MACA,QACA,SACA,KACA,UACA,YACA,SACA,WACA,OACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,SAGIlF,EAAY,CAGhB,UACA,iBACA,qBACA,kBACA,gBACA,cACA,iBACA,2BACA,yBACA,kBACA,yBACA,eACA,YACA,oBACA,sBACA,kBACA,gBACA,iBACA,YACA,qBACA,iBACA,eACA,mBACA,2BACA,mBACA,kBACA,gBACA,iBACA,mBACA,mBACA,uBACA,sBACA,gBACA,oBACA,iBACA,aACA,iBACA,yBACA,2BACA,kCACA,6BACA,0BACA,oBACA,4BACA,yBACA,wBACA,gBACA,mBACA,mBACA,sBACA,cACA,gBACA,gBACA,UACA,aACA,aACA,mBACA,cACA,mBACA,WACA,WACA,aACA,oBACA,YACA,qBACA,2BACA,sBAGA,cACA,aACA,UACA,QACA,YACA,WACA,oBACA,eACA,aACA,YACA,cACA,WACA,gBACA,UAGA,YACA,yBACA,SACA,kBACA,OACA,SACA,YAuBIrD,EAAW,CACfjN,QAASwV,EACTjJ,QAhBgBkJ,KAEhB,MAAMtiF,EAAS,GASf,OARAsiF,EAAMh/E,SAAQkyE,IACZx1E,EAAO5L,KAAKohF,GACRA,EAAK1pD,gBAAkB0pD,EACzBx1E,EAAO5L,KAAKohF,EAAKjpD,eAEjBvsB,EAAO5L,KAAKohF,EAAK1pD,cACnB,IAEK9rB,CAAM,EAKJuiF,CAASpG,GAClB9C,SAAU8D,GAKNqF,EAAqBF,GAClBA,EAAMl/E,KAAIoyE,GACRA,EAAK/iF,QAAQ,SAAU,MAI5BgwF,EAAmB,CAAE7R,SAAU,CACnC,CACE59E,MAAO,CACL,MACA61E,EAAMn6C,OAAO0zD,EAAY,KAEzBvZ,EAAMn6C,OAAO,MAAO8zD,EAAkBrF,GAAWlhF,KAAK,QAAS,QAC/DimF,GAEFlc,MAAO,CACL,EAAG,UACH,EAAG,kBAKH0c,EAAqB7Z,EAAMn6C,OAAOs6C,EAAU,cAE5C2Z,EAAsC,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AEtE,MAAO,kBAEhE,CACEyF,cAAe,MACflC,UAAW,EACX91E,IAAK,IACLqmD,SAAU,CAER,CACE9mD,MAAO,0BACPgzE,MAAO,WAGTjB,EAAKuF,wBAGTyQ,EACA+C,GAGN,YChlBA3sF,EAAOC,QAXP,SAAmB2zE,GACjB,MAAO,CACLn0E,KAAM,aACN+gF,QAAS,CACP,OACA,OAEFK,mBAAmB,EAEvB,YCeA7gF,EAAOC,QAxBP,SAAoB2zE,GAClB,MAAO,CACL4M,QAAS,CAAE,SACX73B,SAAU,CACR,CACEysB,UAAW,cACX0F,OAAQ,CAGNx4E,IAAK,MACLw4E,OAAQ,CACNx4E,IAAK,IACLkgF,YAAa,WAGjB/C,SAAU,CACR,CAAEtH,MAAO,iBACT,CAAEA,MAAO,uBAKnB,YCoZAn4E,EAAOC,QA1aP,SAAgB2zE,GACd,MAAM8D,EAAQ9D,EAAK8D,MACbG,EAAW,qCACXga,EAAiB,CACrB,MACA,KACA,SACA,QACA,QACA,QACA,OACA,QACA,WACA,MACA,MACA,OACA,OACA,SACA,UACA,MACA,OACA,SACA,KACA,SACA,KACA,KACA,SACA,QACA,cACA,MACA,KACA,OACA,QACA,SACA,MACA,QACA,OACA,SAuGIlJ,EAAW,CACfzJ,SAAU,sBACVxD,QAASmW,EACT3J,SAvGgB,CAChB,aACA,MACA,MACA,MACA,QACA,MACA,OACA,aACA,YACA,QACA,WACA,MACA,cACA,UACA,UACA,UACA,OACA,MACA,SACA,YACA,OACA,OACA,SACA,QACA,SACA,YACA,UACA,UACA,UACA,OACA,OACA,MACA,KACA,QACA,MACA,aACA,aACA,OACA,MACA,OACA,SACA,MACA,MACA,aACA,MACA,OACA,SACA,MACA,OACA,MACA,MACA,QACA,WACA,QACA,OACA,WACA,QACA,MACA,UACA,QACA,SACA,eACA,MACA,MACA,QACA,QACA,OACA,OACA,OAmCAD,QAhCe,CACf,YACA,WACA,QACA,OACA,iBACA,QA2BArkF,KArBY,CACZ,MACA,WACA,YACA,OACA,OACA,UACA,UACA,WACA,WACA,MACA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Y,EACVna,QAAS,OACT3vB,SAAU,CAAEirB,EAAKmG,QAAQ,CAAEE,OAAQ,UAChC18C,OAAOw1D,GACPx1D,OAAOq1D,GACPr1D,OAAOu1D,GAEd,YC7IA9yF,EAAOC,QAvSP,SAAc2zE,GACZ,MAAM8D,EAAQ9D,EAAK8D,MACbia,EAAkB,CACtBvc,UAAW,wBACXgD,UAAW,EACXD,MAAOT,EAAMn6C,OACX,KACA,oCACAq2C,EAAKiE,SACLH,EAAMhB,UAAU,WAEdsc,EAAgB,wCA8DhBC,EAAW,CAEf,QAEA,OACA,OACA,QACA,OACA,OACA,KACA,QACA,SACA,UACA,QACA,QACA,YACA,aACA,KACA,MACA,QACA,QACA,OACA,OACA,UACA,WACA,SACA,eACA,sBACA,oBACA,iBACA,WAEA,UACA,aACA,YACA,SACA,OACA,OACA,UACA,iBACA,gBACA,mBACA,OACA,YACA,SACA,QACA,UACA,eACA,iBACA,eACA,QACA,kBACA,eACA,cACA,SACA,WACA,UACA,aACA,OACA,iBACA,eACA,OACA,SACA,WACA,eACA,aACA,oBAEI3K,EAAQ,CACZ,KACA,MACA,MACA,MACA,OACA,QACA,KACA,MACA,MACA,MACA,OACA,QACA,MACA,MACA,MACA,OACA,OACA,MACA,SACA,SACA,SACA,OAEF,MAAO,CACL7oF,KAAM,OACN+gF,QAAS,CAAE,MACXhG,SAAU,CACR0E,SAAUtL,EAAKiE,SAAW,KAC1Bj0E,KAAM0kF,EACN5M,QA/Ja,CACf,WACA,KACA,QACA,QACA,SACA,MACA,QACA,QACA,WACA,QACA,KACA,MACA,OACA,OACA,SACA,QACA,QACA,KACA,MACA,KACA,OACA,KACA,MACA,OACA,QACA,QACA,MACA,OACA,MACA,WACA,OACA,MACA,MACA,SACA,OACA,OACA,SACA,SACA,QACA,QACA,OACA,MACA,OACA,SACA,SACA,UACA,MACA,UACA,QACA,QACA,SA6GEuM,QA3Ga,CACf,OACA,QACA,OACA,OACA,KACA,OAsGEC,SAAU+K,GAEZ3a,QAAS,KACT3vB,SAAU,CACRirB,EAAK+E,oBACL/E,EAAK4E,QAAQ,OAAQ,OAAQ,CAAE7vB,SAAU,CAAE,UAC3CirB,EAAKwM,QAAQxM,EAAK2E,kBAAmB,CACnCJ,MAAO,MACPG,QAAS,OAEX,CACElD,UAAW,SACXqK,SAAU,CACR,CAAEtH,MAAO,4BACT,CAAEA,MAAO,qCAGb,CACE/C,UAAW,SACX+C,MAAO,2BAET,CACE/C,UAAW,SACXqK,SAAU,CACR,CAAEtH,MAAO,gBAAkB6a,GAC3B,CAAE7a,MAAO,iBAAmB6a,GAC5B,CAAE7a,MAAO,uBAAyB6a,GAClC,CAAE7a,MAAO,kDACE6a,IAEb5a,UAAW,GAEb,CACED,MAAO,CACL,KACA,MACAvE,EAAKkE,qBAEP1C,UAAW,CACT,EAAG,UACH,EAAG,mBAGP,CACEA,UAAW,OACX+C,MAAO,SACP71E,IAAK,MACLqmD,SAAU,CACR,CACEysB,UAAW,SACX+C,MAAO,IACP71E,IAAK,OAIX,CACE61E,MAAO,CACL,MACA,MACA,cACAvE,EAAKkE,qBAEP1C,UAAW,CACT,EAAG,UACH,EAAG,UACH,EAAG,aAIP,CACE+C,MAAO,CACL,MACA,MACAvE,EAAKkE,oBACL,MACA,MAEF1C,UAAW,CACT,EAAG,UACH,EAAG,WACH,EAAG,YAGP,CACE+C,MAAO,CACL,OACA,MACAvE,EAAKkE,qBAEP1C,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACE+C,MAAO,CACL,uCACA,MACAvE,EAAKkE,qBAEP1C,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CACE+C,MAAOvE,EAAKiE,SAAW,KACvB2C,SAAU,CACRkB,QAAS,OACTwM,SAAU+K,EACVrvF,KAAM0kF,IAGV,CACElT,UAAW,cACX+C,MAAO,MAETwZ,GAGN,YC9SA,MA6CM3H,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,MACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,UACA,qBACA,oBACA,gBACA,MACA,YACA,aACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,iBACA,eACA,oBACA,0BACA,yBACA,uBACA,wBACA,0BACA,cACA,MACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,cACA,YACA,kBACA,OACA,iBACA,aACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,QACA,cACA,eACA,cACA,qBACA,iBACA,WACA,SACA,SACA,OACA,aACA,cACA,QACA,UACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,QACA,WACA,MACA,WACA,eACA,aACA,iBACA,kBACA,uBACA,kBACA,wBACA,uBACA,wBACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,gBACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,WAGA9yE,UAgIFtX,EAAOC,QApHP,SAAc2zE,GACZ,MAAMyW,EApmBOzW,KACN,CACL0W,UAAW,CACTzV,MAAO,OACPsD,MAAO,cAEToS,cAAe3W,EAAKgF,qBACpB4R,SAAU,CACR3V,MAAO,SACPsD,MAAO,mDAETiR,kBAAmB,CACjBhU,UAAW,WACX+C,MAAO,gBAETsS,wBAAyB,CACvB5V,MAAO,gBACPsD,MAAO,KACP71E,IAAK,KACLg2E,QAAS,IACT3vB,SAAU,CACRirB,EAAKyE,iBACLzE,EAAK2E,oBAGTmS,gBAAiB,CACf7V,MAAO,SACPsD,MAAOvE,EAAKmE,UAALnE,kGASPwE,UAAW,GAEbuS,aAAc,CACZvV,UAAW,OACX+C,MAAO,+BA4jBGkB,CAAMzF,GACdsf,EAAoB/I,EACpBgJ,EAAmBjJ,EAEnBH,EAAgB,WAGhB+D,EAAW,CACf1Y,UAAW,WACX+C,MAAO,kCACPC,UAAW,GAGb,MAAO,CACL34E,KAAM,OACN+9E,kBAAkB,EAClBlF,QAAS,SACT3vB,SAAU,CACRirB,EAAK+E,oBACL/E,EAAKgF,qBAGLyR,EAAMK,gBACN,CACEtV,UAAW,cACX+C,MAAO,kBACPC,UAAW,GAEb,CACEhD,UAAW,iBACX+C,MAAO,oBACPC,UAAW,GAEbiS,EAAMI,wBACN,CACErV,UAAW,eACX+C,MAAO,OAAS6R,EAAKl/E,KAAK,KAAO,OAEjCstE,UAAW,GAEb,CACEhD,UAAW,kBACX+C,MAAO,KAAOgb,EAAiBroF,KAAK,KAAO,KAE7C,CACEsqE,UAAW,kBACX+C,MAAO,SAAW+a,EAAkBpoF,KAAK,KAAO,KAElDgjF,EACA,CACE3V,MAAO,KACP71E,IAAK,KACLqmD,SAAU,CAAE0hC,EAAMK,kBAEpBL,EAAMM,aACN,CACEvV,UAAW,YACX+C,MAAO,OAASiS,EAAWt/E,KAAK,KAAO,QAEzC,CAAEqtE,MAAO,8oCACT,CACEA,MAAO,IACP71E,IAAK,QACL81E,UAAW,EACXzvB,SAAU,CACR0hC,EAAME,cACNuD,EACAzD,EAAMG,SACNH,EAAMK,gBACN9W,EAAK2E,kBACL3E,EAAKyE,iBACLgS,EAAMC,UACND,EAAMjB,oBAMV,CACEjR,MAAO,oBACPqC,SAAU,CACR0E,SAAU6K,EACVrO,QAAS,qBAGb,CACEvD,MAAO,IACP71E,IAAK,OACL06E,aAAa,EACbxC,SAAU,CACR0E,SAAU,UACVxD,QAtFa,kBAuFbmP,UAAWZ,EAAen/E,KAAK,MAEjC69C,SAAU,CACR,CACEwvB,MAAO4R,EACP3U,UAAW,WAEb,CACE+C,MAAO,eACP/C,UAAW,aAEb0Y,EACAla,EAAK2E,kBACL3E,EAAKyE,iBACLgS,EAAMG,SACNH,EAAMK,kBAGVL,EAAMjB,mBAGZ,YCrrBAppF,EAAOC,QAvBP,SAAe2zE,GACb,MAAO,CACLn0E,KAAM,gBACN+gF,QAAS,CACP,UACA,gBAEF73B,SAAU,CACR,CACEysB,UAAW,cAIX+C,MAAO,qCACP2C,OAAQ,CACNx4E,IAAK,gBACLkgF,YAAa,UAKvB,YC2oBAxiF,EAAOC,QAnpBP,SAAa2zE,GACX,MAAM8D,EAAQ9D,EAAK8D,MACb0b,EAAexf,EAAK4E,QAAQ,KAAM,KAiBlCwS,EAAW,CACf,OACA,QAGA,WAUI1C,EAAQ,CACZ,SACA,SACA,OACA,UACA,OACA,YACA,OACA,OACA,MACA,WACA,UACA,QACA,MACA,UACA,WACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,OACA,YACA,UACA,UACA,aAmYI+K,EAAqB,CACzB,MACA,OACA,YACA,OACA,OACA,MACA,OACA,OACA,UACA,WACA,OACA,MACA,OACA,QACA,YACA,aACA,YACA,aACA,QACA,UACA,MACA,UACA,cACA,QACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,aACA,OACA,UACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,YACA,QACA,SACA,eACA,kBACA,kBACA,WACA,iBACA,QACA,OACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,aACA,MACA,OACA,OACA,aACA,cACA,YACA,kBACA,MACA,MACA,OACA,YACA,kBACA,QACA,OACA,aACA,SACA,QACA,WACA,UACA,WACA,gBAwBIC,EAAS,CACb,eACA,cACA,cACA,cACA,WACA,cACA,iBACA,gBACA,cACA,gBACA,gBACA,eACA,cACA,aACA,cACA,iBAGIC,EAAYF,EAEZ1K,EAAW,CArff,MACA,OACA,MACA,WACA,QACA,MACA,MACA,MACA,QACA,YACA,wBACA,KACA,aACA,OACA,aACA,KACA,OACA,SACA,gBACA,MACA,QACA,cACA,kBACA,UACA,SACA,SACA,OACA,UACA,OACA,KACA,OACA,SACA,cACA,WACA,OACA,OACA,OACA,UACA,OACA,cACA,YACA,mBACA,QACA,aACA,OACA,QACA,WACA,UACA,UACA,SACA,SACA,YACA,UACA,aACA,WACA,UACA,OACA,OACA,gBACA,MACA,OACA,QACA,YACA,aACA,SACA,QACA,OACA,YACA,UACA,kBACA,eACA,kCACA,eACA,eACA,cACA,iBACA,eACA,oBACA,eACA,eACA,mCACA,eACA,SACA,QACA,OACA,MACA,aACA,MACA,UACA,WACA,UACA,UACA,SACA,SACA,aACA,QACA,WACA,gBACA,aACA,WACA,SACA,OACA,UACA,OACA,UACA,OACA,QACA,MACA,YACA,gBACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,SACA,MACA,WACA,UACA,QACA,QACA,SACA,cACA,QACA,QACA,MACA,UACA,YACA,OACA,OACA,OACA,WACA,SACA,MACA,SACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,UACA,QACA,QACA,cACA,SACA,MACA,UACA,YACA,eACA,WACA,OACA,KACA,OACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,WACA,QACA,aACA,UACA,OACA,UACA,OACA,OACA,aACA,UACA,KACA,QACA,YACA,iBACA,MACA,QACA,QACA,QACA,eACA,kBACA,UACA,MACA,SACA,QACA,SACA,MACA,SACA,MACA,WACA,SACA,QACA,WACA,WACA,UACA,QACA,QACA,MACA,KACA,OACA,YACA,MACA,YACA,QACA,OACA,SACA,UACA,eACA,oBACA,KACA,SACA,MACA,OACA,KACA,MACA,OACA,OACA,KACA,QACA,MACA,QACA,OACA,WACA,UACA,YACA,YACA,UACA,MACA,UACA,eACA,kBACA,kBACA,SACA,UACA,WACA,iBACA,QACA,WACA,YACA,UACA,UACA,YACA,MACA,QACA,OACA,QACA,OACA,YACA,MACA,aACA,cACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,SACA,MACA,aACA,OACA,UACA,YACA,QACA,SACA,SACA,SACA,OACA,SACA,YACA,eACA,MACA,OACA,UACA,MACA,OACA,OACA,WACA,OACA,WACA,eACA,MACA,eACA,WACA,aACA,OACA,QACA,SACA,aACA,cACA,cACA,SACA,YACA,kBACA,WACA,MACA,YACA,SACA,cACA,cACA,QACA,cACA,MACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,WACA,YACA,kBACA,cACA,QACA,UACA,OACA,aACA,OACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YACA,UACA,UACA,aACA,OACA,WACA,QACA,eACA,SACA,OACA,SACA,UACA,OAzXA,MACA,MACA,YACA,OACA,QACA,QACA,OAC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CA,WACA,WACA,UACA,kBACA,SACA,iBACA,UACA,WACA,gBACA,SACA,SACA,WACA,WACA,SACA,MACA,OACA,SACA,SACA,YACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,YACA,kBACA,oBACA,UACA,MACA,OACA,QACA,QACA,WAOIwZ,EAAW,CACf,QACA,MACA,QAIIC,EAA0B,CAC9B,aACA,gBACA,aACA,OACA,YACA,OACA,SAKIC,EAAqB,CACzB,gBACA,UACA,aACA,QACA,UACA,SACA,SACA,QACA,UACA,eACA,YACA,YACA,MACA,gBACA,WACA,QACA,YACA,kBACA,YAIIC,EAAW,CACf,MACA,MACA,MACA,SACA,mBACA,aACA,OACA,aACA,YACA,4BACA,MACA,MACA,cACA,eACA,eACA,eACA,sBACA,QACA,WACA,gBACA,WACA,SACA,OACA,oCACA,YACA,OACA,gBACA,iBACA,uBACA,2BACA,oBACA,aACA,0BACA,OAIIC,EAAerd,EACnB,oBACA,kBACA,iBACA,iBACA,iBACA,mCACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,YAIIsd,EAAoBtd,EACxBqd,EACA,kBACA,kBACA,kBACA,kBACA,mBAMI5kE,EAAW+N,EAAO62D,EAAcC,EAAmB,KAGnDC,EAAiBvd,EACrB,YACA,uDACA,yDACA,yDACA,kBACA,+DACA,yDACA,+BACA,yDACA,yDACA,gCASIwd,EAAsBxd,EAC1Bud,EACA,KACA,0DAIIE,EAAaj3D,EAAO+2D,EAAgBC,EAAqB,KAGzDE,EAAiBl3D,EAAO,QAASg3D,EAAqB,KAKtDG,EAAoB,CACxB,WACA,cACAn3D,EAAO,eAAgBw5C,EAAO,QAAS,QAAS,KAAM,MACtD,oBACA,kBACA,sBACA,WACA,eACA,SACA,gBACA,WACA,eACA,gBACA,WACA,gBACA,YACA,OACA,UACA,oBACA,YACA,YACAx5C,EAAO,SAAUi3D,EAAY,MAC7B,OACA,cACA,kBACA,iCACA,gBACA,WACA,WACA,oBACA,YACA,UACA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I,EACA/C,KACGmM,GAELU,EAAc9tC,SAAW,IACpB+tC,EACH,CACEve,MAAO,KACP71E,IAAK,KACLqmD,SAAU,CACR,UACG+tC,IAIX,CAEA,MAAO,CACLj3F,KAAM,QACN+6E,SAAUmO,EACVhgC,SAAU,IACLmiC,EACHuL,EACAC,GACA,CACEhc,cAAe,6CACfh4E,IAAK,MACL46E,YAAY,EACZ1C,SAAUmO,EACVhgC,SAAU,CACRirB,EAAKwM,QAAQxM,EAAKsF,WAAY,CAC5B9D,UAAW,cACX+C,MAAO,6CAEN8c,IAGPsB,GACAC,GACA,CACElc,cAAe,SACfh4E,IAAK,IACLqmD,SAAU,IAAKmiC,GACf1S,UAAW,GAEbyd,KACGZ,KACAjJ,KACAmJ,EACHxI,EACA/C,KACGmM,KACA3L,EACH4L,EACAE,GAGN,YCr5BA,MAAMre,EAAW,2BACX8Q,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqC,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAII1C,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIuD,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGIC,EAAY,GAAGzuD,OACnBuuD,EACAxD,EACA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","sources":["../node_modules/extend/index.js","../node_modules/inline-style-parser/index.js","../node_modules/lodash/lodash.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/src/index.ts","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/highlight.js/lib/common.js","../node_modules/highlight.js/lib/core.js","../node_modules/highlight.js/lib/languages/bash.js","../node_modules/highlight.js/lib/languages/c.js","../node_modules/highlight.js/lib/languages/cpp.js","../node_modules/highlight.js/lib/languages/csharp.js","../node_modules/highlight.js/lib/languages/css.js","../node_modules/highlight.js/lib/languages/diff.js","../node_modules/highlight.js/lib/languages/go.js","../node_modules/highlight.js/lib/languages/graphql.js","../node_modules/highlight.js/lib/languages/ini.js","../node_modules/highlight.js/lib/languages/java.js","../node_modules/highlight.js/lib/languages/javascript.js","../node_modules/highlight.js/lib/languages/json.js","../node_modules/highlight.js/lib/languages/kotlin.js","../node_modules/highlight.js/lib/languages/less.js","../node_modules/highlight.js/lib/languages/lua.js","../node_modules/highlight.js/lib/languages/makefile.js","../node_modules/highlight.js/lib/languages/markdown.js","../node_modules/highlight.js/lib/languages/objectivec.js","../node_modules/highlight.js/lib/languages/perl.js","../node_modules/highlight.js/lib/languages/php-template.js","../node_modules/highlight.js/lib/languages/php.js","../node_modules/highlight.js/lib/languages/plaintext.js","../node_modules/highlight.js/lib/languages/python-repl.js","../node_modules/highlight.js/lib/languages/python.js","../node_modules/highlight.js/lib/languages/r.js","../node_modules/highlight.js/lib/languages/ruby.js","../node_modules/highlight.js/lib/languages/rust.js","../node_modules/highlight.js/lib/languages/scss.js","../node_modules/highlight.js/lib/languages/shell.js","../node_modules/highlight.js/lib/languages/sql.js","../node_modules/highlight.js/lib/languages/swift.js","../node_modules/highlight.js/lib/languages/typescript.js","../node_modules/highlight.js/lib/languages/vbnet.js","../node_modules/highlight.js/lib/languages/wasm.js","../node_modules/highlight.js/lib/languages/xml.js","../node_modules/highlight.js/lib/languages/yaml.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/intercept-read.ts","../node_modules/mobx/src/api/intercept.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/object-api.ts","../node_modules/mobx/src/api/observe.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/api/when.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../node_modules/mobx/src/mobx.ts","../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../node_modules/mobx-react-lite/src/staticRendering.ts","../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/useObserver.ts","../node_modules/mobx-react-lite/src/observer.ts","../node_modules/mobx-react-lite/src/index.ts","../node_modules/mobx-state-tree/dist/mobx-state-tree.module.js","../node_modules/mst-persist/src/asyncLocalStorage.ts","../node_modules/mst-persist/src/index.ts","models/ChatModel.ts","models/ChatStore.ts","icons/Delete.tsx","icons/Options.tsx","icons/Edit.tsx","icons/Check.tsx","components/SideBar.tsx","icons/ChevronDown.tsx","icons/Question.tsx","icons/Refresh.tsx","models/SettingStore.ts","components/ThemeSelector.tsx","components/Drawer.tsx","../node_modules/react-scrollable-feed/src/index.tsx","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.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/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.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/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/handle/break.js","../node_modules/mdast-util-to-markdown/lib/handle/code.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","../node_modules/mdast-util-to-markdown/lib/handle/html.js","../node_modules/mdast-util-to-markdown/lib/handle/image.js","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","../node_modules/mdast-util-to-markdown/lib/handle/link.js","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule.js","../node_modules/mdast-util-phrasing/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/strong.js","../node_modules/mdast-util-to-markdown/lib/util/check-strong.js","../node_modules/mdast-util-to-markdown/lib/handle/index.js","../node_modules/mdast-util-to-markdown/lib/util/check-fence.js","../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","../node_modules/longest-streak/index.js","../node_modules/mdast-util-to-markdown/lib/handle/definition.js","../node_modules/mdast-util-to-markdown/lib/handle/heading.js","../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","../node_modules/mdast-util-to-markdown/lib/handle/list.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","../node_modules/mdast-util-to-markdown/lib/handle/root.js","../node_modules/mdast-util-to-markdown/lib/handle/text.js","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/remark-gfm/lib/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","icons/Copy.tsx","icons/CopySuccess.tsx","icons/Stop.tsx","utils/OllamaApi.ts","../node_modules/highlight.js/es/common.js","components/Message.tsx","components/ChatBox.tsx","components/Modal.tsx","icons/Warning.tsx","icons/Bars3.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"sourcesContent":["'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","// 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 * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\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 rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\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/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var 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\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\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 */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names 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 key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\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 */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\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 */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\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 */\n function 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\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 */\n function 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\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\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 */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\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 */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\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 */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\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 */\n function 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\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\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 */\n function 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\n /**\n * The base implementation of `_.keysIn` 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 */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\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 */\n function 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\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\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 */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\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 an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\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 */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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 */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\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 `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\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 weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\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 weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\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 */\n function 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\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\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 */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\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 return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\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 return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\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 === 'attentionSequence' &&\n events[open][1]._open &&\n // 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 }\n\n // Number of markers to use from the sequence.\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 const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\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 return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\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 if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\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 if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\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\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\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\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\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 const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\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 let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\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 if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\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 /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\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// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(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\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 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 // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {import('unist-util-visit-parents').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').ConstructName} ConstructName\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can’t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\n\nemphasis.peek = emphasisPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker)\n exit()\n return value\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').State} State\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../types.js').State} State\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there’s a url…\n node.url &&\n // And there’s a no title…\n !node.title &&\n // And the content of `node` is a single text node…\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content…\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Exit} Exit\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkStrong} from '../util/check-strong.js'\n\nstrong.peek = strongPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker + marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker + marker)\n exit()\n return value\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there’s no info…\n !node.lang &&\n // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n","/**\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there’s no url, or…\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size…\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value =\n '&#x' +\n value.charCodeAt(0).toString(16).toUpperCase() +\n ';' +\n value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../types.js').State} State\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there’s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there’s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return fn.call(state, node, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n }\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: .\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [singleTilde=true]\n * Whether to support strikethrough with a single tilde (default: `true`).\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\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 /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\n splice(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 splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0]\n })\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n )\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly} context\n * @param {Readonly} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly} map\n * @param {Readonly} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Readonly>} events\n * @param {number} index\n * @returns {Readonly}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\n }\n}\n","/// \n/// \n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-gfm').Options} MdastOptions\n * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {MicromarkOptions & MdastOptions} Options\n * Configuration.\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n","export default function Copy({ className = '' }: { className?: string }) {\n return (\n \n \n \n )\n}\n","export default function CopySuccess({ className = '' }: { className?: string }) {\n return (\n \n \n \n )\n}\n","export default function Stop() {\n return (\n \n \n \n )\n}\n","import { chatStore } from '../models/ChatStore'\nimport { DefaultHost, settingStore } from '../models/SettingStore'\n\ntype OllamaResponse = {\n model: string\n created_at: string\n message: {\n role: 'assistant'\n content: string\n // images: null\n }\n done: boolean\n}\n\nexport class OllmaApi {\n private static abortController?: AbortController\n\n static async *streamChat() {\n const model = settingStore.selectedModel?.name\n if (!model) return\n\n const host = settingStore.host || DefaultHost\n const chat = chatStore.selectedChat!\n OllmaApi.abortController = new AbortController()\n\n chat.createIncomingMessage(model)\n\n const messages = chat.messages.map(message => {\n if (message.fromBot) {\n return { role: 'assistant', content: message.content }\n }\n\n return { role: 'user', content: message.content }\n })\n\n const response = await fetch(host + '/api/chat', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ model, messages }),\n signal: OllmaApi.abortController.signal,\n })\n\n if (!response.body) return\n\n const reader = response.body.getReader()\n\n while (true) {\n const { done, value } = await reader.read()\n\n if (done) {\n break\n }\n\n // Decode the received value and parse\n const textChunk = new TextDecoder().decode(value)\n\n const data = JSON.parse(textChunk) as OllamaResponse\n\n if (data.done) break\n\n yield data.message.content\n }\n\n this.abortController = undefined\n }\n\n static cancelStream() {\n if (!OllmaApi.abortController) return\n\n OllmaApi.abortController.abort('Stream ended manually')\n\n OllmaApi.abortController = undefined\n }\n}\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/common.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","import Markdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport { PropsWithChildren, useMemo, useState } from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Delete from '../icons/Delete'\nimport Copy from '../icons/Copy'\nimport CopySuccess from '../icons/CopySuccess'\nimport Stop from '../icons/Stop'\n\nimport { IMessageModel } from '../models/ChatModel'\nimport { chatStore } from '../models/ChatStore'\nimport { OllmaApi } from '../utils/OllamaApi'\n\nimport hljs from 'highlight.js/lib/common'\n\nconst customCodeBlock = (props: React.HTMLAttributes) => {\n const { children, className = '', ...rest } = props\n\n const text = children?.toString() || ''\n\n const multiLine = text.includes('\\n')\n\n const copy = () => navigator.clipboard.writeText(text)\n\n const highlightedText = useMemo(() => {\n return hljs.highlightAuto(text).value\n }, [text])\n\n if (multiLine) {\n return (\n
\n \n \n \n\n \n
\n )\n }\n\n return {children}\n}\n\nconst Loading = () => (\n \n)\n\n// this one is observed for incoming text changes, the rest do not need to be observed\nexport const IncomingMessage = observer(() => {\n const incomingMessage = chatStore.selectedChat!.incomingMessage\n\n // checking for content also tells the observer to re-render\n if (!incomingMessage?.content) return null\n\n return (\n }\n >\n \n \n )\n})\n\ntype MessageProps = PropsWithChildren<{\n message: IMessageModel\n loading?: boolean\n onDestroy: () => void\n customDeleteIcon?: React.ReactNode\n}>\n\nexport const Message = ({ message, onDestroy, children, customDeleteIcon }: MessageProps) => {\n const { content, fromBot, uniqId } = message\n\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(content)\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n }\n\n return (\n \n
\n \n {content}\n \n
\n\n {children}\n\n
\n \n\n \n \n \n
\n
\n )\n}\n","import { useEffect, useRef, useState, useCallback, PropsWithChildren } from 'react'\nimport _ from 'lodash'\nimport { observer } from 'mobx-react-lite'\nimport ScrollableFeed from 'react-scrollable-feed'\n\nimport { chatStore } from '../models/ChatStore'\nimport { settingStore } from '../models/SettingStore'\n\nimport { IncomingMessage, Message } from './Message'\nimport { OllmaApi } from '../utils/OllamaApi'\n\nconst ChatBoxInputRow = observer(\n ({ onSend, children }: PropsWithChildren<{ onSend: (message: string) => void }>) => {\n const [userMessage, setUserMessage] = useState('')\n const inputRef = useRef(null)\n\n const handleSend = () => {\n onSend(userMessage)\n setUserMessage('')\n\n inputRef.current?.focus()\n }\n\n const handleKeyPress = (keyEvent: React.KeyboardEvent) => {\n if (keyEvent.key === 'Enter') {\n handleSend()\n }\n }\n\n const noServer = !settingStore.selectedModel\n\n return (\n
\n
\n setUserMessage(e.target.value)}\n onKeyDown={handleKeyPress}\n value={userMessage}\n ref={inputRef}\n type=\"text\"\n disabled={chatStore.isGettingData || noServer}\n />\n\n {children || (\n \n )}\n \n
\n )\n },\n)\n\nconst ChatBox = observer(() => {\n const chat = chatStore.selectedChat\n\n const scrollableFeedRef = useRef(null)\n\n const sendMessage = async () => {\n if (!chat) return\n\n try {\n for await (const message of OllmaApi.streamChat()) {\n chat.updateIncomingMessage(message)\n scrollToBottom()\n }\n } catch (e) {\n // TODO: do not add this to the text but instead make it a boolean failed\n chat.updateIncomingMessage('\\n -- Communication stopped with server --')\n } finally {\n chat.commitIncomingMessage()\n\n scrollableFeedRef.current?.scrollToBottom()\n }\n }\n\n // only scroll every 1.5 seconds max\n const scrollToBottom = useCallback(\n _.throttle(() => {\n console.log('scrolling to bottom')\n scrollableFeedRef.current?.scrollToBottom()\n }, 1500),\n [scrollableFeedRef?.current],\n )\n\n useEffect(() => {\n //no op\n\n //cleanup\n return OllmaApi.cancelStream\n }, [])\n\n if (!chat) return null\n\n const handleMessageToSend = (userMessage: string) => {\n if (!userMessage) return\n chat.addUserMessage(userMessage)\n\n sendMessage()\n }\n\n return (\n
\n element.scrollBy({ top: offset, behavior: 'smooth' })}\n >\n {chat.messages.map(message => (\n chat.deleteMessage(message.uniqId)}\n />\n ))}\n\n {chat.isGettingData && }\n \n\n \n {chat.isGettingData && (\n \n )}\n \n
\n )\n})\n\nexport default ChatBox\n","import { observer } from 'mobx-react-lite'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { settingStore } from '../models/SettingStore'\n\nimport Copy from '../icons/Copy'\nimport CopySuccess from '../icons/CopySuccess'\n\nconst OLLAMA_CODE = 'OLLAMA_ORIGINS=*.github.io ollama serve'\n\nconst Modal = observer(() => {\n const modalRef = useRef(null)\n\n const selectedModel = settingStore.selectedModel\n\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(OLLAMA_CODE)\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n }\n\n useEffect(() => {\n if (selectedModel) return\n\n let timeout = setTimeout(() => {\n modalRef.current?.showModal()\n }, 1500)\n\n return () => clearTimeout(timeout)\n }, [selectedModel])\n\n return (\n \n
\n

How to connect to Ollama Server:

\n\n
\n

By default, Ollama allows cross origin requests from 127.0.0.1 and 0.0.0.0.

{' '}\n

\n To use custom origins (like this one), you can set OLLAMA_ORIGINS when starting ollama:\n

\n
\n\n
\n
\n {OLLAMA_CODE}\n
\n\n \n \n \n \n
\n\n
\n
\n \n
\n
\n
\n\n
\n {/* close button */}\n
\n )\n})\n\nexport default Modal\n","export default function Warning() {\n return (\n \n \n \n )\n}\n","export default function Bars3() {\n return (\n \n \n \n )\n}\n","import _ from 'lodash'\nimport { observer } from 'mobx-react-lite'\n\nimport { SideBar } from './components/SideBar'\nimport Drawer from './components/Drawer'\nimport ChatBox from './components/ChatBox'\nimport Modal from './components/Modal'\n\nimport { settingStore } from './models/SettingStore'\n\nimport Warning from './icons/Warning'\nimport Bars3 from './icons/Bars3'\n\n// import './App.css'\nimport 'highlight.js/styles/github.css'\n\nconst Navbar = observer(() => {\n const noServer = !settingStore.selectedModel\n\n return (\n \n )\n})\n\nfunction App() {\n return (\n
\n
\n \n\n \n\n \n\n
\n \n\n
\n \n
\n
\n
\n
\n )\n}\n\nexport default App\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React, { Suspense } from 'react'\nimport ReactDOM from 'react-dom/client'\nimport './index.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)\nroot.render(\n \n Loading...
}>\n \n \n ,\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","trimmedEndIndex","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","split","asciiToArray","unescapeHtmlChar","_","runInContext","context","defaults","pick","Date","Math","String","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","aa","ca","p","a","b","encodeURIComponent","da","ea","fa","ha","ia","window","document","createElement","ja","ka","la","ma","v","d","f","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","l","h","k","displayName","Pa","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","location","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","tel","text","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","pf","qf","rf","sf","capture","passive","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","console","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","_status","_result","default","Children","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","inst","hljs","registerLanguage","HighlightJS","deepFreeze","freeze","getOwnPropertyNames","isFrozen","Response","isMatchIgnored","ignoreMatch","escapeHTML","inherit$1","original","_len","objects","_key","emitsWrappingTags","scope","HTMLRenderer","parseTree","classPrefix","walk","addText","openNode","className","scopeToCSSClass","_ref","pieces","span","closeNode","newNode","opts","TokenTree","rootNode","closeAllNodes","builder","_walk","_collapse","TokenTreeEmitter","super","startScope","endScope","__addSublanguage","emitter","toHTML","finalize","lookahead","anyNumberOfTimes","optional","_len2","_key2","either","_len3","_key3","stripOptionsFromArgs","countMatchGroups","BACKREF_RE","_rewriteBackreferences","regexps","_ref2","joinWith","numCaptures","regex","out","Number","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","illegal","QUOTE_STRING_MODE","COMMENT","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","END_SAME_AS_BEGIN","on:begin","resp","_beginMatch","on:end","MATCH_NOTHING_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","skipIfHasPrecedingDot","response","scopeClassName","_parent","beginKeywords","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","keyword","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","warn","_len4","_key4","deprecated","MultiClassError","remapScopeNames","regexes","_ref3","scopeNames","emit","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","addRule","compile","terminators","matcherRe","s","ResumableMultiRegex","multiRegexes","regexIndex","getMatcher","matcher","_ref4","resumingScanAtSamePosition","considerAll","m2","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","term","rule","buildModeRegex","HTMLInjectionError","html","inherit","NO_MATCH","HLJS","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","matchText","kind","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","_top","highlightAuto","_emitter","processSubLanguage","emitMultiClass","klass","startNewMode","endOfMode","matchPlusRemainder","matched","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","badRule","newMode","beforeCallbacks","doBeginMatch","processed","iterations","getLanguage","list","item","processContinuations","__emitTokens","processedCount","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","autoDetection","sorted","supersetOf","best","secondBest","highlightElement","block","classes","_class","blockLanguage","highlighted","currentLang","resultLang","classList","updateClassName","wantsHighlight","highlightAll","readyState","registerAliases","aliasList","_ref5","alias","lang","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","languageDefinition","error$1","rawDefinition","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","debugMode","safeMode","versionString","newInstance","VAR","BRACED_VAR","SUBST","HERE_DOC","QUOTE_STRING","ARITHMETIC","KNOWN_SHEBANG","FUNCTION","literal","built_in","DECLTYPE_AUTO_RE","NAMESPACE_RE","FUNCTION_TYPE_RE","TYPES","STRINGS","NUMBERS","PREPROCESSOR","FUNCTION_TITLE","KEYWORDS","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","preprocessor","strings","CPP_PRIMITIVE_TYPES","CPP_KEYWORDS","_type_hints","FUNCTION_DISPATCH","_hint","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","STRING","GENERIC_MODIFIER","TYPE_IDENT_RE","AT_IDENTIFIER","TAGS","MEDIA_FEATURES","PSEUDO_CLASSES","PSEUDO_ELEMENTS","ATTRIBUTES","modes","IMPORTANT","BLOCK_COMMENT","HEXCOLOR","ATTRIBUTE_SELECTOR_MODE","CSS_NUMBER_MODE","CSS_VARIABLE","keyframePosition","attribute","COMMENTS","VARIABLES","LITERALS","ARRAY","ANY_KEY","decimalDigits","frac","hexDigits","NUMERIC","recurRegex","substitution","JAVA_IDENT_RE","GENERIC_IDENT_RE","ANNOTATION","PARAMS","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","IDENT_RE$1","FRAGMENT","XML_TAG","isTrulyOpeningTag","afterMatchIndex","nextChar","hasClosingTag","afterMatch","KEYWORDS$1","decimalInteger","NUMBER","HTML_TEMPLATE","CSS_TEMPLATE","GRAPHQL_TEMPLATE","TEMPLATE_STRING","SUBST_INTERNALS","SUBST_AND_COMMENTS","PARAMS_CONTAINS","CLASS_OR_EXTENDS","CLASS_REFERENCE","FUNCTION_DEFINITION","label","FUNCTION_CALL","PROPERTY_ACCESS","GETTER_OR_SETTER","FUNC_LEAD_IN_RE","FUNCTION_VARIABLE","LITERALS_MODE","LABEL","VARIABLE","ANNOTATION_USE_SITE","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","PSEUDO_SELECTORS","PSEUDO_SELECTORS$1","INTERP_IDENT_RE","RULES","VALUE_MODES","STRING_MODE","IDENT_MODE","AT_KEYWORDS","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","PSEUDO_SELECTOR_MODE","OPENING_LONG_BRACKET","CLOSING_LONG_BRACKET","LONG_BRACKETS","FUNC","ASSIGNMENT","TARGET","INLINE_HTML","LINK","BOLD","ITALIC","BOLD_WITHOUT_ITALIC","ITALIC_WITHOUT_BOLD","CONTAINABLE","IDENTIFIER_RE","CLASS_KEYWORDS","REGEX_MODIFIERS","PERL_KEYWORDS","METHOD","STRING_CONTAINS","REGEX_DELIMS","PAIRED_DOUBLE_RE","open","close","middle","PAIRED_RE","PERL_DEFAULT_CONTAINS","NOT_PERL_ETC","PASCAL_CASE_CLASS_NAME_RE","SINGLE_QUOTED","WHITESPACE","KWS","items","dualCase","normalizeKeywords","CONSTRUCTOR_CALL","CONSTANT_REFERENCE","LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON","NAMED_ARGUMENT","PARAMS_MODE","FUNCTION_INVOKE","ATTRIBUTE_CONTAINS","RESERVED_WORDS","PROMPT","LITERAL_BRACKET","digitpart","pointfloat","COMMENT_TYPE","NUMBER_TYPES_RE","OPERATORS_RE","PUNCTUATION_RE","RUBY_METHOD_RE","CLASS_NAME_RE","CLASS_NAME_WITH_NAMESPACE_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","COMMENT_MODES","digits","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","NUMBER_SUFFIX","BUILTINS","PSEUDO_ELEMENTS$1","PSEUDO_CLASSES$1","COMMENT_MODE","RESERVED_FUNCTIONS","COMBOS","FUNCTIONS","exceptions","when","qualifyFn","reduceRelevancy","keywordWrapper","dotKeywords","optionalDotKeywords","keywordTypes","literals","precedencegroupKeywords","numberSignKeywords","builtIns","operatorHead","operatorCharacter","identifierHead","identifierCharacter","identifier","typeIdentifier","keywordAttributes","availabilityKeywords","DOT_KEYWORD","KEYWORD_GUARD","PLAIN_KEYWORDS","kw","KEYWORD","KEYWORD_MODES","OPERATOR_GUARD","OPERATORS","ESCAPED_CHARACTER","rawDelimiter","ESCAPED_NEWLINE","INTERPOLATION","MULTILINE_STRING","SINGLE_LINE_STRING","REGEXP_CONTENTS","BARE_REGEXP_LITERAL","EXTENDED_REGEXP_LITERAL","REGEXP","QUOTED_IDENTIFIER","IDENTIFIERS","TYPE","GENERIC_ARGUMENTS","TUPLE","GENERIC_PARAMETERS","FUNCTION_PARAMETERS","FUNCTION_OR_MACRO","INIT_SUBSCRIPT","OPERATOR_DECLARATION","PRECEDENCEGROUP","interpolation","submodes","javascript","tsLanguage","NAMESPACE","INTERFACE","DECORATOR","swapMode","replacement","indx","MM_DD_YYYY","YYYY_MM_DD","TIME_12H","TIME_24H","DATE","DOC_COMMENT","TAG_NAME_RE","XML_ENTITIES","XML_META_KEYWORDS","XML_META_PAR_KEYWORDS","APOS_META_STRING_MODE","QUOTE_META_STRING_MODE","TAG_INTERNALS","URI_CHARACTERS","CONTAINER_STRING","TIMESTAMP","VALUE_CONTAINER","OBJECT","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","definition","o","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","nmd","installedChunks","j","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","Proxy","plainObjectString","assertProxies","invoked","isStringish","protoConstructor","isGenerator","addHiddenProp","propName","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","thing","isES6Set","hasGetOwnPropertySymbols","ownKeys","toPrimitive","hasProp","getOwnPropertyDescriptors","res","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","_extends","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","_proto","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","arg3","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","structural","deepEqual","shallow","deepEnhancer","isObservable","observable","isAction","isFlow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","make_$1","extend_","extend_$1","decorate_20223_$1","adm","descriptor","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","mthd","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","_createAction","isMobxAction","safeDescriptors","globalState","_adm$proxy_","_annotation$options_","proxy_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","isPlainObject_","createFlowAnnotation","make_$2","extend_$2","decorate_20223_$2","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","make_$3","extend_$3","decorate_20223_$3","assertComputedDescriptor","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","make_$4","extend_$4","decorate_20223_$4","assertObservableDescriptor","defineObservableProperty_","_this$options_$enhanc","enhancer","desc","initializedObjects","initializeObservable","ObservableValue","_ann$options_$enhance","setObservablePropValue_","init","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","decorate_20223_$5","autoBind","observableAnnotation","_this$options_4","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","proxy","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","oldValue","observableDecoratorAnnotation","getEnhancerFromOptions","getEnhancerFromAnnotation","createObservable","arg2","box","equals","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","currentActionId","nextActionId","isFunctionNameConfigurable","_getDescriptor$config","_getDescriptor","tmpNameDescriptor","actionName","executeAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","_startAction","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_endAction","_Symbol$toPrimitive","_Atom","notifySpy","_this","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","_inheritsLoose","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","handler","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","raw","isObservableValue","_Symbol$toPrimitive$1","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","cause","wasSuspended","changed","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","prevValue","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","dispose","getDisposer_","abortSignal","_this2","trace","enterBreakPoint","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","runInAction","reaction","_opts$name","_opts","scheduler","reactionRunner","requiresObservable","createSchedulerFromOptions","_opts2","_opts2$signal","signal","aborted","_opts3","run","ON_BECOME_UNOBSERVED","hook","getAtom","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","isolateGlobalState","baseScheduler","setReactionScheduler","annotations","descriptors","getDependencyTree","nodeToDependencyTree","from","unique","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","generator","rejector","gen","pendingPromise","stepId","onFulfilled","onRejected","cancelPromise","_res","yieldedPromise","interceptReads","propOrHandler","getAdministration","intercept","interceptProperty","interceptInterceptable","_isObservable","keys_","set_","_values","apiDefineProperty","observe","propOrCb","cbOrFire","observeObservableProperty","observeObservable","transaction","abort","_opts$signal","disposer","_when","_opts$signal2","_opts$signal3","whenPromise","effect","effectAction","getAdm","has_","get_","_getAdm$set_","deleteProperty","_getAdm$delete_","delete_","_getAdm$definePropert","ownKeys_","preventExtensions","interceptable","interceptors","idx","listenable","makeObservable","collectStoredAnnotations","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","added","addedCount","removed","removedCount","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","_i","notifyArrayChildUpdate_","notify","owned","spliceWithArray","addArrayExtension","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","currentValue","_this3","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator","_Symbol$toStringTag","initialData","data_","hasMap_","keysAtom_","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_createForOfIteratorHelperLoose","_step$value","symbols","getPlainObjectKeys","_this5","_step2","_iterator2","_this6","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_this7","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","_createClass","ObservableSetMarker","_Symbol$iterator$1","_Symbol$toStringTag$1","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","setPrototypeOf","LegacyObservableArray","_StubArray","_assertThisInitialized","createArrayBufferItem","getDebugName","_observable","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","defaultNoopBatch","printDebugValue","globalIsUsingStaticRendering","isUsingStaticRendering","TimerBasedFinalizationRegistry","maxAge","sweepTimeout","registrations","registration","token","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","_a","getServerSnapshot","createReaction","stateVersion","onStoreChange","useObserver","baseComponentName","admRef","React","adm_1","subscribe","unregister","renderResult","exception","register","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","observer","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","batch","Hook","livelinessChecking","getLivelinessChecking","extendStatics","__extends","__","__assign","__values","__read","ar","__spread","getType","assertIsStateTreeNode","getStateTreeNode","applyPatch","patch","assertArg","applyPatches","asArray","applySnapshot","snapshot","applyPostProcess","getRoot","storedValue","BaseNode","subpath","environment","NodeLifeCycle","INITIALIZING","baseSetParent","_subpath","_subpathUponDeath","_pathUponDeath","_state","wasAlive","isAlive","aliveAtom","_hookSubscribers","hookHandler","EventHandlers","_escapedSubpath","pathAtom","getEscapedPath","escapeJsonPath","DEAD","DETACHING","whenFinalized","CREATED","FINALIZED","fireHook","afterAttach","clearAll","beforeDestroy","ScalarNode","_super","simpleType","initialSnapshot","createNewInstance","finalizeCreation","fail","newParent","parentChanged","subpathChanged","pathUponDeath","aboutToDie","finalizeDeath","baseFinalizeCreation","baseAboutToDie","baseFinalizeDeath","fireInternalHook","TypeFlags","nextNodeId","snapshotReactionOptions","ObjectNode","complexType","_snapshotComputed","unbox","_initialSnapshot","identifierAttribute","identifierCache","IdentifierCache","_childNodes","initializeChildNodes","unnormalizedIdentifier","childNode","normalizeIdentifier","addNodeToCache","patches","createObservableInstanceIfNeeded","_applyPatches","_applySnapshot","fireHooks","_observableInstanceState","createObservableInstance","e_1","e_2","_b","parentChain","parentChain_1","parentChain_1_1","e_1_1","preboot","_isRunningAction","finalizeNewInstance","isRoot","_addSnapshotReaction","afterCreate","_c","_d","e_2_1","beforeDetach","previousState","newEnv","newIdCache","splitCache","mergeCache","_allowStateChangesInsideComputed","hasSnapshotPostProcessor","_getActualSnapshot","_getCachedInitialSnapshot","_snapshotUponDeath","_cachedInitialSnapshotCreated","childNodes","_cachedInitialSnapshot","processInitialSnapshot","isRunningAction","_getAssertAliveError","warnError","escapedPath","actionContext","getCurrentActionContext","parentActionEvent","actionFullPath","assertAlive","_autoUnbox","getChildNode","getChildren","convertChildNodesToArray","getChildType","isProtectionEnabled","isProtected","subpathUponDeath","e_3","e_3_1","afterCreationFinalization","clearParent","createActionInvoker","parts","splitJsonPath","resolveNodeByPathParts","applyPatchLocally","_internalEventsEmit","_internalEventsClear","notifyDied","_internalEventsClearAll","onChange","_internalEventsRegister","basePatch","_internalEventsHasSubscribers","localizedPatch","substr","stripPatch","invertPatch","splitPatch","reversePatch","emitPatch","_internalEventsHas","hasDisposer","_internalEventsUnregister","middleware","middlewares","includeHooks","removeMiddleware","assertWritable","_hasSnapshotReaction","snapshotDisposer","expression","errorHandler","baseFn","_opts$name2","runSync","nextValue","_opts4","_opts4$signal","_opts5","emitSnapshot","addDisposer","_internalEvents","hasSubscribers","eventHandler","atTheBeginning","detach","cannotDetermineSubtype","$type","BaseType","typecheckInternal","instantiate","getStateTreeNodeSafe","valueType","isAssignableFrom","typeCheckSuccess","typeCheckFailure","isValidSnapshot","validate","ComplexType","getDefaultSnapshot","isDetaching","isStateTreeNode","isMutable","isMatchingSnapshotId","tryToReconcileNode","setParent","SimpleType","assertIsType","argNumber","RunningAction","hooks","onStart","running","onFinish","flowsPending","currentActionContext","getNextActionId","runWithActionContext","baseIsRunningAction","previousContext","baseCall","originalFn","CollectedMiddlewares","runNextMiddleware","getNextMiddleware","call2","runMiddleWares","getParentActionContext","parentContext","parentActionContext","argsToArray","tree","rootId","parentId","allParentIds","parentEvent","_isMSTAction","_isFlowAction","$mst_middleware","arrayIndex","inArrayIndex","prettyPrintValue","safeStringify","toErrorString","fullPath","pathPrefix","currentTypename","isPrimitive","isSnapshotCompatible","Integer","Boolean","isPrimitiveType","describe","getContextForPath","flattenTypeErrors","errors","ENABLE_TYPE_CHECK","valueInString","validationErrorsToString","typecheck","identifierCacheId","lcm","lastCacheModificationPerId","modificationId","cacheId","lastCacheUpdate","mobxShallow","updateLastCacheModificationPerId","nodes","splitNode","newCache","basePath","modified","candidate","createObjectNode","existingNode","createScalarNode","$treenode","pathParts","failIfResolveFails","part","joinJsonPath","includeDate","isSerializable","defineProperty$1","EventHandler","handlers","eventHandlers","stringStartsWith","beginning","typeName","assertIsFunction","assertIsString","canBeEmpty","setImmediateWithFallback","spawner","contextBase","cancelError","throw","createFlowSpawner","op","unescapeJsonPath","getPathStr","ids","$preProcessorFailed","SnapshotProcessor","_subtype","_processors","sn","preProcessor","preProcessSnapshot","postProcessor","snapshotProcessorType","methods","methods_1","methods_1_1","proxyNodeTypeMethods","oldGetSnapshot","postProcessSnapshot","Union","getReconciliationType","processedInitialValue","_fixNode","reconcile","processedSn","preProcessSnapshotSafe","MapIdentifierMode","needsIdentifierError","tryCollectModelTypes","modelTypes","subtypes","getSubTypes","subtypesArray","subtypesArray_1","subtypesArray_1_1","ModelType","MSTMap","mapNode","mapType","identifierMode","YES","mapIdentifierAttribute","isValidIdentifier","put","MapType","_subType","hookInitializers","UNKNOWN","_determineIdentifierMode","NO","objNode","subType","_interceptReads","actionInvoker","willChange","didChange","processIdentifier","expected","oldSnapshot","currentKeys","ArrayType","_getAdministration","updatedNodes","reconcileArrayChildren","index_1","addedNodes","childType","oldNodes","newValues","newPaths","nothingChanged","hasNewNode","oldNode","newPath","areSame","valueAsNode","oldMatch","getNewNode","oldNodeType","PRE_PROCESS_SNAPSHOT","POST_PROCESS_SNAPSHOT","objectTypeToString","defaultObjectOptions","initializers","toPropertiesObject","declaredProps","keysList","alreadySeenKeys","boolean","DatePrimitive","getPrimitiveFactoryFromValue","cloneAndEnhance","currentPreprocessor","currentPostprocessor","propertyNames","_getIdentifierAttribute","forAllProps","propType","Identifier","instantiateActions","action2","baseAction","specializedAction_1","boundAction","instantiateVolatileState","views","__rest","instantiateViews","applySnapshotPreProcessor","chg","oldChildValue","applySnapshotPostProcessor","preProcessedSnapshot","processor","isModelType","CoreType","checker","integer","float","Float","finite","Finite","nullType","Null","undefinedType","Undefined","_DatePrimitive","getTime","Literal","Refinement","_predicate","_message","subtypeErrors","_types","eager","dispatcher","_dispatcher","_eager","factory","determineType","reconcileCurrentType","allErrors","applicableTypes","optionsOrType","otherTypes","OptionalValue","optionalValues","Optional","defaultInstanceOrSnapshot","getDefaultInstanceOrSnapshot","defaultValueOrFunction","checkOptionalPreconditions","undefinedAsOptionalValues","optionalUndefinedType","optionalNullType","maybe","Late","_definition","mustSucceed","ReferenceError","getSubType","subtype","Lazy","pendingNodeList","shouldLoadPredicate","loadType","loadedType","Frozen","untypedFrozenInstance","StoredReference","targetType","targetNode","normalizedId","lastCacheModification","getLastCacheModificationPerId","resolvedReference","InvalidReferenceError","updateResolvedReference","BaseReferenceType","onInvalidated","Reference","storedRefNode","referenceId","refTargetNode","storedRefParentNode","storedRefParentValue","invalidTarget","invalidId","replaceRef","newRef","removeRef","refTargetValue","refTargetNodeHook","getInvalidationCause","fireInvalidated","refTargetDetachHookDisposer","registerHook","refTargetDestroyHookDisposer","customGetSet","onRefTargetDestroyedHookDisposer","startWatching","sync","addTargetNodeWatcher","IdentifierReferenceType","resolvedValue","storedRef","watchTargetNodeForInvalidations","compareByValue","CustomReferenceType","newIdentifier","getSetOptions","BaseIdentifierType","validType","IdentifierType","IdentifierNumberType","identifierNumber","CustomType","Custom","isTargetType","typeError","getValidationMessage","toSnapshot","fromSnapshot","isSnapshot","valueToStore","enumeration","realOptions","option","model","compose","hasTypename","cur","custom","safeReference","refType","ev","acceptsUndefined","maybeNull","refinement","frozen","late","nameOrType","maybeType","null","snapshotProcessor","processors","AsyncLocalStorage","callWithPromise","localStorage","getItem","removeItem","setItem","store","storage","_options","jsonify","_options$jsonify","whitelist","blacklist","whitelistDict","arrToDict","blacklistDict","_snapshot","onSnapshot","parse","dict","elem","MessageModel","fromBot","botName","uniqId","ChatModel","messages","incomingMessage","commitIncomingMessage","setName","deleteMessage","messagesWithoutMessage","createIncomingMessage","updateIncomingMessage","addUserMessage","isGettingData","chatStore","chats","selectedChat","createChat","chat","deleteChat","_self$selectedChat","selectChat","_self$selectedChat2","Delete","_jsx","xmlns","viewBox","stroke","strokeLinecap","strokeLinejoin","Options","Edit","Check","ChatItem","_chatStore$selectedCh","inputRef","changeName","_inputRef$current","_jsxs","tabIndex","role","onKeyDown","keyEvent","SideBar","ChevronDown","Question","Refresh","Model","DefaultHost","SettingStore","host","models","_selectedModelName","theme","updateModels","selectModel","setHost","setTheme","_self$models$","fetch","json","selectedModel","settingStore","themes","dark","dracula","garden","openNoServerDialog","noServerDialog","getElementById","showModal","Input","noServer","Models","Drawer","_Fragment","htmlFor","ThemeSelector","wrapperRef","bottomRef","handleScroll","viewableDetectionEpsilon","isViewable","forceScroll","changeDetectionFilter","scrollParentToChild","getBoundingClientRect","animateScroll","onScrollComplete","clientHeight","onScroll","scrollToBottom","maxHeight","overflowY","scrollBy","nameRe","nameReJsx","emptyOptions","empty","Schema","normal","space","definitions","normalize","Info","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","DefinedInfo","mask","mark","check","own","info","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","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","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","hrefLang","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","manifest","media","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","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","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","shape","sizes","slot","spellCheck","srcDoc","srcLang","srcSet","title","translate","typeMustMatch","useMap","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","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","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","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","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","ruleId","fatal","file","actual","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","addNode","addChildren","estree","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","Type","dashes","padRight","padLeft","commas","spaces","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","toDash","$1","urlAttributes","icon","includeImageAlt","includeHtml","parameters","chunkStart","subtokenize","events","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","combineExtensions","extensions","syntaxExtension","extension","right","constructs","existing","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","factorySpace","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","eof","nok","disable","blankLine","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","onExitError","expectingFirstListItemValue","flowCodeInside","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","doc","env","deserialize","serialized","deserializer","$","unpair","BigInt","EMPTY","asString","shouldSkip","serialize","lossy","serializer","strict","toISOString","structuredClone","any","normalizeUri","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","suffix","contents","listItemLoose","tab","trimLines","trimLine","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","handle","passThrough","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","bail","trough","fns","pipeline","middlewareIndex","output","fnExpectsCallback","middelware","basename","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","stored","assertNonEmpty","assertPart","stem","CallableInstance","names","Processor","Compiler","Parser","attachers","freezeIndex","namespace","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","addList","addPreset","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","mdastTree","colon","questionMark","numberSign","ccount","character","findAndReplace","ignored","tupleOrList","tuple","toExpression","toFunction","pairIndex","grandparent","matchObject","inConstruct","notInConstruct","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","exitLiteralAutolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","findUrl","findEmail","domain","isCorrectDomain","trailExec","trail","closingParenIndex","openingParens","closingParens","splitUrl","atext","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","tracker","createTracker","move","subexit","safe","associationId","indentLines","containerFlow","blank","peek","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","defaultStringLength","toAlignment","listInScope","none","_1","unsafe","checkQuote","checkEmphasis","compilePattern","formatLinkAsAutolink","resourceLink","checkBullet","bullet","checkRule","phrasing","checkStrong","fence","checkFence","fences","formatCodeAsIndented","longestStreak","encode","rank","literalWithBreak","setext","formatHeadingAsSetext","closeAtx","bulletCurrent","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","listItemIndent","checkListItemIndent","incrementListMarker","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","gfmTableToMarkdown","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","row","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","exitCheck","exitParagraphWithTaskListItem","firstParaghraph","listItemWithTaskListItem","checkable","checkbox","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_gfmAutolinkLiteralWalkedInto","indent","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","strikethrough","EditMap","editMap","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","tokenizeTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","resolveTable","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","gfm","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","tableData","tableHeader","taskListCheckValueChecked","taskListCheckValueUnchecked","gfmToMarkdown","Copy","CopySuccess","Stop","OllmaApi","streamChat","_settingStore$selecte","abortController","AbortController","reader","getReader","read","textChunk","cancelStream","customCodeBlock","multiLine","clipboard","writeText","highlightedText","Loading","IncomingMessage","Message","onDestroy","customDeleteIcon","copied","setCopied","handleCopy","ChatBoxInputRow","onSend","userMessage","setUserMessage","handleSend","scrollableFeedRef","_scrollableFeedRef$cu2","ScrollableFeed","behavior","_scrollableFeedRef$cu","sendMessage","OLLAMA_CODE","modalRef","_modalRef$current","Warning","Bars3","Navbar","Modal","ChatBox","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","App","reportWebVitals"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.0e1c4cdc.js b/static/js/main.bedeeb68.js similarity index 76% rename from static/js/main.0e1c4cdc.js rename to static/js/main.bedeeb68.js index 246e696..4dc65c5 100644 --- a/static/js/main.0e1c4cdc.js +++ b/static/js/main.bedeeb68.js @@ -1,3 +1,3 @@ -/*! For license information please see main.0e1c4cdc.js.LICENSE.txt */ -(()=>{var e={3240:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=function(e){return"function"===typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},a=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,i=t.call(e,"constructor"),o=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!i&&!o)return!1;for(r in e);return"undefined"===typeof r||t.call(e,r)},l=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},s=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(i)return i(e,n).value}return e[n]};e.exports=function e(){var t,n,r,i,u,c,f=arguments[0],d=1,p=arguments.length,h=!1;for("boolean"===typeof f&&(h=f,f=arguments[1]||{},d=2),(null==f||"object"!==typeof f&&"function"!==typeof f)&&(f={});d{var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,i=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,s=/^\s+|\s+$/g,u="";function c(e){return e?e.replace(s,u):u}e.exports=function(e,s){if("string"!==typeof e)throw new TypeError("First argument must be a string");if(!e)return[];s=s||{};var f=1,d=1;function p(e){var t=e.match(n);t&&(f+=t.length);var r=e.lastIndexOf("\n");d=~r?e.length-r:d+e.length}function h(){var e={line:f,column:d};return function(t){return t.position=new g(e),y(),t}}function g(e){this.start=e,this.end={line:f,column:d},this.source=s.source}g.prototype.content=e;var b=[];function m(t){var n=new Error(s.source+":"+f+":"+d+": "+t);if(n.reason=t,n.filename=s.source,n.line=f,n.column=d,n.source=e,!s.silent)throw n;b.push(n)}function v(t){var n=t.exec(e);if(n){var r=n[0];return p(r),e=e.slice(r.length),n}}function y(){v(r)}function _(e){var t;for(e=e||[];t=w();)!1!==t&&e.push(t);return e}function w(){var t=h();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var n=2;u!=e.charAt(n)&&("*"!=e.charAt(n)||"/"!=e.charAt(n+1));)++n;if(n+=2,u===e.charAt(n-1))return m("End of comment missing");var r=e.slice(2,n-2);return d+=2,p(r),e=e.slice(n),d+=2,t({type:"comment",comment:r})}}function x(){var e=h(),n=v(i);if(n){if(w(),!v(o))return m("property missing ':'");var r=v(a),s=e({type:"declaration",property:c(n[0].replace(t,u)),value:r?c(r[0].replace(t,u)):u});return v(l),s}}return y(),function(){var e,t=[];for(_(t);e=x();)!1!==e&&(t.push(e),_(t));return t}()}},3536:function(e,t,n){var r;e=n.nmd(e),function(){var i,o="Expected a function",a="__lodash_hash_undefined__",l="__lodash_placeholder__",s=16,u=32,c=64,f=128,d=256,p=1/0,h=9007199254740991,g=NaN,b=4294967295,m=[["ary",f],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",u],["partialRight",c],["rearg",d]],v="[object Arguments]",y="[object Array]",_="[object Boolean]",w="[object Date]",x="[object Error]",k="[object Function]",E="[object GeneratorFunction]",S="[object Map]",O="[object Number]",N="[object Object]",C="[object Promise]",P="[object RegExp]",A="[object Set]",j="[object String]",T="[object Symbol]",M="[object WeakMap]",I="[object ArrayBuffer]",D="[object DataView]",R="[object Float32Array]",L="[object Float64Array]",z="[object Int8Array]",F="[object Int16Array]",B="[object Int32Array]",U="[object Uint8Array]",V="[object Uint8ClampedArray]",H="[object Uint16Array]",$="[object Uint32Array]",q=/\b__p \+= '';/g,K=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,Z=/[&<>"']/g,Q=RegExp(G.source),X=RegExp(Z.source),Y=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,ee=/<%=([\s\S]+?)%>/g,te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ne=/^\w*$/,re=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,oe=RegExp(ie.source),ae=/^\s+/,le=/\s/,se=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ue=/\{\n\/\* \[wrapped with (.+)\] \*/,ce=/,? & /,fe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,de=/[()=,{}\[\]\/\s]/,pe=/\\(\\)?/g,he=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ge=/\w*$/,be=/^[-+]0x[0-9a-f]+$/i,me=/^0b[01]+$/i,ve=/^\[object .+?Constructor\]$/,ye=/^0o[0-7]+$/i,_e=/^(?:0|[1-9]\d*)$/,we=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xe=/($^)/,ke=/['\n\r\u2028\u2029\\]/g,Ee="\\ud800-\\udfff",Se="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Oe="\\u2700-\\u27bf",Ne="a-z\\xdf-\\xf6\\xf8-\\xff",Ce="A-Z\\xc0-\\xd6\\xd8-\\xde",Pe="\\ufe0e\\ufe0f",Ae="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",je="['\u2019]",Te="["+Ee+"]",Me="["+Ae+"]",Ie="["+Se+"]",De="\\d+",Re="["+Oe+"]",Le="["+Ne+"]",ze="[^"+Ee+Ae+De+Oe+Ne+Ce+"]",Fe="\\ud83c[\\udffb-\\udfff]",Be="[^"+Ee+"]",Ue="(?:\\ud83c[\\udde6-\\uddff]){2}",Ve="[\\ud800-\\udbff][\\udc00-\\udfff]",He="["+Ce+"]",$e="\\u200d",qe="(?:"+Le+"|"+ze+")",Ke="(?:"+He+"|"+ze+")",We="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Ge="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",Ze="(?:"+Ie+"|"+Fe+")"+"?",Qe="["+Pe+"]?",Xe=Qe+Ze+("(?:"+$e+"(?:"+[Be,Ue,Ve].join("|")+")"+Qe+Ze+")*"),Ye="(?:"+[Re,Ue,Ve].join("|")+")"+Xe,Je="(?:"+[Be+Ie+"?",Ie,Ue,Ve,Te].join("|")+")",et=RegExp(je,"g"),tt=RegExp(Ie,"g"),nt=RegExp(Fe+"(?="+Fe+")|"+Je+Xe,"g"),rt=RegExp([He+"?"+Le+"+"+We+"(?="+[Me,He,"$"].join("|")+")",Ke+"+"+Ge+"(?="+[Me,He+qe,"$"].join("|")+")",He+"?"+qe+"+"+We,He+"+"+Ge,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",De,Ye].join("|"),"g"),it=RegExp("["+$e+Ee+Se+Pe+"]"),ot=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,at=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],lt=-1,st={};st[R]=st[L]=st[z]=st[F]=st[B]=st[U]=st[V]=st[H]=st[$]=!0,st[v]=st[y]=st[I]=st[_]=st[D]=st[w]=st[x]=st[k]=st[S]=st[O]=st[N]=st[P]=st[A]=st[j]=st[M]=!1;var ut={};ut[v]=ut[y]=ut[I]=ut[D]=ut[_]=ut[w]=ut[R]=ut[L]=ut[z]=ut[F]=ut[B]=ut[S]=ut[O]=ut[N]=ut[P]=ut[A]=ut[j]=ut[T]=ut[U]=ut[V]=ut[H]=ut[$]=!0,ut[x]=ut[k]=ut[M]=!1;var ct={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ft=parseFloat,dt=parseInt,pt="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,ht="object"==typeof self&&self&&self.Object===Object&&self,gt=pt||ht||Function("return this")(),bt=t&&!t.nodeType&&t,mt=bt&&e&&!e.nodeType&&e,vt=mt&&mt.exports===bt,yt=vt&&pt.process,_t=function(){try{var e=mt&&mt.require&&mt.require("util").types;return e||yt&&yt.binding&&yt.binding("util")}catch(t){}}(),wt=_t&&_t.isArrayBuffer,xt=_t&&_t.isDate,kt=_t&&_t.isMap,Et=_t&&_t.isRegExp,St=_t&&_t.isSet,Ot=_t&&_t.isTypedArray;function Nt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ct(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function It(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function rn(e,t){for(var n=e.length;n--&&Ht(t,e[n],0)>-1;);return n}var on=Gt({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),an=Gt({"&":"&","<":"<",">":">",'"':""","'":"'"});function ln(e){return"\\"+ct[e]}function sn(e){return it.test(e)}function un(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function cn(e,t){return function(n){return e(t(n))}}function fn(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"});var vn=function e(t){var n=(t=null==t?gt:vn.defaults(gt.Object(),t,vn.pick(gt,at))).Array,r=t.Date,le=t.Error,Ee=t.Function,Se=t.Math,Oe=t.Object,Ne=t.RegExp,Ce=t.String,Pe=t.TypeError,Ae=n.prototype,je=Ee.prototype,Te=Oe.prototype,Me=t["__core-js_shared__"],Ie=je.toString,De=Te.hasOwnProperty,Re=0,Le=function(){var e=/[^.]+$/.exec(Me&&Me.keys&&Me.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),ze=Te.toString,Fe=Ie.call(Oe),Be=gt._,Ue=Ne("^"+Ie.call(De).replace(ie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ve=vt?t.Buffer:i,He=t.Symbol,$e=t.Uint8Array,qe=Ve?Ve.allocUnsafe:i,Ke=cn(Oe.getPrototypeOf,Oe),We=Oe.create,Ge=Te.propertyIsEnumerable,Ze=Ae.splice,Qe=He?He.isConcatSpreadable:i,Xe=He?He.iterator:i,Ye=He?He.toStringTag:i,Je=function(){try{var e=fo(Oe,"defineProperty");return e({},"",{}),e}catch(t){}}(),nt=t.clearTimeout!==gt.clearTimeout&&t.clearTimeout,it=r&&r.now!==gt.Date.now&&r.now,ct=t.setTimeout!==gt.setTimeout&&t.setTimeout,pt=Se.ceil,ht=Se.floor,bt=Oe.getOwnPropertySymbols,mt=Ve?Ve.isBuffer:i,yt=t.isFinite,_t=Ae.join,Bt=cn(Oe.keys,Oe),Gt=Se.max,yn=Se.min,_n=r.now,wn=t.parseInt,xn=Se.random,kn=Ae.reverse,En=fo(t,"DataView"),Sn=fo(t,"Map"),On=fo(t,"Promise"),Nn=fo(t,"Set"),Cn=fo(t,"WeakMap"),Pn=fo(Oe,"create"),An=Cn&&new Cn,jn={},Tn=zo(En),Mn=zo(Sn),In=zo(On),Dn=zo(Nn),Rn=zo(Cn),Ln=He?He.prototype:i,zn=Ln?Ln.valueOf:i,Fn=Ln?Ln.toString:i;function Bn(e){if(tl(e)&&!$a(e)&&!(e instanceof $n)){if(e instanceof Hn)return e;if(De.call(e,"__wrapped__"))return Fo(e)}return new Hn(e)}var Un=function(){function e(){}return function(t){if(!el(t))return{};if(We)return We(t);e.prototype=t;var n=new e;return e.prototype=i,n}}();function Vn(){}function Hn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function $n(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=b,this.__views__=[]}function qn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function sr(e,t,n,r,o,a){var l,s=1&t,u=2&t,c=4&t;if(n&&(l=o?n(e,r,o,a):n(e)),l!==i)return l;if(!el(e))return e;var f=$a(e);if(f){if(l=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&De.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return Pi(e,l)}else{var d=go(e),p=d==k||d==E;if(Ga(e))return ki(e,s);if(d==N||d==v||p&&!o){if(l=u||p?{}:mo(e),!s)return u?function(e,t){return Ai(e,ho(e),t)}(e,function(e,t){return e&&Ai(t,Tl(t),e)}(l,e)):function(e,t){return Ai(e,po(e),t)}(e,ir(l,e))}else{if(!ut[d])return o?e:{};l=function(e,t,n){var r=e.constructor;switch(t){case I:return Ei(e);case _:case w:return new r(+e);case D:return function(e,t){var n=t?Ei(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case R:case L:case z:case F:case B:case U:case V:case H:case $:return Si(e,n);case S:return new r;case O:case j:return new r(e);case P:return function(e){var t=new e.constructor(e.source,ge.exec(e));return t.lastIndex=e.lastIndex,t}(e);case A:return new r;case T:return i=e,zn?Oe(zn.call(i)):{}}var i}(e,d,s)}}a||(a=new Zn);var h=a.get(e);if(h)return h;a.set(e,l),al(e)?e.forEach((function(r){l.add(sr(r,t,n,r,e,a))})):nl(e)&&e.forEach((function(r,i){l.set(i,sr(r,t,n,i,e,a))}));var g=f?i:(c?u?io:ro:u?Tl:jl)(e);return Pt(g||e,(function(r,i){g&&(r=e[i=r]),tr(l,i,sr(r,t,n,i,e,a))})),l}function ur(e,t,n){var r=n.length;if(null==e)return!r;for(e=Oe(e);r--;){var o=n[r],a=t[o],l=e[o];if(l===i&&!(o in e)||!a(l))return!1}return!0}function cr(e,t,n){if("function"!=typeof e)throw new Pe(o);return jo((function(){e.apply(i,n)}),t)}function fr(e,t,n,r){var i=-1,o=Mt,a=!0,l=e.length,s=[],u=t.length;if(!l)return s;n&&(t=Dt(t,Jt(n))),r?(o=It,a=!1):t.length>=200&&(o=tn,a=!1,t=new Gn(t));e:for(;++i-1},Kn.prototype.set=function(e,t){var n=this.__data__,r=nr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Wn.prototype.clear=function(){this.size=0,this.__data__={hash:new qn,map:new(Sn||Kn),string:new qn}},Wn.prototype.delete=function(e){var t=uo(this,e).delete(e);return this.size-=t?1:0,t},Wn.prototype.get=function(e){return uo(this,e).get(e)},Wn.prototype.has=function(e){return uo(this,e).has(e)},Wn.prototype.set=function(e,t){var n=uo(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Gn.prototype.add=Gn.prototype.push=function(e){return this.__data__.set(e,a),this},Gn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.clear=function(){this.__data__=new Kn,this.size=0},Zn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Zn.prototype.get=function(e){return this.__data__.get(e)},Zn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Kn){var r=n.__data__;if(!Sn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Wn(r)}return n.set(e,t),this.size=n.size,this};var dr=Mi(_r),pr=Mi(wr,!0);function hr(e,t){var n=!0;return dr(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function gr(e,t,n){for(var r=-1,o=e.length;++r0&&n(l)?t>1?mr(l,t-1,n,r,i):Rt(i,l):r||(i[i.length]=l)}return i}var vr=Ii(),yr=Ii(!0);function _r(e,t){return e&&vr(e,t,jl)}function wr(e,t){return e&&yr(e,t,jl)}function xr(e,t){return Tt(t,(function(t){return Xa(e[t])}))}function kr(e,t){for(var n=0,r=(t=yi(t,e)).length;null!=e&&nt}function Nr(e,t){return null!=e&&De.call(e,t)}function Cr(e,t){return null!=e&&t in Oe(e)}function Pr(e,t,r){for(var o=r?It:Mt,a=e[0].length,l=e.length,s=l,u=n(l),c=1/0,f=[];s--;){var d=e[s];s&&t&&(d=Dt(d,Jt(t))),c=yn(d.length,c),u[s]=!r&&(t||a>=120&&d.length>=120)?new Gn(s&&d):i}d=e[0];var p=-1,h=u[0];e:for(;++p=l?s:s*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function qr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)l!==e&&Ze.call(l,s,1),Ze.call(e,s,1);return e}function Wr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;yo(i)?Ze.call(e,i,1):fi(e,i)}}return e}function Gr(e,t){return e+ht(xn()*(t-e+1))}function Zr(e,t){var n="";if(!e||t<1||t>h)return n;do{t%2&&(n+=e),(t=ht(t/2))&&(e+=e)}while(t);return n}function Qr(e,t){return To(No(e,t,rs),e+"")}function Xr(e){return Xn(Bl(e))}function Yr(e,t){var n=Bl(e);return Do(n,lr(t,0,n.length))}function Jr(e,t,n,r){if(!el(e))return e;for(var o=-1,a=(t=yi(t,e)).length,l=a-1,s=e;null!=s&&++oo?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var a=n(o);++i>>1,a=e[o];null!==a&&!sl(a)&&(n?a<=t:a=200){var u=t?null:Zi(e);if(u)return dn(u);a=!1,i=tn,s=new Gn}else s=t?[]:l;e:for(;++r=r?e:ri(e,t,n)}var xi=nt||function(e){return gt.clearTimeout(e)};function ki(e,t){if(t)return e.slice();var n=e.length,r=qe?qe(n):new e.constructor(n);return e.copy(r),r}function Ei(e){var t=new e.constructor(e.byteLength);return new $e(t).set(new $e(e)),t}function Si(e,t){var n=t?Ei(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Oi(e,t){if(e!==t){var n=e!==i,r=null===e,o=e===e,a=sl(e),l=t!==i,s=null===t,u=t===t,c=sl(t);if(!s&&!c&&!a&&e>t||a&&l&&u&&!s&&!c||r&&l&&u||!n&&u||!o)return 1;if(!r&&!a&&!c&&e1?n[o-1]:i,l=o>2?n[2]:i;for(a=e.length>3&&"function"==typeof a?(o--,a):i,l&&_o(n[0],n[1],l)&&(a=o<3?i:a,o=1),t=Oe(t);++r-1?o[a?t[l]:l]:i}}function Fi(e){return no((function(t){var n=t.length,r=n,a=Hn.prototype.thru;for(e&&t.reverse();r--;){var l=t[r];if("function"!=typeof l)throw new Pe(o);if(a&&!s&&"wrapper"==ao(l))var s=new Hn([],!0)}for(r=s?r:n;++r1&&_.reverse(),p&&cs))return!1;var c=a.get(e),f=a.get(t);if(c&&f)return c==t&&f==e;var d=-1,p=!0,h=2&n?new Gn:i;for(a.set(e,t),a.set(t,e);++d-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(se,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return Pt(m,(function(n){var r="_."+n[0];t&n[1]&&!Mt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(ue);return t?t[1].split(ce):[]}(r),n)))}function Io(e){var t=0,n=0;return function(){var r=_n(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(i,arguments)}}function Do(e,t){var n=-1,r=e.length,o=r-1;for(t=t===i?r:t;++n1?e[t-1]:i;return n="function"==typeof n?(e.pop(),n):i,oa(e,n)}));function da(e){var t=Bn(e);return t.__chain__=!0,t}function pa(e,t){return t(e)}var ha=no((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return ar(t,e)};return!(t>1||this.__actions__.length)&&r instanceof $n&&yo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:pa,args:[o],thisArg:i}),new Hn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(i),e}))):this.thru(o)}));var ga=ji((function(e,t,n){De.call(e,n)?++e[n]:or(e,n,1)}));var ba=zi(Ho),ma=zi($o);function va(e,t){return($a(e)?Pt:dr)(e,so(t,3))}function ya(e,t){return($a(e)?At:pr)(e,so(t,3))}var _a=ji((function(e,t,n){De.call(e,n)?e[n].push(t):or(e,n,[t])}));var wa=Qr((function(e,t,r){var i=-1,o="function"==typeof t,a=Ka(e)?n(e.length):[];return dr(e,(function(e){a[++i]=o?Nt(t,e,r):Ar(e,t,r)})),a})),xa=ji((function(e,t,n){or(e,n,t)}));function ka(e,t){return($a(e)?Dt:Fr)(e,so(t,3))}var Ea=ji((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var Sa=Qr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&_o(e,t[0],t[1])?t=[]:n>2&&_o(t[0],t[1],t[2])&&(t=[t[0]]),$r(e,mr(t,1),[])})),Oa=it||function(){return gt.Date.now()};function Na(e,t,n){return t=n?i:t,t=e&&null==t?e.length:t,Xi(e,f,i,i,i,i,t)}function Ca(e,t){var n;if("function"!=typeof t)throw new Pe(o);return e=hl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=i),n}}var Pa=Qr((function(e,t,n){var r=1;if(n.length){var i=fn(n,lo(Pa));r|=u}return Xi(e,r,t,n,i)})),Aa=Qr((function(e,t,n){var r=3;if(n.length){var i=fn(n,lo(Aa));r|=u}return Xi(t,r,e,n,i)}));function ja(e,t,n){var r,a,l,s,u,c,f=0,d=!1,p=!1,h=!0;if("function"!=typeof e)throw new Pe(o);function g(t){var n=r,o=a;return r=a=i,f=t,s=e.apply(o,n)}function b(e){var n=e-c;return c===i||n>=t||n<0||p&&e-f>=l}function m(){var e=Oa();if(b(e))return v(e);u=jo(m,function(e){var n=t-(e-c);return p?yn(n,l-(e-f)):n}(e))}function v(e){return u=i,h&&r?g(e):(r=a=i,s)}function y(){var e=Oa(),n=b(e);if(r=arguments,a=this,c=e,n){if(u===i)return function(e){return f=e,u=jo(m,t),d?g(e):s}(c);if(p)return xi(u),u=jo(m,t),g(c)}return u===i&&(u=jo(m,t)),s}return t=bl(t)||0,el(n)&&(d=!!n.leading,l=(p="maxWait"in n)?Gt(bl(n.maxWait)||0,t):l,h="trailing"in n?!!n.trailing:h),y.cancel=function(){u!==i&&xi(u),f=0,r=c=a=u=i},y.flush=function(){return u===i?s:v(Oa())},y}var Ta=Qr((function(e,t){return cr(e,1,t)})),Ma=Qr((function(e,t,n){return cr(e,bl(t)||0,n)}));function Ia(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Pe(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Ia.Cache||Wn),n}function Da(e){if("function"!=typeof e)throw new Pe(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Ia.Cache=Wn;var Ra=_i((function(e,t){var n=(t=1==t.length&&$a(t[0])?Dt(t[0],Jt(so())):Dt(mr(t,1),Jt(so()))).length;return Qr((function(r){for(var i=-1,o=yn(r.length,n);++i=t})),Ha=jr(function(){return arguments}())?jr:function(e){return tl(e)&&De.call(e,"callee")&&!Ge.call(e,"callee")},$a=n.isArray,qa=wt?Jt(wt):function(e){return tl(e)&&Sr(e)==I};function Ka(e){return null!=e&&Ja(e.length)&&!Xa(e)}function Wa(e){return tl(e)&&Ka(e)}var Ga=mt||bs,Za=xt?Jt(xt):function(e){return tl(e)&&Sr(e)==w};function Qa(e){if(!tl(e))return!1;var t=Sr(e);return t==x||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!il(e)}function Xa(e){if(!el(e))return!1;var t=Sr(e);return t==k||t==E||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ya(e){return"number"==typeof e&&e==hl(e)}function Ja(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=h}function el(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function tl(e){return null!=e&&"object"==typeof e}var nl=kt?Jt(kt):function(e){return tl(e)&&go(e)==S};function rl(e){return"number"==typeof e||tl(e)&&Sr(e)==O}function il(e){if(!tl(e)||Sr(e)!=N)return!1;var t=Ke(e);if(null===t)return!0;var n=De.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Ie.call(n)==Fe}var ol=Et?Jt(Et):function(e){return tl(e)&&Sr(e)==P};var al=St?Jt(St):function(e){return tl(e)&&go(e)==A};function ll(e){return"string"==typeof e||!$a(e)&&tl(e)&&Sr(e)==j}function sl(e){return"symbol"==typeof e||tl(e)&&Sr(e)==T}var ul=Ot?Jt(Ot):function(e){return tl(e)&&Ja(e.length)&&!!st[Sr(e)]};var cl=Ki(zr),fl=Ki((function(e,t){return e<=t}));function dl(e){if(!e)return[];if(Ka(e))return ll(e)?gn(e):Pi(e);if(Xe&&e[Xe])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Xe]());var t=go(e);return(t==S?un:t==A?dn:Bl)(e)}function pl(e){return e?(e=bl(e))===p||e===-1/0?17976931348623157e292*(e<0?-1:1):e===e?e:0:0===e?e:0}function hl(e){var t=pl(e),n=t%1;return t===t?n?t-n:t:0}function gl(e){return e?lr(hl(e),0,b):0}function bl(e){if("number"==typeof e)return e;if(sl(e))return g;if(el(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=el(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Yt(e);var n=me.test(e);return n||ye.test(e)?dt(e.slice(2),n?2:8):be.test(e)?g:+e}function ml(e){return Ai(e,Tl(e))}function vl(e){return null==e?"":ui(e)}var yl=Ti((function(e,t){if(Eo(t)||Ka(t))Ai(t,jl(t),e);else for(var n in t)De.call(t,n)&&tr(e,n,t[n])})),_l=Ti((function(e,t){Ai(t,Tl(t),e)})),wl=Ti((function(e,t,n,r){Ai(t,Tl(t),e,r)})),xl=Ti((function(e,t,n,r){Ai(t,jl(t),e,r)})),kl=no(ar);var El=Qr((function(e,t){e=Oe(e);var n=-1,r=t.length,o=r>2?t[2]:i;for(o&&_o(t[0],t[1],o)&&(r=1);++n1),t})),Ai(e,io(e),n),r&&(n=sr(n,7,eo));for(var i=t.length;i--;)fi(n,t[i]);return n}));var Rl=no((function(e,t){return null==e?{}:function(e,t){return qr(e,t,(function(t,n){return Nl(e,n)}))}(e,t)}));function Ll(e,t){if(null==e)return{};var n=Dt(io(e),(function(e){return[e]}));return t=so(t),qr(e,n,(function(e,n){return t(e,n[0])}))}var zl=Qi(jl),Fl=Qi(Tl);function Bl(e){return null==e?[]:en(e,jl(e))}var Ul=Ri((function(e,t,n){return t=t.toLowerCase(),e+(n?Vl(t):t)}));function Vl(e){return Ql(vl(e).toLowerCase())}function Hl(e){return(e=vl(e))&&e.replace(we,on).replace(tt,"")}var $l=Ri((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),ql=Ri((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Kl=Di("toLowerCase");var Wl=Ri((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Gl=Ri((function(e,t,n){return e+(n?" ":"")+Ql(t)}));var Zl=Ri((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ql=Di("toUpperCase");function Xl(e,t,n){return e=vl(e),(t=n?i:t)===i?function(e){return ot.test(e)}(e)?function(e){return e.match(rt)||[]}(e):function(e){return e.match(fe)||[]}(e):e.match(t)||[]}var Yl=Qr((function(e,t){try{return Nt(e,i,t)}catch(n){return Qa(n)?n:new le(n)}})),Jl=no((function(e,t){return Pt(t,(function(t){t=Lo(t),or(e,t,Pa(e[t],e))})),e}));function es(e){return function(){return e}}var ts=Fi(),ns=Fi(!0);function rs(e){return e}function is(e){return Dr("function"==typeof e?e:sr(e,1))}var os=Qr((function(e,t){return function(n){return Ar(n,e,t)}})),as=Qr((function(e,t){return function(n){return Ar(e,n,t)}}));function ls(e,t,n){var r=jl(t),i=xr(t,r);null!=n||el(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=xr(t,jl(t)));var o=!(el(n)&&"chain"in n)||!!n.chain,a=Xa(e);return Pt(i,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=Pi(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,Rt([this.value()],arguments))})})),e}function ss(){}var us=Hi(Dt),cs=Hi(jt),fs=Hi(Ft);function ds(e){return wo(e)?Wt(Lo(e)):function(e){return function(t){return kr(t,e)}}(e)}var ps=qi(),hs=qi(!0);function gs(){return[]}function bs(){return!1}var ms=Vi((function(e,t){return e+t}),0),vs=Gi("ceil"),ys=Vi((function(e,t){return e/t}),1),_s=Gi("floor");var ws=Vi((function(e,t){return e*t}),1),xs=Gi("round"),ks=Vi((function(e,t){return e-t}),0);return Bn.after=function(e,t){if("function"!=typeof t)throw new Pe(o);return e=hl(e),function(){if(--e<1)return t.apply(this,arguments)}},Bn.ary=Na,Bn.assign=yl,Bn.assignIn=_l,Bn.assignInWith=wl,Bn.assignWith=xl,Bn.at=kl,Bn.before=Ca,Bn.bind=Pa,Bn.bindAll=Jl,Bn.bindKey=Aa,Bn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return $a(e)?e:[e]},Bn.chain=da,Bn.chunk=function(e,t,r){t=(r?_o(e,t,r):t===i)?1:Gt(hl(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var a=0,l=0,s=n(pt(o/t));ao?0:o+n),(r=r===i||r>o?o:hl(r))<0&&(r+=o),r=n>r?0:gl(r);n>>0)?(e=vl(e))&&("string"==typeof t||null!=t&&!ol(t))&&!(t=ui(t))&&sn(e)?wi(gn(e),0,n):e.split(t,n):[]},Bn.spread=function(e,t){if("function"!=typeof e)throw new Pe(o);return t=null==t?0:Gt(hl(t),0),Qr((function(n){var r=n[t],i=wi(n,0,t);return r&&Rt(i,r),Nt(e,this,i)}))},Bn.tail=function(e){var t=null==e?0:e.length;return t?ri(e,1,t):[]},Bn.take=function(e,t,n){return e&&e.length?ri(e,0,(t=n||t===i?1:hl(t))<0?0:t):[]},Bn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?ri(e,(t=r-(t=n||t===i?1:hl(t)))<0?0:t,r):[]},Bn.takeRightWhile=function(e,t){return e&&e.length?pi(e,so(t,3),!1,!0):[]},Bn.takeWhile=function(e,t){return e&&e.length?pi(e,so(t,3)):[]},Bn.tap=function(e,t){return t(e),e},Bn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new Pe(o);return el(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),ja(e,t,{leading:r,maxWait:t,trailing:i})},Bn.thru=pa,Bn.toArray=dl,Bn.toPairs=zl,Bn.toPairsIn=Fl,Bn.toPath=function(e){return $a(e)?Dt(e,Lo):sl(e)?[e]:Pi(Ro(vl(e)))},Bn.toPlainObject=ml,Bn.transform=function(e,t,n){var r=$a(e),i=r||Ga(e)||ul(e);if(t=so(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:el(e)&&Xa(o)?Un(Ke(e)):{}}return(i?Pt:_r)(e,(function(e,r,i){return t(n,e,r,i)})),n},Bn.unary=function(e){return Na(e,1)},Bn.union=ta,Bn.unionBy=na,Bn.unionWith=ra,Bn.uniq=function(e){return e&&e.length?ci(e):[]},Bn.uniqBy=function(e,t){return e&&e.length?ci(e,so(t,2)):[]},Bn.uniqWith=function(e,t){return t="function"==typeof t?t:i,e&&e.length?ci(e,i,t):[]},Bn.unset=function(e,t){return null==e||fi(e,t)},Bn.unzip=ia,Bn.unzipWith=oa,Bn.update=function(e,t,n){return null==e?e:di(e,t,vi(n))},Bn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:i,null==e?e:di(e,t,vi(n),r)},Bn.values=Bl,Bn.valuesIn=function(e){return null==e?[]:en(e,Tl(e))},Bn.without=aa,Bn.words=Xl,Bn.wrap=function(e,t){return La(vi(t),e)},Bn.xor=la,Bn.xorBy=sa,Bn.xorWith=ua,Bn.zip=ca,Bn.zipObject=function(e,t){return bi(e||[],t||[],tr)},Bn.zipObjectDeep=function(e,t){return bi(e||[],t||[],Jr)},Bn.zipWith=fa,Bn.entries=zl,Bn.entriesIn=Fl,Bn.extend=_l,Bn.extendWith=wl,ls(Bn,Bn),Bn.add=ms,Bn.attempt=Yl,Bn.camelCase=Ul,Bn.capitalize=Vl,Bn.ceil=vs,Bn.clamp=function(e,t,n){return n===i&&(n=t,t=i),n!==i&&(n=(n=bl(n))===n?n:0),t!==i&&(t=(t=bl(t))===t?t:0),lr(bl(e),t,n)},Bn.clone=function(e){return sr(e,4)},Bn.cloneDeep=function(e){return sr(e,5)},Bn.cloneDeepWith=function(e,t){return sr(e,5,t="function"==typeof t?t:i)},Bn.cloneWith=function(e,t){return sr(e,4,t="function"==typeof t?t:i)},Bn.conformsTo=function(e,t){return null==t||ur(e,t,jl(t))},Bn.deburr=Hl,Bn.defaultTo=function(e,t){return null==e||e!==e?t:e},Bn.divide=ys,Bn.endsWith=function(e,t,n){e=vl(e),t=ui(t);var r=e.length,o=n=n===i?r:lr(hl(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},Bn.eq=Ba,Bn.escape=function(e){return(e=vl(e))&&X.test(e)?e.replace(Z,an):e},Bn.escapeRegExp=function(e){return(e=vl(e))&&oe.test(e)?e.replace(ie,"\\$&"):e},Bn.every=function(e,t,n){var r=$a(e)?jt:hr;return n&&_o(e,t,n)&&(t=i),r(e,so(t,3))},Bn.find=ba,Bn.findIndex=Ho,Bn.findKey=function(e,t){return Ut(e,so(t,3),_r)},Bn.findLast=ma,Bn.findLastIndex=$o,Bn.findLastKey=function(e,t){return Ut(e,so(t,3),wr)},Bn.floor=_s,Bn.forEach=va,Bn.forEachRight=ya,Bn.forIn=function(e,t){return null==e?e:vr(e,so(t,3),Tl)},Bn.forInRight=function(e,t){return null==e?e:yr(e,so(t,3),Tl)},Bn.forOwn=function(e,t){return e&&_r(e,so(t,3))},Bn.forOwnRight=function(e,t){return e&&wr(e,so(t,3))},Bn.get=Ol,Bn.gt=Ua,Bn.gte=Va,Bn.has=function(e,t){return null!=e&&bo(e,t,Nr)},Bn.hasIn=Nl,Bn.head=Ko,Bn.identity=rs,Bn.includes=function(e,t,n,r){e=Ka(e)?e:Bl(e),n=n&&!r?hl(n):0;var i=e.length;return n<0&&(n=Gt(i+n,0)),ll(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&Ht(e,t,n)>-1},Bn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:hl(n);return i<0&&(i=Gt(r+i,0)),Ht(e,t,i)},Bn.inRange=function(e,t,n){return t=pl(t),n===i?(n=t,t=0):n=pl(n),function(e,t,n){return e>=yn(t,n)&&e=-9007199254740991&&e<=h},Bn.isSet=al,Bn.isString=ll,Bn.isSymbol=sl,Bn.isTypedArray=ul,Bn.isUndefined=function(e){return e===i},Bn.isWeakMap=function(e){return tl(e)&&go(e)==M},Bn.isWeakSet=function(e){return tl(e)&&"[object WeakSet]"==Sr(e)},Bn.join=function(e,t){return null==e?"":_t.call(e,t)},Bn.kebabCase=$l,Bn.last=Qo,Bn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=hl(n))<0?Gt(r+o,0):yn(o,r-1)),t===t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):Vt(e,qt,o,!0)},Bn.lowerCase=ql,Bn.lowerFirst=Kl,Bn.lt=cl,Bn.lte=fl,Bn.max=function(e){return e&&e.length?gr(e,rs,Or):i},Bn.maxBy=function(e,t){return e&&e.length?gr(e,so(t,2),Or):i},Bn.mean=function(e){return Kt(e,rs)},Bn.meanBy=function(e,t){return Kt(e,so(t,2))},Bn.min=function(e){return e&&e.length?gr(e,rs,zr):i},Bn.minBy=function(e,t){return e&&e.length?gr(e,so(t,2),zr):i},Bn.stubArray=gs,Bn.stubFalse=bs,Bn.stubObject=function(){return{}},Bn.stubString=function(){return""},Bn.stubTrue=function(){return!0},Bn.multiply=ws,Bn.nth=function(e,t){return e&&e.length?Hr(e,hl(t)):i},Bn.noConflict=function(){return gt._===this&&(gt._=Be),this},Bn.noop=ss,Bn.now=Oa,Bn.pad=function(e,t,n){e=vl(e);var r=(t=hl(t))?hn(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return $i(ht(i),n)+e+$i(pt(i),n)},Bn.padEnd=function(e,t,n){e=vl(e);var r=(t=hl(t))?hn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=xn();return yn(e+o*(t-e+ft("1e-"+((o+"").length-1))),t)}return Gr(e,t)},Bn.reduce=function(e,t,n){var r=$a(e)?Lt:Zt,i=arguments.length<3;return r(e,so(t,4),n,i,dr)},Bn.reduceRight=function(e,t,n){var r=$a(e)?zt:Zt,i=arguments.length<3;return r(e,so(t,4),n,i,pr)},Bn.repeat=function(e,t,n){return t=(n?_o(e,t,n):t===i)?1:hl(t),Zr(vl(e),t)},Bn.replace=function(){var e=arguments,t=vl(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Bn.result=function(e,t,n){var r=-1,o=(t=yi(t,e)).length;for(o||(o=1,e=i);++rh)return[];var n=b,r=yn(e,b);t=so(t),e-=b;for(var i=Xt(r,t);++n=a)return e;var s=n-hn(r);if(s<1)return r;var u=l?wi(l,0,s).join(""):e.slice(0,s);if(o===i)return u+r;if(l&&(s+=u.length-s),ol(o)){if(e.slice(s).search(o)){var c,f=u;for(o.global||(o=Ne(o.source,vl(ge.exec(o))+"g")),o.lastIndex=0;c=o.exec(f);)var d=c.index;u=u.slice(0,d===i?s:d)}}else if(e.indexOf(ui(o),s)!=s){var p=u.lastIndexOf(o);p>-1&&(u=u.slice(0,p))}return u+r},Bn.unescape=function(e){return(e=vl(e))&&Q.test(e)?e.replace(G,mn):e},Bn.uniqueId=function(e){var t=++Re;return vl(e)+t},Bn.upperCase=Zl,Bn.upperFirst=Ql,Bn.each=va,Bn.eachRight=ya,Bn.first=Ko,ls(Bn,function(){var e={};return _r(Bn,(function(t,n){De.call(Bn.prototype,n)||(e[n]=t)})),e}(),{chain:!1}),Bn.VERSION="4.17.21",Pt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Bn[e].placeholder=Bn})),Pt(["drop","take"],(function(e,t){$n.prototype[e]=function(n){n=n===i?1:Gt(hl(n),0);var r=this.__filtered__&&!t?new $n(this):this.clone();return r.__filtered__?r.__takeCount__=yn(n,r.__takeCount__):r.__views__.push({size:yn(n,b),type:e+(r.__dir__<0?"Right":"")}),r},$n.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),Pt(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;$n.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:so(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),Pt(["head","last"],(function(e,t){var n="take"+(t?"Right":"");$n.prototype[e]=function(){return this[n](1).value()[0]}})),Pt(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");$n.prototype[e]=function(){return this.__filtered__?new $n(this):this[n](1)}})),$n.prototype.compact=function(){return this.filter(rs)},$n.prototype.find=function(e){return this.filter(e).head()},$n.prototype.findLast=function(e){return this.reverse().find(e)},$n.prototype.invokeMap=Qr((function(e,t){return"function"==typeof e?new $n(this):this.map((function(n){return Ar(n,e,t)}))})),$n.prototype.reject=function(e){return this.filter(Da(so(e)))},$n.prototype.slice=function(e,t){e=hl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new $n(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==i&&(n=(t=hl(t))<0?n.dropRight(-t):n.take(t-e)),n)},$n.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},$n.prototype.toArray=function(){return this.take(b)},_r($n.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=Bn[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);o&&(Bn.prototype[t]=function(){var t=this.__wrapped__,l=r?[1]:arguments,s=t instanceof $n,u=l[0],c=s||$a(t),f=function(e){var t=o.apply(Bn,Rt([e],l));return r&&d?t[0]:t};c&&n&&"function"==typeof u&&1!=u.length&&(s=c=!1);var d=this.__chain__,p=!!this.__actions__.length,h=a&&!d,g=s&&!p;if(!a&&c){t=g?t:new $n(this);var b=e.apply(t,l);return b.__actions__.push({func:pa,args:[f],thisArg:i}),new Hn(b,d)}return h&&g?e.apply(this,l):(b=this.thru(f),h?r?b.value()[0]:b.value():b)})})),Pt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Ae[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Bn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply($a(i)?i:[],e)}return this[n]((function(n){return t.apply($a(n)?n:[],e)}))}})),_r($n.prototype,(function(e,t){var n=Bn[t];if(n){var r=n.name+"";De.call(jn,r)||(jn[r]=[]),jn[r].push({name:t,func:n})}})),jn[Bi(i,2).name]=[{name:"wrapper",func:i}],$n.prototype.clone=function(){var e=new $n(this.__wrapped__);return e.__actions__=Pi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Pi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Pi(this.__views__),e},$n.prototype.reverse=function(){if(this.__filtered__){var e=new $n(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},$n.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=$a(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?i:this.__values__[this.__index__++]}},Bn.prototype.plant=function(e){for(var t,n=this;n instanceof Vn;){var r=Fo(n);r.__index__=0,r.__values__=i,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},Bn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof $n){var t=e;return this.__actions__.length&&(t=new $n(this)),(t=t.reverse()).__actions__.push({func:pa,args:[ea],thisArg:i}),new Hn(t,this.__chain__)}return this.thru(ea)},Bn.prototype.toJSON=Bn.prototype.valueOf=Bn.prototype.value=function(){return hi(this.__wrapped__,this.__actions__)},Bn.prototype.first=Bn.prototype.head,Xe&&(Bn.prototype[Xe]=function(){return this}),Bn}();gt._=vn,(r=function(){return vn}.call(t,n,t,e))===i||(e.exports=r)}.call(this)},2730:(e,t,n)=>{"use strict";var r=n(5043),i=n(8853);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\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 return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\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 return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\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 === 'attentionSequence' &&\n events[open][1]._open &&\n // 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 }\n\n // Number of markers to use from the sequence.\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 const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a
c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\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 return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\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 if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\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 if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\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\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\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\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\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 const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\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 let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\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 if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\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 /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\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// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(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\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 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 // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {import('unist-util-visit-parents').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').ConstructName} ConstructName\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can’t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\n\nemphasis.peek = emphasisPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker)\n exit()\n return value\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').State} State\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../types.js').State} State\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there’s a url…\n node.url &&\n // And there’s a no title…\n !node.title &&\n // And the content of `node` is a single text node…\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content…\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Exit} Exit\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkStrong} from '../util/check-strong.js'\n\nstrong.peek = strongPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker + marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker + marker)\n exit()\n return value\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there’s no info…\n !node.lang &&\n // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n","/**\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there’s no url, or…\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size…\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value =\n '&#x' +\n value.charCodeAt(0).toString(16).toUpperCase() +\n ';' +\n value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../types.js').State} State\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there’s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there’s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return fn.call(state, node, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n }\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: .\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [singleTilde=true]\n * Whether to support strikethrough with a single tilde (default: `true`).\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\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 /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\n splice(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 splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0]\n })\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n )\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly} context\n * @param {Readonly} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly} map\n * @param {Readonly} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Readonly>} events\n * @param {number} index\n * @returns {Readonly}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\n }\n}\n","/// \n/// \n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-gfm').Options} MdastOptions\n * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {MicromarkOptions & MdastOptions} Options\n * Configuration.\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n","export default function Copy({ className = '' }: { className?: string }) {\n return (\n \n \n \n )\n}\n","export default function CopySuccess({ className = '' }: { className?: string }) {\n return (\n \n \n \n )\n}\n","export default function Stop() {\n return (\n \n \n \n )\n}\n","import { chatStore } from '../models/ChatStore'\nimport { DefaultHost, settingStore } from '../models/SettingStore'\n\ntype OllamaResponse = {\n model: string\n created_at: string\n message: {\n role: 'assistant'\n content: string\n // images: null\n }\n done: boolean\n}\n\nexport class OllmaApi {\n private static abortController?: AbortController\n\n static async *streamChat() {\n const model = settingStore.selectedModel?.name\n if (!model) return\n\n const host = settingStore.host || DefaultHost\n const chat = chatStore.selectedChat!\n OllmaApi.abortController = new AbortController()\n\n chat.createIncomingMessage(model)\n\n const messages = chat.messages.map(message => {\n if (message.fromBot) {\n return { role: 'assistant', content: message.content }\n }\n\n return { role: 'user', content: message.content }\n })\n\n const response = await fetch(host + '/api/chat', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ model, messages }),\n signal: OllmaApi.abortController.signal,\n })\n\n if (!response.body) return\n\n const reader = response.body.getReader()\n\n while (true) {\n const { done, value } = await reader.read()\n\n if (done) {\n break\n }\n\n // Decode the received value and parse\n const textChunk = new TextDecoder().decode(value)\n\n const data = JSON.parse(textChunk) as OllamaResponse\n\n if (data.done) break\n\n yield data.message.content\n }\n\n this.abortController = undefined\n }\n\n static cancelStream() {\n if (!OllmaApi.abortController) return\n\n OllmaApi.abortController.abort('Stream ended manually')\n\n OllmaApi.abortController = undefined\n }\n}\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/common.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","import Markdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport { PropsWithChildren, useMemo, useState } from 'react'\nimport { observer } from 'mobx-react-lite'\n\nimport Delete from '../icons/Delete'\nimport Copy from '../icons/Copy'\nimport CopySuccess from '../icons/CopySuccess'\nimport Stop from '../icons/Stop'\n\nimport { IMessageModel } from '../models/ChatModel'\nimport { chatStore } from '../models/ChatStore'\nimport { OllmaApi } from '../utils/OllamaApi'\n\nimport hljs from 'highlight.js/lib/common'\n\nconst customCodeBlock = (props: React.HTMLAttributes) => {\n const { children, className = '', ...rest } = props\n\n const text = children?.toString() || ''\n\n const multiLine = text.includes('\\n')\n\n const copy = () => navigator.clipboard.writeText(text)\n\n const highlightedText = useMemo(() => {\n return hljs.highlightAuto(text).value\n }, [text])\n\n if (multiLine) {\n return (\n
\n \n \n \n\n \n
\n )\n }\n\n return {children}\n}\n\nconst Loading = () => (\n \n)\n\n// this one is observed for incoming text changes, the rest do not need to be observed\nexport const IncomingMessage = observer(() => {\n const incomingMessage = chatStore.selectedChat!.incomingMessage\n\n // checking for content also tells the observer to re-render\n if (!incomingMessage?.content) return null\n\n return (\n }\n >\n \n \n )\n})\n\ntype MessageProps = PropsWithChildren<{\n message: IMessageModel\n loading?: boolean\n onDestroy: () => void\n customDeleteIcon?: React.ReactNode\n}>\n\nexport const Message = ({ message, onDestroy, children, customDeleteIcon }: MessageProps) => {\n const { content, fromBot, uniqId } = message\n\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(content)\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n }\n\n return (\n \n
\n \n {content}\n \n
\n\n {children}\n\n
\n \n\n \n \n \n
\n
\n )\n}\n","import { useEffect, useRef, useState, useCallback, PropsWithChildren } from 'react'\nimport _ from 'lodash'\nimport { observer } from 'mobx-react-lite'\nimport ScrollableFeed from 'react-scrollable-feed'\n\nimport { chatStore } from '../models/ChatStore'\nimport { settingStore } from '../models/SettingStore'\n\nimport { IncomingMessage, Message } from './Message'\nimport { OllmaApi } from '../utils/OllamaApi'\nimport Paperclip from '../icons/Paperclip'\n\nconst ChatBoxInputRow = observer(\n ({ onSend, children }: PropsWithChildren<{ onSend: (message: string) => void }>) => {\n const inputRef = useRef(null)\n\n const onFormSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n\n const userMessage = inputRef.current?.value || ''\n\n if (!userMessage || !inputRef.current) return\n\n onSend(userMessage)\n\n inputRef.current.value = ''\n inputRef.current.focus()\n }\n\n const noServer = !settingStore.selectedModel\n\n return (\n
\n
\n \n\n {children || (\n \n )}\n \n
\n )\n },\n)\n\nconst ChatBox = observer(() => {\n const chat = chatStore.selectedChat\n\n const scrollableFeedRef = useRef(null)\n\n const sendMessage = async () => {\n if (!chat) return\n\n try {\n for await (const message of OllmaApi.streamChat()) {\n chat.updateIncomingMessage(message)\n scrollToBottom()\n }\n } catch (e) {\n // TODO: do not add this to the text but instead make it a boolean failed\n chat.updateIncomingMessage('\\n -- Communication stopped with server --')\n } finally {\n chat.commitIncomingMessage()\n\n scrollableFeedRef.current?.scrollToBottom()\n }\n }\n\n // only scroll every 1.5 seconds max\n const scrollToBottom = useCallback(\n _.throttle(() => {\n console.log('scrolling to bottom')\n scrollableFeedRef.current?.scrollToBottom()\n }, 1500),\n [scrollableFeedRef?.current],\n )\n\n useEffect(() => {\n //no op\n\n //cleanup\n return OllmaApi.cancelStream\n }, [])\n\n if (!chat) return null\n\n const handleMessageToSend = (userMessage: string) => {\n if (!userMessage) return\n console.timeLog('handling message')\n chat.addUserMessage(userMessage)\n\n sendMessage()\n }\n\n return (\n
\n element.scrollBy({ top: offset, behavior: 'smooth' })}\n >\n {chat.messages.map(message => (\n chat.deleteMessage(message.uniqId)}\n />\n ))}\n\n {chat.isGettingData && }\n \n\n \n {chat.isGettingData && (\n \n )}\n \n
\n )\n})\n\nexport default ChatBox\n","import { observer } from 'mobx-react-lite'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { settingStore } from '../models/SettingStore'\n\nimport Copy from '../icons/Copy'\nimport CopySuccess from '../icons/CopySuccess'\n\nconst OLLAMA_CODE = 'OLLAMA_ORIGINS=*.github.io ollama serve'\n\nconst Modal = observer(() => {\n const modalRef = useRef(null)\n\n const selectedModel = settingStore.selectedModel\n\n const [copied, setCopied] = useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(OLLAMA_CODE)\n setCopied(true)\n setTimeout(() => setCopied(false), 1500)\n }\n\n useEffect(() => {\n if (selectedModel) return\n\n let timeout = setTimeout(() => {\n modalRef.current?.showModal()\n }, 1500)\n\n return () => clearTimeout(timeout)\n }, [selectedModel])\n\n return (\n \n
\n

How to connect to Ollama Server:

\n\n
\n

By default, Ollama allows cross origin requests from 127.0.0.1 and 0.0.0.0.

{' '}\n

\n To use custom origins (like this one), you can set OLLAMA_ORIGINS when starting ollama:\n

\n
\n\n
\n
\n {OLLAMA_CODE}\n
\n\n \n \n \n \n
\n\n
\n
\n \n
\n
\n
\n\n
\n {/* close button */}\n
\n )\n})\n\nexport default Modal\n","export default function Warning() {\n return (\n \n \n \n )\n}\n","export default function Bars3() {\n return (\n \n \n \n )\n}\n","import _ from 'lodash'\nimport { observer } from 'mobx-react-lite'\n\nimport { SideBar } from './components/SideBar'\nimport Drawer from './components/Drawer'\nimport ChatBox from './components/ChatBox'\nimport Modal from './components/Modal'\n\nimport { settingStore } from './models/SettingStore'\n\nimport Warning from './icons/Warning'\nimport Bars3 from './icons/Bars3'\n\n// import './App.css'\nimport 'highlight.js/styles/github.css'\n\nconst Navbar = observer(() => {\n const noServer = !settingStore.selectedModel\n\n return (\n \n )\n})\n\nfunction App() {\n return (\n
\n
\n \n\n \n\n \n\n
\n \n\n
\n \n
\n
\n
\n
\n )\n}\n\nexport default App\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React, { Suspense } from 'react'\nimport ReactDOM from 'react-dom/client'\nimport './index.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)\nroot.render(\n \n Loading...
}>\n \n \n ,\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","trimmedEndIndex","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","split","asciiToArray","unescapeHtmlChar","_","runInContext","context","defaults","pick","Date","Math","String","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","aa","ca","p","a","b","encodeURIComponent","da","ea","fa","ha","ia","window","document","createElement","ja","ka","la","ma","v","d","f","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","l","h","k","displayName","Pa","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","location","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","tel","text","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","pf","qf","rf","sf","capture","passive","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","console","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","_status","_result","default","Children","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","inst","hljs","registerLanguage","HighlightJS","deepFreeze","freeze","getOwnPropertyNames","isFrozen","Response","isMatchIgnored","ignoreMatch","escapeHTML","inherit$1","original","_len","objects","_key","emitsWrappingTags","scope","HTMLRenderer","parseTree","classPrefix","walk","addText","openNode","className","scopeToCSSClass","_ref","pieces","span","closeNode","newNode","opts","TokenTree","rootNode","closeAllNodes","builder","_walk","_collapse","TokenTreeEmitter","super","startScope","endScope","__addSublanguage","emitter","toHTML","finalize","lookahead","anyNumberOfTimes","optional","_len2","_key2","either","_len3","_key3","stripOptionsFromArgs","countMatchGroups","BACKREF_RE","_rewriteBackreferences","regexps","_ref2","joinWith","numCaptures","regex","out","Number","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","illegal","QUOTE_STRING_MODE","COMMENT","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","END_SAME_AS_BEGIN","on:begin","resp","_beginMatch","on:end","MATCH_NOTHING_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","skipIfHasPrecedingDot","response","scopeClassName","_parent","beginKeywords","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","keyword","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","warn","_len4","_key4","deprecated","MultiClassError","remapScopeNames","regexes","_ref3","scopeNames","emit","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","addRule","compile","terminators","matcherRe","s","ResumableMultiRegex","multiRegexes","regexIndex","getMatcher","matcher","_ref4","resumingScanAtSamePosition","considerAll","m2","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","term","rule","buildModeRegex","HTMLInjectionError","html","inherit","NO_MATCH","HLJS","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","matchText","kind","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","_top","highlightAuto","_emitter","processSubLanguage","emitMultiClass","klass","startNewMode","endOfMode","matchPlusRemainder","matched","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","badRule","newMode","beforeCallbacks","doBeginMatch","processed","iterations","getLanguage","list","item","processContinuations","__emitTokens","processedCount","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","autoDetection","sorted","supersetOf","best","secondBest","highlightElement","block","classes","_class","blockLanguage","highlighted","currentLang","resultLang","classList","updateClassName","wantsHighlight","highlightAll","readyState","registerAliases","aliasList","_ref5","alias","lang","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","languageDefinition","error$1","rawDefinition","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","debugMode","safeMode","versionString","newInstance","VAR","BRACED_VAR","SUBST","HERE_DOC","QUOTE_STRING","ARITHMETIC","KNOWN_SHEBANG","FUNCTION","literal","built_in","DECLTYPE_AUTO_RE","NAMESPACE_RE","FUNCTION_TYPE_RE","TYPES","STRINGS","NUMBERS","PREPROCESSOR","FUNCTION_TITLE","KEYWORDS","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","preprocessor","strings","CPP_PRIMITIVE_TYPES","CPP_KEYWORDS","_type_hints","FUNCTION_DISPATCH","_hint","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","STRING","GENERIC_MODIFIER","TYPE_IDENT_RE","AT_IDENTIFIER","TAGS","MEDIA_FEATURES","PSEUDO_CLASSES","PSEUDO_ELEMENTS","ATTRIBUTES","modes","IMPORTANT","BLOCK_COMMENT","HEXCOLOR","ATTRIBUTE_SELECTOR_MODE","CSS_NUMBER_MODE","CSS_VARIABLE","keyframePosition","attribute","COMMENTS","VARIABLES","LITERALS","ARRAY","ANY_KEY","decimalDigits","frac","hexDigits","NUMERIC","recurRegex","substitution","JAVA_IDENT_RE","GENERIC_IDENT_RE","ANNOTATION","PARAMS","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","IDENT_RE$1","FRAGMENT","XML_TAG","isTrulyOpeningTag","afterMatchIndex","nextChar","hasClosingTag","afterMatch","KEYWORDS$1","decimalInteger","NUMBER","HTML_TEMPLATE","CSS_TEMPLATE","GRAPHQL_TEMPLATE","TEMPLATE_STRING","SUBST_INTERNALS","SUBST_AND_COMMENTS","PARAMS_CONTAINS","CLASS_OR_EXTENDS","CLASS_REFERENCE","FUNCTION_DEFINITION","label","FUNCTION_CALL","PROPERTY_ACCESS","GETTER_OR_SETTER","FUNC_LEAD_IN_RE","FUNCTION_VARIABLE","LITERALS_MODE","LABEL","VARIABLE","ANNOTATION_USE_SITE","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","PSEUDO_SELECTORS","PSEUDO_SELECTORS$1","INTERP_IDENT_RE","RULES","VALUE_MODES","STRING_MODE","IDENT_MODE","AT_KEYWORDS","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","PSEUDO_SELECTOR_MODE","OPENING_LONG_BRACKET","CLOSING_LONG_BRACKET","LONG_BRACKETS","FUNC","ASSIGNMENT","TARGET","INLINE_HTML","LINK","BOLD","ITALIC","BOLD_WITHOUT_ITALIC","ITALIC_WITHOUT_BOLD","CONTAINABLE","IDENTIFIER_RE","CLASS_KEYWORDS","REGEX_MODIFIERS","PERL_KEYWORDS","METHOD","STRING_CONTAINS","REGEX_DELIMS","PAIRED_DOUBLE_RE","open","close","middle","PAIRED_RE","PERL_DEFAULT_CONTAINS","NOT_PERL_ETC","PASCAL_CASE_CLASS_NAME_RE","SINGLE_QUOTED","WHITESPACE","KWS","items","dualCase","normalizeKeywords","CONSTRUCTOR_CALL","CONSTANT_REFERENCE","LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON","NAMED_ARGUMENT","PARAMS_MODE","FUNCTION_INVOKE","ATTRIBUTE_CONTAINS","RESERVED_WORDS","PROMPT","LITERAL_BRACKET","digitpart","pointfloat","COMMENT_TYPE","NUMBER_TYPES_RE","OPERATORS_RE","PUNCTUATION_RE","RUBY_METHOD_RE","CLASS_NAME_RE","CLASS_NAME_WITH_NAMESPACE_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","COMMENT_MODES","digits","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","NUMBER_SUFFIX","BUILTINS","PSEUDO_ELEMENTS$1","PSEUDO_CLASSES$1","COMMENT_MODE","RESERVED_FUNCTIONS","COMBOS","FUNCTIONS","exceptions","when","qualifyFn","reduceRelevancy","keywordWrapper","dotKeywords","optionalDotKeywords","keywordTypes","literals","precedencegroupKeywords","numberSignKeywords","builtIns","operatorHead","operatorCharacter","identifierHead","identifierCharacter","identifier","typeIdentifier","keywordAttributes","availabilityKeywords","DOT_KEYWORD","KEYWORD_GUARD","PLAIN_KEYWORDS","kw","KEYWORD","KEYWORD_MODES","OPERATOR_GUARD","OPERATORS","ESCAPED_CHARACTER","rawDelimiter","ESCAPED_NEWLINE","INTERPOLATION","MULTILINE_STRING","SINGLE_LINE_STRING","REGEXP_CONTENTS","BARE_REGEXP_LITERAL","EXTENDED_REGEXP_LITERAL","REGEXP","QUOTED_IDENTIFIER","IDENTIFIERS","TYPE","GENERIC_ARGUMENTS","TUPLE","GENERIC_PARAMETERS","FUNCTION_PARAMETERS","FUNCTION_OR_MACRO","INIT_SUBSCRIPT","OPERATOR_DECLARATION","PRECEDENCEGROUP","interpolation","submodes","javascript","tsLanguage","NAMESPACE","INTERFACE","DECORATOR","swapMode","replacement","indx","MM_DD_YYYY","YYYY_MM_DD","TIME_12H","TIME_24H","DATE","DOC_COMMENT","TAG_NAME_RE","XML_ENTITIES","XML_META_KEYWORDS","XML_META_PAR_KEYWORDS","APOS_META_STRING_MODE","QUOTE_META_STRING_MODE","TAG_INTERNALS","URI_CHARACTERS","CONTAINER_STRING","TIMESTAMP","VALUE_CONTAINER","OBJECT","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","definition","o","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","nmd","installedChunks","j","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","Proxy","plainObjectString","assertProxies","invoked","isStringish","protoConstructor","isGenerator","addHiddenProp","propName","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","thing","isES6Set","hasGetOwnPropertySymbols","ownKeys","toPrimitive","hasProp","getOwnPropertyDescriptors","res","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","_extends","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","_proto","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","arg3","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","structural","deepEqual","shallow","deepEnhancer","isObservable","observable","isAction","isFlow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","make_$1","extend_","extend_$1","decorate_20223_$1","adm","descriptor","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","mthd","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","_createAction","isMobxAction","safeDescriptors","globalState","_adm$proxy_","_annotation$options_","proxy_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","isPlainObject_","createFlowAnnotation","make_$2","extend_$2","decorate_20223_$2","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","make_$3","extend_$3","decorate_20223_$3","assertComputedDescriptor","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","make_$4","extend_$4","decorate_20223_$4","assertObservableDescriptor","defineObservableProperty_","_this$options_$enhanc","enhancer","desc","initializedObjects","initializeObservable","ObservableValue","_ann$options_$enhance","setObservablePropValue_","init","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","decorate_20223_$5","autoBind","observableAnnotation","_this$options_4","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","proxy","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","oldValue","observableDecoratorAnnotation","getEnhancerFromOptions","getEnhancerFromAnnotation","createObservable","arg2","box","equals","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","currentActionId","nextActionId","isFunctionNameConfigurable","_getDescriptor$config","_getDescriptor","tmpNameDescriptor","actionName","executeAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","_startAction","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_endAction","_Symbol$toPrimitive","_Atom","notifySpy","_this","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","_inheritsLoose","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","handler","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","raw","isObservableValue","_Symbol$toPrimitive$1","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","cause","wasSuspended","changed","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","prevValue","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","dispose","getDisposer_","abortSignal","_this2","trace","enterBreakPoint","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","runInAction","reaction","_opts$name","_opts","scheduler","reactionRunner","requiresObservable","createSchedulerFromOptions","_opts2","_opts2$signal","signal","aborted","_opts3","run","ON_BECOME_UNOBSERVED","hook","getAtom","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","isolateGlobalState","baseScheduler","setReactionScheduler","annotations","descriptors","getDependencyTree","nodeToDependencyTree","from","unique","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","generator","rejector","gen","pendingPromise","stepId","onFulfilled","onRejected","cancelPromise","_res","yieldedPromise","interceptReads","propOrHandler","getAdministration","intercept","interceptProperty","interceptInterceptable","_isObservable","keys_","set_","_values","apiDefineProperty","observe","propOrCb","cbOrFire","observeObservableProperty","observeObservable","transaction","abort","_opts$signal","disposer","_when","_opts$signal2","_opts$signal3","whenPromise","effect","effectAction","getAdm","has_","get_","_getAdm$set_","deleteProperty","_getAdm$delete_","delete_","_getAdm$definePropert","ownKeys_","preventExtensions","interceptable","interceptors","idx","listenable","makeObservable","collectStoredAnnotations","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","added","addedCount","removed","removedCount","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","_i","notifyArrayChildUpdate_","notify","owned","spliceWithArray","addArrayExtension","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","currentValue","_this3","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator","_Symbol$toStringTag","initialData","data_","hasMap_","keysAtom_","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_createForOfIteratorHelperLoose","_step$value","symbols","getPlainObjectKeys","_this5","_step2","_iterator2","_this6","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_this7","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","_createClass","ObservableSetMarker","_Symbol$iterator$1","_Symbol$toStringTag$1","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","setPrototypeOf","LegacyObservableArray","_StubArray","_assertThisInitialized","createArrayBufferItem","getDebugName","_observable","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","defaultNoopBatch","printDebugValue","globalIsUsingStaticRendering","isUsingStaticRendering","TimerBasedFinalizationRegistry","maxAge","sweepTimeout","registrations","registration","token","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","_a","getServerSnapshot","createReaction","stateVersion","onStoreChange","useObserver","baseComponentName","admRef","React","adm_1","subscribe","unregister","renderResult","exception","register","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","observer","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","batch","Hook","livelinessChecking","getLivelinessChecking","extendStatics","__extends","__","__assign","__values","__read","ar","__spread","getType","assertIsStateTreeNode","getStateTreeNode","applyPatch","patch","assertArg","applyPatches","asArray","applySnapshot","snapshot","applyPostProcess","getRoot","storedValue","BaseNode","subpath","environment","NodeLifeCycle","INITIALIZING","baseSetParent","_subpath","_subpathUponDeath","_pathUponDeath","_state","wasAlive","isAlive","aliveAtom","_hookSubscribers","hookHandler","EventHandlers","_escapedSubpath","pathAtom","getEscapedPath","escapeJsonPath","DEAD","DETACHING","whenFinalized","CREATED","FINALIZED","fireHook","afterAttach","clearAll","beforeDestroy","ScalarNode","_super","simpleType","initialSnapshot","createNewInstance","finalizeCreation","fail","newParent","parentChanged","subpathChanged","pathUponDeath","aboutToDie","finalizeDeath","baseFinalizeCreation","baseAboutToDie","baseFinalizeDeath","fireInternalHook","TypeFlags","nextNodeId","snapshotReactionOptions","ObjectNode","complexType","_snapshotComputed","unbox","_initialSnapshot","identifierAttribute","identifierCache","IdentifierCache","_childNodes","initializeChildNodes","unnormalizedIdentifier","childNode","normalizeIdentifier","addNodeToCache","patches","createObservableInstanceIfNeeded","_applyPatches","_applySnapshot","fireHooks","_observableInstanceState","createObservableInstance","e_1","e_2","_b","parentChain","parentChain_1","parentChain_1_1","e_1_1","preboot","_isRunningAction","finalizeNewInstance","isRoot","_addSnapshotReaction","afterCreate","_c","_d","e_2_1","beforeDetach","previousState","newEnv","newIdCache","splitCache","mergeCache","_allowStateChangesInsideComputed","hasSnapshotPostProcessor","_getActualSnapshot","_getCachedInitialSnapshot","_snapshotUponDeath","_cachedInitialSnapshotCreated","childNodes","_cachedInitialSnapshot","processInitialSnapshot","isRunningAction","_getAssertAliveError","warnError","escapedPath","actionContext","getCurrentActionContext","parentActionEvent","actionFullPath","assertAlive","_autoUnbox","getChildNode","getChildren","convertChildNodesToArray","getChildType","isProtectionEnabled","isProtected","subpathUponDeath","e_3","e_3_1","afterCreationFinalization","clearParent","createActionInvoker","parts","splitJsonPath","resolveNodeByPathParts","applyPatchLocally","_internalEventsEmit","_internalEventsClear","notifyDied","_internalEventsClearAll","onChange","_internalEventsRegister","basePatch","_internalEventsHasSubscribers","localizedPatch","substr","stripPatch","invertPatch","splitPatch","reversePatch","emitPatch","_internalEventsHas","hasDisposer","_internalEventsUnregister","middleware","middlewares","includeHooks","removeMiddleware","assertWritable","_hasSnapshotReaction","snapshotDisposer","expression","errorHandler","baseFn","_opts$name2","runSync","nextValue","_opts4","_opts4$signal","_opts5","emitSnapshot","addDisposer","_internalEvents","hasSubscribers","eventHandler","atTheBeginning","detach","cannotDetermineSubtype","$type","BaseType","typecheckInternal","instantiate","getStateTreeNodeSafe","valueType","isAssignableFrom","typeCheckSuccess","typeCheckFailure","isValidSnapshot","validate","ComplexType","getDefaultSnapshot","isDetaching","isStateTreeNode","isMutable","isMatchingSnapshotId","tryToReconcileNode","setParent","SimpleType","assertIsType","argNumber","RunningAction","hooks","onStart","running","onFinish","flowsPending","currentActionContext","getNextActionId","runWithActionContext","baseIsRunningAction","previousContext","baseCall","originalFn","CollectedMiddlewares","runNextMiddleware","getNextMiddleware","call2","runMiddleWares","getParentActionContext","parentContext","parentActionContext","argsToArray","tree","rootId","parentId","allParentIds","parentEvent","_isMSTAction","_isFlowAction","$mst_middleware","arrayIndex","inArrayIndex","prettyPrintValue","safeStringify","toErrorString","fullPath","pathPrefix","currentTypename","isPrimitive","isSnapshotCompatible","Integer","Boolean","isPrimitiveType","describe","getContextForPath","flattenTypeErrors","errors","ENABLE_TYPE_CHECK","valueInString","validationErrorsToString","typecheck","identifierCacheId","lcm","lastCacheModificationPerId","modificationId","cacheId","lastCacheUpdate","mobxShallow","updateLastCacheModificationPerId","nodes","splitNode","newCache","basePath","modified","candidate","createObjectNode","existingNode","createScalarNode","$treenode","pathParts","failIfResolveFails","part","joinJsonPath","includeDate","isSerializable","defineProperty$1","EventHandler","handlers","eventHandlers","stringStartsWith","beginning","typeName","assertIsFunction","assertIsString","canBeEmpty","setImmediateWithFallback","spawner","contextBase","cancelError","throw","createFlowSpawner","op","unescapeJsonPath","getPathStr","ids","$preProcessorFailed","SnapshotProcessor","_subtype","_processors","sn","preProcessor","preProcessSnapshot","postProcessor","snapshotProcessorType","methods","methods_1","methods_1_1","proxyNodeTypeMethods","oldGetSnapshot","postProcessSnapshot","Union","getReconciliationType","processedInitialValue","_fixNode","reconcile","processedSn","preProcessSnapshotSafe","MapIdentifierMode","needsIdentifierError","tryCollectModelTypes","modelTypes","subtypes","getSubTypes","subtypesArray","subtypesArray_1","subtypesArray_1_1","ModelType","MSTMap","mapNode","mapType","identifierMode","YES","mapIdentifierAttribute","isValidIdentifier","put","MapType","_subType","hookInitializers","UNKNOWN","_determineIdentifierMode","NO","objNode","subType","_interceptReads","actionInvoker","willChange","didChange","processIdentifier","expected","oldSnapshot","currentKeys","ArrayType","_getAdministration","updatedNodes","reconcileArrayChildren","index_1","addedNodes","childType","oldNodes","newValues","newPaths","nothingChanged","hasNewNode","oldNode","newPath","areSame","valueAsNode","oldMatch","getNewNode","oldNodeType","PRE_PROCESS_SNAPSHOT","POST_PROCESS_SNAPSHOT","objectTypeToString","defaultObjectOptions","initializers","toPropertiesObject","declaredProps","keysList","alreadySeenKeys","boolean","DatePrimitive","getPrimitiveFactoryFromValue","cloneAndEnhance","currentPreprocessor","currentPostprocessor","propertyNames","_getIdentifierAttribute","forAllProps","propType","Identifier","instantiateActions","action2","baseAction","specializedAction_1","boundAction","instantiateVolatileState","views","__rest","instantiateViews","applySnapshotPreProcessor","chg","oldChildValue","applySnapshotPostProcessor","preProcessedSnapshot","processor","isModelType","CoreType","checker","integer","float","Float","finite","Finite","nullType","Null","undefinedType","Undefined","_DatePrimitive","getTime","Literal","Refinement","_predicate","_message","subtypeErrors","_types","eager","dispatcher","_dispatcher","_eager","factory","determineType","reconcileCurrentType","allErrors","applicableTypes","optionsOrType","otherTypes","OptionalValue","optionalValues","Optional","defaultInstanceOrSnapshot","getDefaultInstanceOrSnapshot","defaultValueOrFunction","checkOptionalPreconditions","undefinedAsOptionalValues","optionalUndefinedType","optionalNullType","maybe","Late","_definition","mustSucceed","ReferenceError","getSubType","subtype","Lazy","pendingNodeList","shouldLoadPredicate","loadType","loadedType","Frozen","untypedFrozenInstance","StoredReference","targetType","targetNode","normalizedId","lastCacheModification","getLastCacheModificationPerId","resolvedReference","InvalidReferenceError","updateResolvedReference","BaseReferenceType","onInvalidated","Reference","storedRefNode","referenceId","refTargetNode","storedRefParentNode","storedRefParentValue","invalidTarget","invalidId","replaceRef","newRef","removeRef","refTargetValue","refTargetNodeHook","getInvalidationCause","fireInvalidated","refTargetDetachHookDisposer","registerHook","refTargetDestroyHookDisposer","customGetSet","onRefTargetDestroyedHookDisposer","startWatching","sync","addTargetNodeWatcher","IdentifierReferenceType","resolvedValue","storedRef","watchTargetNodeForInvalidations","compareByValue","CustomReferenceType","newIdentifier","getSetOptions","BaseIdentifierType","validType","IdentifierType","IdentifierNumberType","identifierNumber","CustomType","Custom","isTargetType","typeError","getValidationMessage","toSnapshot","fromSnapshot","isSnapshot","valueToStore","enumeration","realOptions","option","model","compose","hasTypename","cur","custom","safeReference","refType","ev","acceptsUndefined","maybeNull","refinement","frozen","late","nameOrType","maybeType","null","snapshotProcessor","processors","AsyncLocalStorage","callWithPromise","localStorage","getItem","removeItem","setItem","store","storage","_options","jsonify","_options$jsonify","whitelist","blacklist","whitelistDict","arrToDict","blacklistDict","_snapshot","onSnapshot","parse","dict","elem","MessageModel","fromBot","botName","uniqId","ChatModel","messages","incomingMessage","commitIncomingMessage","setName","deleteMessage","messagesWithoutMessage","createIncomingMessage","updateIncomingMessage","addUserMessage","isGettingData","chatStore","chats","selectedChat","createChat","chat","deleteChat","_self$selectedChat","selectChat","_self$selectedChat2","Delete","_jsx","xmlns","viewBox","stroke","strokeLinecap","strokeLinejoin","Options","Edit","Check","ChatItem","_chatStore$selectedCh","inputRef","_jsxs","tabIndex","role","onSubmit","_inputRef$current","SideBar","ChevronDown","Question","Refresh","Model","DefaultHost","SettingStore","host","models","_selectedModelName","theme","updateModels","selectModel","setHost","setTheme","_self$models$","fetch","json","selectedModel","settingStore","themes","dark","dracula","garden","openNoServerDialog","noServerDialog","getElementById","showModal","Input","noServer","Models","Drawer","_Fragment","htmlFor","ThemeSelector","wrapperRef","bottomRef","handleScroll","viewableDetectionEpsilon","isViewable","forceScroll","changeDetectionFilter","scrollParentToChild","getBoundingClientRect","animateScroll","onScrollComplete","clientHeight","onScroll","scrollToBottom","maxHeight","overflowY","scrollBy","nameRe","nameReJsx","emptyOptions","empty","Schema","normal","space","definitions","normalize","Info","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","DefinedInfo","mask","mark","check","own","info","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","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","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","hrefLang","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","manifest","media","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","shape","sizes","slot","spellCheck","srcDoc","srcLang","srcSet","title","translate","typeMustMatch","useMap","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","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","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","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","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","ruleId","fatal","file","actual","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","addNode","addChildren","estree","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","Type","dashes","padRight","padLeft","commas","spaces","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","toDash","$1","urlAttributes","icon","includeImageAlt","includeHtml","parameters","chunkStart","subtokenize","events","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","combineExtensions","extensions","syntaxExtension","extension","right","constructs","existing","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","factorySpace","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","eof","nok","disable","blankLine","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","onExitError","expectingFirstListItemValue","flowCodeInside","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","doc","env","deserialize","serialized","deserializer","$","unpair","BigInt","EMPTY","asString","shouldSkip","serialize","lossy","serializer","strict","toISOString","structuredClone","any","normalizeUri","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","suffix","contents","listItemLoose","tab","trimLines","trimLine","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","handle","passThrough","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","bail","trough","fns","pipeline","middlewareIndex","output","fnExpectsCallback","middelware","basename","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","stored","assertNonEmpty","assertPart","stem","CallableInstance","names","Processor","Compiler","Parser","attachers","freezeIndex","namespace","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","addList","addPreset","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","mdastTree","colon","questionMark","numberSign","ccount","character","findAndReplace","ignored","tupleOrList","tuple","toExpression","toFunction","pairIndex","grandparent","matchObject","inConstruct","notInConstruct","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","exitLiteralAutolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","findUrl","findEmail","domain","isCorrectDomain","trailExec","trail","closingParenIndex","openingParens","closingParens","splitUrl","atext","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","tracker","createTracker","move","subexit","safe","associationId","indentLines","containerFlow","blank","peek","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","defaultStringLength","toAlignment","listInScope","none","_1","unsafe","checkQuote","checkEmphasis","compilePattern","formatLinkAsAutolink","resourceLink","checkBullet","bullet","checkRule","phrasing","checkStrong","fence","checkFence","fences","formatCodeAsIndented","longestStreak","encode","rank","literalWithBreak","setext","formatHeadingAsSetext","closeAtx","bulletCurrent","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","listItemIndent","checkListItemIndent","incrementListMarker","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","gfmTableToMarkdown","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","row","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","exitCheck","exitParagraphWithTaskListItem","firstParaghraph","listItemWithTaskListItem","checkable","checkbox","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_gfmAutolinkLiteralWalkedInto","indent","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","strikethrough","EditMap","editMap","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","tokenizeTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","resolveTable","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","gfm","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","tableData","tableHeader","taskListCheckValueChecked","taskListCheckValueUnchecked","gfmToMarkdown","Copy","CopySuccess","Stop","OllmaApi","streamChat","_settingStore$selecte","abortController","AbortController","reader","getReader","read","textChunk","cancelStream","customCodeBlock","multiLine","clipboard","writeText","highlightedText","Loading","IncomingMessage","Message","onDestroy","customDeleteIcon","copied","setCopied","handleCopy","ChatBoxInputRow","onSend","userMessage","scrollableFeedRef","_scrollableFeedRef$cu2","ScrollableFeed","behavior","timeLog","_scrollableFeedRef$cu","sendMessage","OLLAMA_CODE","modalRef","_modalRef$current","Warning","Bars3","Navbar","Modal","ChatBox","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","App","reportWebVitals"],"sourceRoot":""} \ No newline at end of file