@visulima/html 1.0.0-alpha.2 → 1.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +166 -0
- package/LICENSE.md +50 -93
- package/README.md +69 -10
- package/dist/css.d.ts +38 -0
- package/dist/css.js +2 -0
- package/dist/escape.d.ts +20 -0
- package/dist/escape.js +1 -0
- package/dist/html.d.ts +58 -0
- package/dist/html.js +1 -0
- package/dist/index.d.ts +33 -383
- package/dist/index.js +1 -11
- package/dist/packem_shared/_commonjsHelpers-CWAkuNXM.js +1 -0
- package/dist/packem_shared/decode-DPHm0sXO.js +1 -0
- package/dist/packem_shared/escapeCss-BtzOEJZW.js +1 -0
- package/dist/packem_shared/escapeHtml-CiWsYlrs.js +1 -0
- package/dist/packem_shared/escapeJs-C4cWI12i.js +1 -0
- package/dist/packem_shared/htmlTags-BWCBwnc_.js +1 -0
- package/dist/packem_shared/isHtml-B7-ANsKf.js +1 -0
- package/dist/packem_shared/isValidCustomElementName-BGH0NihB.js +1 -0
- package/dist/packem_shared/stripHtml-BJMSstzr.js +53 -0
- package/dist/packem_shared/voidHtmlTags-Cb8VOd4K.js +1 -0
- package/dist/sanitize.d.ts +1 -0
- package/dist/sanitize.js +1 -0
- package/dist/strip.d.ts +67 -0
- package/dist/strip.js +1 -0
- package/package.json +39 -67
- package/dist/packem_shared/_commonjsHelpers-B85MJLTf.js +0 -5
- package/dist/packem_shared/css-eLBFmNQq.js +0 -32
- package/dist/packem_shared/encode-jgknlkNE.js +0 -195
- package/dist/packem_shared/escapeCss-gSWL0xVj.js +0 -17
- package/dist/packem_shared/escapeHtml-Cztfu84O.js +0 -18
- package/dist/packem_shared/escapeJs-8hCFOEdN.js +0 -6
- package/dist/packem_shared/html-B-Khp3Xj.js +0 -24
- package/dist/packem_shared/htmlTags-CnZinEi6.js +0 -132
- package/dist/packem_shared/isValidCustomElementName-Czb_BiVq.js +0 -16
- package/dist/packem_shared/stripHtmlDefaultOptions-Dj_FII9M.js +0 -1331
- package/dist/packem_shared/voidHtmlTags-Db3mUI2j.js +0 -30
package/dist/escape.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { escapeCss } from '@std/html/unstable-escape-css';
|
|
2
|
+
export { escapeJs } from '@std/html/unstable-escape-js';
|
|
3
|
+
/**
|
|
4
|
+
* Escapes HTML special characters in a string.
|
|
5
|
+
* Optimized for performance with minimal allocations.
|
|
6
|
+
* @param value The value to escape. Will be converted to string.
|
|
7
|
+
* @param isAttribute If true, also escapes double quotes (for HTML attributes).
|
|
8
|
+
* @returns The escaped string.
|
|
9
|
+
* @example
|
|
10
|
+
* escapeHtml('<script>alert("xss")<\/script>');
|
|
11
|
+
* // => '<script>alert("xss")</script>'
|
|
12
|
+
* @example
|
|
13
|
+
* escapeHtml('<div>', true);
|
|
14
|
+
* // => '<div>'
|
|
15
|
+
* @example
|
|
16
|
+
* escapeHtml('value="test"', true);
|
|
17
|
+
* // => 'value="test"'
|
|
18
|
+
*/
|
|
19
|
+
declare const escapeHtml: (value: unknown, isAttribute?: boolean) => string;
|
|
20
|
+
export { escapeHtml };
|
package/dist/escape.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{default as o}from"./packem_shared/escapeHtml-CiWsYlrs.js";import{escapeCss as r}from"./packem_shared/escapeCss-BtzOEJZW.js";import{escapeJs as t}from"./packem_shared/escapeJs-C4cWI12i.js";export{r as escapeCss,o as escapeHtml,t as escapeJs};
|
package/dist/html.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded wrapper produced by {@link html.raw}. Values wrapped in this marker are
|
|
3
|
+
* interpolated into the `html` tagged template (or composed via arrays) verbatim,
|
|
4
|
+
* without escaping. Use it only for HTML you already trust.
|
|
5
|
+
*/
|
|
6
|
+
interface RawHtml {
|
|
7
|
+
/** Internal brand used to detect trusted fragments. */
|
|
8
|
+
readonly __isRawHtml: true;
|
|
9
|
+
/** The trusted HTML payload. */
|
|
10
|
+
readonly value: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Type guard that detects a {@link RawHtml} marker (including nested fragments
|
|
14
|
+
* produced by the `html` tag, which are themselves marked as raw).
|
|
15
|
+
* @param value The value to test.
|
|
16
|
+
* @returns `true` when the value is a trusted raw HTML fragment.
|
|
17
|
+
*/
|
|
18
|
+
declare const isRawHtml: (value: unknown) => value is RawHtml;
|
|
19
|
+
/**
|
|
20
|
+
* Template tag function for HTML that escapes interpolated values to prevent XSS.
|
|
21
|
+
* Template strings are used as-is, but all interpolated values are HTML-escaped.
|
|
22
|
+
*
|
|
23
|
+
* Interpolated arrays are flattened and joined with an empty string (no commas), and
|
|
24
|
+
* values wrapped with {@link html.raw} are inlined without escaping, enabling fragment
|
|
25
|
+
* composition. Because the tag returns a plain string, nested fragments must be wrapped
|
|
26
|
+
* with `html.raw` to avoid double-escaping.
|
|
27
|
+
* @param strings Template literal strings
|
|
28
|
+
* @param values Template literal values (escaped unless wrapped with {@link html.raw})
|
|
29
|
+
* @returns The HTML string with interpolated values escaped
|
|
30
|
+
* @example
|
|
31
|
+
* html`<div>Hello</div>`
|
|
32
|
+
* // => '<div>Hello</div>'
|
|
33
|
+
* @example
|
|
34
|
+
* html`<div>${'<script>alert("xss")<\/script>'}</div>`
|
|
35
|
+
* // => '<div><script>alert("xss")</script></div>'
|
|
36
|
+
* @example
|
|
37
|
+
* html`<ul>${items.map((i) => html.raw(html`<li>${i}</li>`))}</ul>`
|
|
38
|
+
* // => '<ul><li>a</li><li>b</li></ul>'
|
|
39
|
+
*/
|
|
40
|
+
declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Function overload for HTML with explicit escaping control.
|
|
43
|
+
*
|
|
44
|
+
* Escapes by default (attribute-safe), matching the template-tag form. Pass
|
|
45
|
+
* `shouldEscape: false` to opt out and return the input verbatim — only do this
|
|
46
|
+
* for HTML you already trust or have sanitized, since it disables XSS protection.
|
|
47
|
+
* @param value The HTML string to process
|
|
48
|
+
* @param shouldEscape When `true`/omitted, escapes HTML. When `false`, returns the input as-is (unsafe for untrusted input).
|
|
49
|
+
* @returns The processed HTML string
|
|
50
|
+
* @example
|
|
51
|
+
* html('<script>alert("xss")<\/script>')
|
|
52
|
+
* // => '<script>alert("xss")</script>'
|
|
53
|
+
* @example
|
|
54
|
+
* html('<div></div>', false)
|
|
55
|
+
* // => '<div></div>'
|
|
56
|
+
*/
|
|
57
|
+
declare function html(value: string, shouldEscape?: boolean): string;
|
|
58
|
+
export { type RawHtml, html as default, isRawHtml };
|
package/dist/html.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import o from"./packem_shared/escapeHtml-CiWsYlrs.js";const u="__isRawHtml",l=r=>typeof r=="object"&&r!==null&&r[u]===!0,s=r=>{if(l(r))return r.value;if(Array.isArray(r)){let e="";for(const t of r)e+=s(t);return e}return o(r,!0)};function c(r,...e){if(Array.isArray(r)&&"raw"in r){const n=r;let a=n[0]??"";for(const[f,i]of e.entries())a+=s(i),a+=n[f+1]??"";return a}const t=r;return e[0]===!1?t:o(t,!0)}c.raw=r=>({[u]:!0,value:r});export{c as default,l as isRawHtml};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,295 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
1
|
+
export { type CSSProperties, type FlexibleCSSProperties, default as css } from "./css.js";
|
|
2
|
+
export { escapeHtml } from "./escape.js";
|
|
3
|
+
export { type RawHtml, default as html, isRawHtml } from "./html.js";
|
|
4
|
+
export { escapeCss } from '@std/html/unstable-escape-css';
|
|
5
|
+
export { escapeJs } from '@std/html/unstable-escape-js';
|
|
6
|
+
export { isValidCustomElementName } from '@std/html/unstable-is-valid-custom-element-name';
|
|
3
7
|
export { default as sanitizeHtml } from 'sanitize-html';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
declare function css(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
9
|
-
declare function css(value: string | FlexibleCSSProperties$1 | Properties, escape?: boolean): string;
|
|
10
|
-
|
|
11
|
-
declare const escapeHtml: (value: unknown, isAttribute?: boolean) => string;
|
|
12
|
-
|
|
13
|
-
declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
14
|
-
declare function html(value: string, escape?: boolean): string;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Escapes a string for direct interpolation into an external
|
|
18
|
-
* CSS style sheet, within a `<style>` element, or in a selector.
|
|
19
|
-
*
|
|
20
|
-
* Uses identical logic to
|
|
21
|
-
* [`CSS.escape`](https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape_static)
|
|
22
|
-
* in browsers.
|
|
23
|
-
*
|
|
24
|
-
* @param str The string to escape.
|
|
25
|
-
* @returns The escaped string.
|
|
26
|
-
*
|
|
27
|
-
* @example Usage
|
|
28
|
-
* ```ts
|
|
29
|
-
* import { escapeCss } from "@std/html/unstable-escape-css";
|
|
30
|
-
* import { assertEquals } from "@std/assert";
|
|
31
|
-
*
|
|
32
|
-
* // Invalid in a CSS selector, even though it's a valid HTML ID
|
|
33
|
-
* const elementId = "123";
|
|
34
|
-
* // Unsafe for interpolation
|
|
35
|
-
* const contentInput = `<!-- '" --></style>`;
|
|
36
|
-
*
|
|
37
|
-
* const selector = `#${escapeCss(elementId)}`;
|
|
38
|
-
* const content = `"${escapeCss(contentInput)}"`;
|
|
39
|
-
*
|
|
40
|
-
* // Usable as a CSS selector
|
|
41
|
-
* assertEquals(selector, String.raw`#\31 23`);
|
|
42
|
-
* // Safe for interpolation
|
|
43
|
-
* assertEquals(content, String.raw`"\<\!--\ \'\"\ --\>\<\/style\>"`);
|
|
44
|
-
*
|
|
45
|
-
* // Usage
|
|
46
|
-
* `<style>
|
|
47
|
-
* ${selector}::after {
|
|
48
|
-
* content: ${content};
|
|
49
|
-
* }
|
|
50
|
-
* </style>`;
|
|
51
|
-
* ```
|
|
52
|
-
*/ declare function escapeCss(str: string): string;
|
|
53
|
-
|
|
54
|
-
/** Options for {@linkcode escapeJs} */ type EscapeJsOptions = {
|
|
55
|
-
/**
|
|
56
|
-
* The number of spaces or tab to use for indentation in the output.
|
|
57
|
-
* If not specified, no extra whitespace is added.
|
|
58
|
-
*/ space?: number | "\t";
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Escapes a JavaScript object or other data for safe interpolation inside a `<script>` tag.
|
|
62
|
-
*
|
|
63
|
-
* The data must be JSON-serializable (plain object, array, string, number (excluding `NaN`/infinities), boolean, or null).
|
|
64
|
-
*
|
|
65
|
-
* The output is fully JSON-compatible, with additional escaping of sequences that can be problematic within `<script>` tags.
|
|
66
|
-
*
|
|
67
|
-
* @param data The data to escape.
|
|
68
|
-
* @param options Options for escaping.
|
|
69
|
-
* @returns The escaped string.
|
|
70
|
-
*
|
|
71
|
-
* @example Escaping a string
|
|
72
|
-
* ```ts
|
|
73
|
-
* import { escapeJs } from "@std/html/unstable-escape-js";
|
|
74
|
-
* import { assertEquals } from "@std/assert";
|
|
75
|
-
* const input = "\u2028\u2029</script>";
|
|
76
|
-
* assertEquals(escapeJs(input), '"\\u2028\\u2029\\u003c/script>"');
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
* @example Escaping an object
|
|
80
|
-
* ```ts
|
|
81
|
-
* import { escapeJs } from "@std/html/unstable-escape-js";
|
|
82
|
-
* import { assertEquals } from "@std/assert";
|
|
83
|
-
* const input = {
|
|
84
|
-
* "<SCRIPT>": "</script>",
|
|
85
|
-
* "<!--": "\u2028\u2029<>",
|
|
86
|
-
* };
|
|
87
|
-
* assertEquals(
|
|
88
|
-
* escapeJs(input),
|
|
89
|
-
* '{"\\u003cSCRIPT>":"\\u003c/script>","\\u003c!--":"\\u2028\\u2029<>"}',
|
|
90
|
-
* );
|
|
91
|
-
* ```
|
|
92
|
-
*
|
|
93
|
-
* @example Interpolating arbitrary data in a script tag
|
|
94
|
-
* ```ts no-assert ignore
|
|
95
|
-
* // might be nested arbitrarily deeply
|
|
96
|
-
* declare const data: string | number | Record<string, string> | Record<string, Record<string, string>>;
|
|
97
|
-
* const scriptHtml = `<script>window.handleData(${escapeJs(data)})</script>`;
|
|
98
|
-
* ```
|
|
99
|
-
*
|
|
100
|
-
* @example Interpolating into a JSON script (e.g. importmap)
|
|
101
|
-
* ```ts no-assert ignore
|
|
102
|
-
* const importMap = { imports: { zod: 'https://esm.sh/v131/zod@3.21.4' } };
|
|
103
|
-
* const importMapHtml = `<script type="importmap">${escapeJs(importMap)}</script>`;
|
|
104
|
-
* ```
|
|
105
|
-
*/ declare function escapeJs(data: unknown, options?: EscapeJsOptions): string;
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Returns whether the given string is a valid custom element name, as per the
|
|
109
|
-
* requirements defined in
|
|
110
|
-
* {@link https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name}.
|
|
111
|
-
*
|
|
112
|
-
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
113
|
-
*
|
|
114
|
-
* The element name must not be any of the following:
|
|
115
|
-
* - `annotation-xml`
|
|
116
|
-
* - `color-profile`
|
|
117
|
-
* - `font-face`
|
|
118
|
-
* - `font-face-src`
|
|
119
|
-
* - `font-face-uri`
|
|
120
|
-
* - `font-face-format`
|
|
121
|
-
* - `font-face-name`
|
|
122
|
-
* - `missing-glyph`
|
|
123
|
-
*
|
|
124
|
-
* @example Usage
|
|
125
|
-
*
|
|
126
|
-
* Using a valid custom element name
|
|
127
|
-
*
|
|
128
|
-
* ```ts
|
|
129
|
-
* import { isValidCustomElementName } from "@std/html/unstable-is-valid-custom-element-name";
|
|
130
|
-
* import { assertEquals } from "@std/assert";
|
|
131
|
-
*
|
|
132
|
-
* assertEquals(isValidCustomElementName("custom-element"), true);
|
|
133
|
-
* assertEquals(isValidCustomElementName("font-face"), false);
|
|
134
|
-
* assertEquals(isValidCustomElementName("custom-element@"), false);
|
|
135
|
-
* ```
|
|
136
|
-
*
|
|
137
|
-
* @param elementName The element name to be validate
|
|
138
|
-
* @returns `true` if the element name is valid, `false` otherwise.
|
|
139
|
-
*/ declare function isValidCustomElementName(elementName: string): boolean;
|
|
140
|
-
|
|
8
|
+
export { type StripHtmlAttribute, type StripHtmlCbObj, type StripHtmlOptions, type StripHtmlResult, type StripHtmlTag, stripHtml, stripHtmlDefaultOptions } from "./strip.js";
|
|
9
|
+
import 'csstype';
|
|
10
|
+
import 'ranges-push';
|
|
141
11
|
type Level = 'xml' | 'html4' | 'html5' | 'all';
|
|
142
12
|
interface CommonOptions {
|
|
143
|
-
|
|
13
|
+
level?: Level;
|
|
144
14
|
}
|
|
145
15
|
type EncodeMode = 'specialChars' | 'nonAscii' | 'nonAsciiPrintable' | 'nonAsciiPrintableOnly' | 'extensive';
|
|
146
16
|
interface EncodeOptions extends CommonOptions {
|
|
147
|
-
|
|
148
|
-
|
|
17
|
+
mode?: EncodeMode;
|
|
18
|
+
numeric?: 'decimal' | 'hexadecimal';
|
|
149
19
|
}
|
|
150
20
|
type DecodeScope = 'strict' | 'body' | 'attribute';
|
|
151
21
|
interface DecodeOptions extends CommonOptions {
|
|
152
|
-
|
|
22
|
+
scope?: DecodeScope;
|
|
153
23
|
}
|
|
154
24
|
/** Encodes all the necessary (specified by `level`) characters in the text */
|
|
155
|
-
declare function encode(text: string | undefined | null, {
|
|
25
|
+
declare function encode(text: string | undefined | null, {
|
|
26
|
+
mode,
|
|
27
|
+
numeric,
|
|
28
|
+
level
|
|
29
|
+
}?: EncodeOptions): string;
|
|
156
30
|
/** Decodes a single entity */
|
|
157
|
-
declare function decodeEntity(entity: string | undefined | null, {
|
|
31
|
+
declare function decodeEntity(entity: string | undefined | null, {
|
|
32
|
+
level
|
|
33
|
+
}?: CommonOptions): string;
|
|
158
34
|
/** Decodes all entities in the text */
|
|
159
|
-
declare function decode(text: string | undefined | null, {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
| 'area'
|
|
166
|
-
| 'article'
|
|
167
|
-
| 'aside'
|
|
168
|
-
| 'audio'
|
|
169
|
-
| 'b'
|
|
170
|
-
| 'base'
|
|
171
|
-
| 'bdi'
|
|
172
|
-
| 'bdo'
|
|
173
|
-
| 'blockquote'
|
|
174
|
-
| 'body'
|
|
175
|
-
| 'br'
|
|
176
|
-
| 'button'
|
|
177
|
-
| 'canvas'
|
|
178
|
-
| 'caption'
|
|
179
|
-
| 'cite'
|
|
180
|
-
| 'code'
|
|
181
|
-
| 'col'
|
|
182
|
-
| 'colgroup'
|
|
183
|
-
| 'data'
|
|
184
|
-
| 'datalist'
|
|
185
|
-
| 'dd'
|
|
186
|
-
| 'del'
|
|
187
|
-
| 'details'
|
|
188
|
-
| 'dfn'
|
|
189
|
-
| 'dialog'
|
|
190
|
-
| 'div'
|
|
191
|
-
| 'dl'
|
|
192
|
-
| 'dt'
|
|
193
|
-
| 'em'
|
|
194
|
-
| 'embed'
|
|
195
|
-
| 'fieldset'
|
|
196
|
-
| 'figcaption'
|
|
197
|
-
| 'figure'
|
|
198
|
-
| 'footer'
|
|
199
|
-
| 'form'
|
|
200
|
-
| 'h1'
|
|
201
|
-
| 'h2'
|
|
202
|
-
| 'h3'
|
|
203
|
-
| 'h4'
|
|
204
|
-
| 'h5'
|
|
205
|
-
| 'h6'
|
|
206
|
-
| 'head'
|
|
207
|
-
| 'header'
|
|
208
|
-
| 'hgroup'
|
|
209
|
-
| 'hr'
|
|
210
|
-
| 'html'
|
|
211
|
-
| 'i'
|
|
212
|
-
| 'iframe'
|
|
213
|
-
| 'img'
|
|
214
|
-
| 'input'
|
|
215
|
-
| 'ins'
|
|
216
|
-
| 'kbd'
|
|
217
|
-
| 'label'
|
|
218
|
-
| 'legend'
|
|
219
|
-
| 'li'
|
|
220
|
-
| 'link'
|
|
221
|
-
| 'main'
|
|
222
|
-
| 'map'
|
|
223
|
-
| 'mark'
|
|
224
|
-
| 'math'
|
|
225
|
-
| 'menu'
|
|
226
|
-
| 'meta'
|
|
227
|
-
| 'meter'
|
|
228
|
-
| 'nav'
|
|
229
|
-
| 'noscript'
|
|
230
|
-
| 'object'
|
|
231
|
-
| 'ol'
|
|
232
|
-
| 'optgroup'
|
|
233
|
-
| 'option'
|
|
234
|
-
| 'output'
|
|
235
|
-
| 'p'
|
|
236
|
-
| 'picture'
|
|
237
|
-
| 'pre'
|
|
238
|
-
| 'progress'
|
|
239
|
-
| 'q'
|
|
240
|
-
| 'rp'
|
|
241
|
-
| 'rt'
|
|
242
|
-
| 'ruby'
|
|
243
|
-
| 's'
|
|
244
|
-
| 'samp'
|
|
245
|
-
| 'script'
|
|
246
|
-
| 'search'
|
|
247
|
-
| 'section'
|
|
248
|
-
| 'select'
|
|
249
|
-
| 'selectedcontent'
|
|
250
|
-
| 'slot'
|
|
251
|
-
| 'small'
|
|
252
|
-
| 'source'
|
|
253
|
-
| 'span'
|
|
254
|
-
| 'strong'
|
|
255
|
-
| 'style'
|
|
256
|
-
| 'sub'
|
|
257
|
-
| 'summary'
|
|
258
|
-
| 'sup'
|
|
259
|
-
| 'svg'
|
|
260
|
-
| 'table'
|
|
261
|
-
| 'tbody'
|
|
262
|
-
| 'td'
|
|
263
|
-
| 'template'
|
|
264
|
-
| 'textarea'
|
|
265
|
-
| 'tfoot'
|
|
266
|
-
| 'th'
|
|
267
|
-
| 'thead'
|
|
268
|
-
| 'time'
|
|
269
|
-
| 'title'
|
|
270
|
-
| 'tr'
|
|
271
|
-
| 'track'
|
|
272
|
-
| 'u'
|
|
273
|
-
| 'ul'
|
|
274
|
-
| 'var'
|
|
275
|
-
| 'video'
|
|
276
|
-
| 'wbr';
|
|
277
|
-
|
|
278
|
-
type VoidHtmlTags =
|
|
279
|
-
| 'area'
|
|
280
|
-
| 'base'
|
|
281
|
-
| 'br'
|
|
282
|
-
| 'col'
|
|
283
|
-
| 'embed'
|
|
284
|
-
| 'hr'
|
|
285
|
-
| 'img'
|
|
286
|
-
| 'input'
|
|
287
|
-
| 'link'
|
|
288
|
-
| 'meta'
|
|
289
|
-
| 'source'
|
|
290
|
-
| 'track'
|
|
291
|
-
| 'wbr';
|
|
292
|
-
|
|
35
|
+
declare function decode(text: string | undefined | null, {
|
|
36
|
+
level,
|
|
37
|
+
scope
|
|
38
|
+
}?: DecodeOptions): string;
|
|
39
|
+
type HtmlTags = 'a' | 'abbr' | 'address' | 'area' | 'article' | 'aside' | 'audio' | 'b' | 'base' | 'bdi' | 'bdo' | 'blockquote' | 'body' | 'br' | 'button' | 'canvas' | 'caption' | 'cite' | 'code' | 'col' | 'colgroup' | 'data' | 'datalist' | 'dd' | 'del' | 'details' | 'dfn' | 'dialog' | 'div' | 'dl' | 'dt' | 'em' | 'embed' | 'fieldset' | 'figcaption' | 'figure' | 'footer' | 'form' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'head' | 'header' | 'hgroup' | 'hr' | 'html' | 'i' | 'iframe' | 'img' | 'input' | 'ins' | 'kbd' | 'label' | 'legend' | 'li' | 'link' | 'main' | 'map' | 'mark' | 'math' | 'menu' | 'meta' | 'meter' | 'nav' | 'noscript' | 'object' | 'ol' | 'optgroup' | 'option' | 'output' | 'p' | 'picture' | 'pre' | 'progress' | 'q' | 'rp' | 'rt' | 'ruby' | 's' | 'samp' | 'script' | 'search' | 'section' | 'select' | 'selectedcontent' | 'slot' | 'small' | 'source' | 'span' | 'strong' | 'style' | 'sub' | 'summary' | 'sup' | 'svg' | 'table' | 'tbody' | 'td' | 'template' | 'textarea' | 'tfoot' | 'th' | 'thead' | 'time' | 'title' | 'tr' | 'track' | 'u' | 'ul' | 'var' | 'video' | 'wbr';
|
|
40
|
+
type VoidHtmlTags = 'area' | 'base' | 'br' | 'col' | 'embed' | 'hr' | 'img' | 'input' | 'link' | 'meta' | 'source' | 'track' | 'wbr';
|
|
293
41
|
/**
|
|
294
42
|
List of standard HTML tags.
|
|
295
43
|
|
|
@@ -302,7 +50,6 @@ console.log(htmlTags);
|
|
|
302
50
|
```
|
|
303
51
|
*/
|
|
304
52
|
declare const htmlTags: readonly HtmlTags[];
|
|
305
|
-
|
|
306
53
|
/**
|
|
307
54
|
List of standard, self-closing HTML tags.
|
|
308
55
|
|
|
@@ -315,108 +62,11 @@ console.log(voidHtmlTags);
|
|
|
315
62
|
```
|
|
316
63
|
*/
|
|
317
64
|
declare const voidHtmlTags: readonly VoidHtmlTags[];
|
|
318
|
-
|
|
319
|
-
type Range$1 =
|
|
320
|
-
| [from: number, to: number]
|
|
321
|
-
| [from: number, to: number, whatToInsert: string | null | undefined];
|
|
322
|
-
interface Opts$1 {
|
|
323
|
-
limitToBeAddedWhitespace: boolean;
|
|
324
|
-
limitLinebreaksCount: number;
|
|
325
|
-
mergeType: 1 | 2 | "1" | "2" | undefined;
|
|
326
|
-
}
|
|
327
|
-
declare class Ranges$1 {
|
|
328
|
-
constructor(originalOpts?: Partial<Opts$1>);
|
|
329
|
-
ranges: Range$1[];
|
|
330
|
-
opts: Opts$1;
|
|
331
|
-
add(
|
|
332
|
-
originalFrom: number,
|
|
333
|
-
originalTo?: number,
|
|
334
|
-
addVal?: undefined | null | string,
|
|
335
|
-
): void;
|
|
336
|
-
add(originalFrom: Range$1[] | Range$1 | null): void;
|
|
337
|
-
push(
|
|
338
|
-
originalFrom: number,
|
|
339
|
-
originalTo?: number,
|
|
340
|
-
addVal?: undefined | null | string,
|
|
341
|
-
): void;
|
|
342
|
-
push(originalFrom: Range$1[] | Range$1 | null): void;
|
|
343
|
-
current(): null | Range$1[];
|
|
344
|
-
wipe(): void;
|
|
345
|
-
replace(givenRanges: Range$1[]): void;
|
|
346
|
-
last(): Range$1 | null;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
type Range =
|
|
350
|
-
| [from: number, to: number]
|
|
351
|
-
| [from: number, to: number, whatToInsert: string | null | undefined];
|
|
352
|
-
type Ranges = Range[] | null;
|
|
353
|
-
interface Attribute {
|
|
354
|
-
nameStarts: number;
|
|
355
|
-
nameEnds: number;
|
|
356
|
-
equalsAt?: number;
|
|
357
|
-
name: string;
|
|
358
|
-
valueStarts?: number;
|
|
359
|
-
valueEnds?: number;
|
|
360
|
-
value?: string;
|
|
361
|
-
}
|
|
362
|
-
interface Tag {
|
|
363
|
-
attributes: Attribute[];
|
|
364
|
-
lastClosingBracketAt: number;
|
|
365
|
-
lastOpeningBracketAt: number;
|
|
366
|
-
slashPresent: number;
|
|
367
|
-
leftOuterWhitespace: number;
|
|
368
|
-
onlyPlausible: boolean;
|
|
369
|
-
nameStarts: number;
|
|
370
|
-
nameContainsLetters: boolean;
|
|
371
|
-
nameEnds: number;
|
|
372
|
-
name: string;
|
|
373
|
-
}
|
|
374
|
-
interface CbObj {
|
|
375
|
-
tag: Tag;
|
|
376
|
-
deleteFrom: null | number;
|
|
377
|
-
deleteTo: null | number;
|
|
378
|
-
insert: null | undefined | string;
|
|
379
|
-
rangesArr: Ranges$1;
|
|
380
|
-
proposedReturn: Range | null;
|
|
381
|
-
}
|
|
382
|
-
interface Opts {
|
|
383
|
-
ignoreTags: string[];
|
|
384
|
-
ignoreTagsWithTheirContents: string[];
|
|
385
|
-
onlyStripTags: string[];
|
|
386
|
-
stripTogetherWithTheirContents: string[];
|
|
387
|
-
skipHtmlDecoding: boolean;
|
|
388
|
-
trimOnlySpaces: boolean;
|
|
389
|
-
stripRecognisedHTMLOnly: boolean;
|
|
390
|
-
dumpLinkHrefsNearby: {
|
|
391
|
-
enabled?: boolean;
|
|
392
|
-
putOnNewLine?: boolean;
|
|
393
|
-
wrapHeads?: string;
|
|
394
|
-
wrapTails?: string;
|
|
395
|
-
};
|
|
396
|
-
ignoreIndentations: boolean;
|
|
397
|
-
cb: null | ((cbObj: CbObj) => void);
|
|
398
|
-
reportProgressFunc: null | ((percDone: number) => void);
|
|
399
|
-
reportProgressFuncFrom: number;
|
|
400
|
-
reportProgressFuncTo: number;
|
|
401
|
-
}
|
|
402
|
-
declare const defaults: Opts;
|
|
403
|
-
interface Res {
|
|
404
|
-
log: {
|
|
405
|
-
timeTakenInMilliseconds: number;
|
|
406
|
-
};
|
|
407
|
-
result: string;
|
|
408
|
-
ranges: Ranges;
|
|
409
|
-
allTagLocations: [number, number][];
|
|
410
|
-
filteredTagLocations: [number, number][];
|
|
411
|
-
}
|
|
412
65
|
/**
|
|
413
|
-
|
|
414
|
-
*/
|
|
415
|
-
declare function stripHtml(str: string, opts?: Partial<Opts>): Res;
|
|
416
|
-
|
|
417
|
-
type FlexibleCSSProperties = {
|
|
418
|
-
[K in keyof Properties]?: Properties[K] | string | number | null | undefined;
|
|
419
|
-
};
|
|
66
|
+
Check if a string is HTML.
|
|
420
67
|
|
|
421
|
-
|
|
422
|
-
|
|
68
|
+
@param string - The string to check if it is HTML.
|
|
69
|
+
@returns `true` if the string is HTML, `false` otherwise.
|
|
70
|
+
*/
|
|
71
|
+
declare function isHtml(string: string): boolean;
|
|
72
|
+
export { DecodeOptions, DecodeScope, EncodeMode, EncodeOptions, Level, decode, decodeEntity, encode, htmlTags, isHtml, voidHtmlTags };
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as escapeHtml } from './packem_shared/escapeHtml-Cztfu84O.js';
|
|
3
|
-
export { default as html } from './packem_shared/html-B-Khp3Xj.js';
|
|
4
|
-
export { escapeCss } from './packem_shared/escapeCss-gSWL0xVj.js';
|
|
5
|
-
export { escapeJs } from './packem_shared/escapeJs-8hCFOEdN.js';
|
|
6
|
-
export { isValidCustomElementName } from './packem_shared/isValidCustomElementName-Czb_BiVq.js';
|
|
7
|
-
export { decode, decodeEntity, encode } from './packem_shared/encode-jgknlkNE.js';
|
|
8
|
-
export { default as sanitizeHtml } from 'sanitize-html';
|
|
9
|
-
export { stripHtml, defaults as stripHtmlDefaultOptions } from './packem_shared/stripHtmlDefaultOptions-Dj_FII9M.js';
|
|
10
|
-
export { default as htmlTags } from './packem_shared/htmlTags-CnZinEi6.js';
|
|
11
|
-
export { default as voidHtmlTags } from './packem_shared/voidHtmlTags-Db3mUI2j.js';
|
|
1
|
+
import{default as o}from"./css.js";import{default as a}from"./packem_shared/escapeHtml-CiWsYlrs.js";import{default as m,isRawHtml as f}from"./html.js";import{escapeCss as p}from"./packem_shared/escapeCss-BtzOEJZW.js";import{escapeJs as x}from"./packem_shared/escapeJs-C4cWI12i.js";import{isValidCustomElementName as u}from"./packem_shared/isValidCustomElementName-BGH0NihB.js";import{decode as H,decodeEntity as n,encode as g}from"./packem_shared/decode-DPHm0sXO.js";import{default as C}from"./packem_shared/htmlTags-BWCBwnc_.js";import{default as T}from"./packem_shared/voidHtmlTags-Cb8VOd4K.js";import{default as w}from"./packem_shared/isHtml-B7-ANsKf.js";import{default as z}from"sanitize-html";import{stripHtml as J,defaults as N}from"./packem_shared/stripHtml-BJMSstzr.js";export{o as css,H as decode,n as decodeEntity,g as encode,p as escapeCss,a as escapeHtml,x as escapeJs,m as html,C as htmlTags,w as isHtml,f as isRawHtml,u as isValidCustomElementName,z as sanitizeHtml,J as stripHtml,N as stripHtmlDefaultOptions,T as voidHtmlTags};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function o(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{o as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=function(){return g=Object.assign||function(r){for(var e,a=1,o=arguments.length;a<o;a++){e=arguments[a];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},g.apply(this,arguments)},L="~",k="~~";function w(r,e){for(var a={},o={},t=r.split(k),s=!1,i=0;t.length>i;i++){for(var c=t[i].split(L),l=0;l<c.length;l+=2){var u=c[l],n=c[l+1],p="&"+u+";";a[p]=n,s&&(a["&"+u]=n),o[n]=p}s=!0}return e?{entities:g(g({},a),e.entities),characters:g(g({},o),e.characters)}:{entities:a,characters:o}}var b={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},d={};d.xml=w(`lt~<~gt~>~quot~"~apos~'~amp~&`);d.html4=w(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~~zwj~~lrm~~rlm~~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);d.html5=w('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~~InvisibleTimes~~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~~NegativeThickSpace~~NegativeThinSpace~~NegativeVeryThinSpace~~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~ ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®',d.html4);var S={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},T=String.fromCodePoint||function(r){return String.fromCharCode(Math.floor((r-65536)/1024)+55296,(r-65536)%1024+56320)},R=String.prototype.codePointAt?function(r,e){return r.codePointAt(e)}:function(r,e){return(r.charCodeAt(e)-55296)*1024+r.charCodeAt(e+1)-56320+65536},m=function(){return m=Object.assign||function(r){for(var e,a=1,o=arguments.length;a<o;a++){e=arguments[a];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},m.apply(this,arguments)},y=m(m({},d),{all:d.html5}),N={specialChars:/[<>'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g},F={mode:"specialChars",level:"all",numeric:"decimal"};function O(r,e){var a=e===void 0?F:e,o=a.mode,t=o===void 0?"specialChars":o,s=a.numeric,i=s===void 0?"decimal":s,c=a.level,l=c===void 0?"all":c;if(!r)return"";var u=N[t],n=y[l].characters,p=i==="hexadecimal";return String.prototype.replace.call(r,u,function(f){var h=n[f];if(!h){var x=f.length>1?R(f,0):f.charCodeAt(0);h=(p?"&#x"+x.toString(16):"&#"+x)+";"}return h})}var C={scope:"body",level:"all"},q=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,v=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,D={xml:{strict:q,attribute:v,body:b.xml},html4:{strict:q,attribute:v,body:b.html4},html5:{strict:q,attribute:v,body:b.html5}},U=m(m({},D),{all:D.html5}),E=String.fromCharCode,V=E(65533),B={level:"all"};function A(r,e,a,o){var t=r,s=r[r.length-1];if(a&&s==="=")t=r;else if(o&&s!==";")t=r;else{var i=e[r];if(i)t=i;else if(r[0]==="&"&&r[1]==="#"){var c=r[2],l=c=="x"||c=="X"?parseInt(r.substr(3),16):parseInt(r.substr(2));t=l>=1114111?V:l>65535?T(l):E(S[l]||l)}}return t}function G(r,e){var a=e===void 0?B:e,o=a.level,t=o===void 0?"all":o;return r?A(r,y[t].entities,!1,!1):""}function P(r,e){var a=e===void 0?C:e,o=a.level,t=o===void 0?"all":o,s=a.scope,i=s===void 0?t==="xml"?"strict":"body":s;if(!r)return"";var c=U[t][i],l=y[t].entities,u=i==="attribute",n=i==="strict";return r.replace(c,function(p){return A(p,l,u,n)})}export{P as decode,G as decodeEntity,O as encode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function f(n){const e=/(\0)|([\x01-\x1f\x7f]|(?<=^-?)\d)|(^-$|[ -,.\/:-@\[-^`\{-~])/g;return n.replaceAll(e,(c,o,t,r)=>o!=null?"�":t!=null?u(t):l(r))}function u(n){return`\\${n.codePointAt(0).toString(16)} `}function l(n){return"\\"+n}export{f as escapeCss};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const r=/[&"'<]/g,g=/[&<]/g,i=(c,o=!1)=>{const t=String(c??""),e=o?r:g;e.lastIndex=0;let a="",s=0;for(;e.test(t);){const l=e.lastIndex-1,n=t[l];a+=t.slice(s,l)+(n==="&"?"&":n==='"'?""":n==="'"?"'":"<"),s=l+1}return a+t.slice(s)};export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a(t,r={}){const{space:e}=r;return JSON.stringify(t,null,e).replaceAll(/[\u2028\u2029]|<(?=!--|\/?script)/gi,n=>String.raw`\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`)}export{a as escapeJs};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as a}from"./_commonjsHelpers-CWAkuNXM.js";var t,e;function r(){return e||(e=1,t=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","script","search","section","select","selectedcontent","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]),t}var o=r();const i=a(o);export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as i}from"./_commonjsHelpers-CWAkuNXM.js";var e,a;function l(){return a||(a=1,e=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]),e}var r,s;function n(){return s||(s=1,r=l()),r}var d=n();const m=i(d),u=/\s?<!doctype html>|<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>/i,c=[...m].sort((t,o)=>t.length-o.length),p=new RegExp(c.map(t=>`<${t}\\b[^>]*>`).join("|"),"i");function h(t){return t=t.trim().slice(0,1e3),t.includes("\0")||!t.includes("<")?!1:u.test(t)||p.test(t)}export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const u=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],D=/^[a-z](?:[-.0-9_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]|[\u{10000}-\u{EFFFF}])*-(?:[-.0-9_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]|[\u{10000}-\u{EFFFF}])*$/u;function n(F){return!u.includes(F)&&D.test(F)}export{n as isValidCustomElementName};
|