Created
September 21, 2024 13:56
-
-
Save dbiesecke/64aa19beb4b972cf7b063b6bff6aa2df to your computer and use it in GitHub Desktop.
IMDB API Cloudflare Workers with Cover/banner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(() => { | |
var __create = Object.create; | |
var __defProp = Object.defineProperty; | |
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
var __getOwnPropNames = Object.getOwnPropertyNames; | |
var __getProtoOf = Object.getPrototypeOf; | |
var __hasOwnProp = Object.prototype.hasOwnProperty; | |
var __commonJS = (cb, mod) => function __require() { | |
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |
}; | |
var __copyProps = (to, from, except, desc) => { | |
if (from && typeof from === "object" || typeof from === "function") { | |
for (let key of __getOwnPropNames(from)) | |
if (!__hasOwnProp.call(to, key) && key !== except) | |
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
} | |
return to; | |
}; | |
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | |
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | |
mod | |
)); | |
// node_modules/hono/dist/response.js | |
var require_response = __commonJS({ | |
"node_modules/hono/dist/response.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.HonoResponse = void 0; | |
var errorMessage = "Response is not finalized"; | |
var HonoResponse = class { | |
constructor(_data, init) { | |
var _a; | |
this.headers = new Headers(init.headers); | |
this.status = (_a = init.status) !== null && _a !== void 0 ? _a : 404; | |
this._finalized = false; | |
} | |
clone() { | |
throw new Error(errorMessage); | |
} | |
arrayBuffer() { | |
throw new Error(errorMessage); | |
} | |
blob() { | |
throw new Error(errorMessage); | |
} | |
formData() { | |
throw new Error(errorMessage); | |
} | |
json() { | |
throw new Error(errorMessage); | |
} | |
text() { | |
throw new Error(errorMessage); | |
} | |
}; | |
exports.HonoResponse = HonoResponse; | |
} | |
}); | |
// node_modules/hono/dist/utils/url.js | |
var require_url = __commonJS({ | |
"node_modules/hono/dist/utils/url.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.mergePath = exports.isAbsoluteURL = exports.getPathFromURL = exports.getPattern = exports.splitPath = void 0; | |
var URL_REGEXP = /^https?:\/\/[a-zA-Z0-9\-\.:]+(\/?[^?#]*)/; | |
var splitPath = (path) => { | |
const paths = path.split(/\//); | |
if (paths[0] === "") { | |
paths.shift(); | |
} | |
return paths; | |
}; | |
exports.splitPath = splitPath; | |
var patternCache = {}; | |
var getPattern = (label) => { | |
if (label === "*") { | |
return "*"; | |
} | |
const match = label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/); | |
if (match) { | |
if (!patternCache[label]) { | |
if (match[2]) { | |
patternCache[label] = [label, match[1], new RegExp("^" + match[2] + "$")]; | |
} else { | |
patternCache[label] = [label, match[1], true]; | |
} | |
} | |
return patternCache[label]; | |
} | |
return null; | |
}; | |
exports.getPattern = getPattern; | |
var getPathFromURL = (url, params = { strict: true }) => { | |
if (params.strict === false && url.endsWith("/")) { | |
url = url.slice(0, -1); | |
} | |
const match = url.match(URL_REGEXP); | |
if (match) { | |
return match[1]; | |
} | |
return ""; | |
}; | |
exports.getPathFromURL = getPathFromURL; | |
var isAbsoluteURL = (url) => { | |
const match = url.match(URL_REGEXP); | |
if (match) { | |
return true; | |
} | |
return false; | |
}; | |
exports.isAbsoluteURL = isAbsoluteURL; | |
var mergePath = (...paths) => { | |
let p = ""; | |
let endsWithSlash = false; | |
for (let path of paths) { | |
if (p.endsWith("/")) { | |
p = p.slice(0, -1); | |
endsWithSlash = true; | |
} | |
if (!path.startsWith("/")) { | |
path = `/${path}`; | |
} | |
if (path === "/" && endsWithSlash) { | |
p = `${p}/`; | |
} else if (path !== "/") { | |
p = `${p}${path}`; | |
} | |
if (path === "/" && p === "") { | |
p = "/"; | |
} | |
} | |
return p; | |
}; | |
exports.mergePath = mergePath; | |
} | |
}); | |
// node_modules/hono/dist/context.js | |
var require_context = __commonJS({ | |
"node_modules/hono/dist/context.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.Context = void 0; | |
var response_1 = require_response(); | |
var url_1 = require_url(); | |
var Context = class { | |
constructor(req, opts = { | |
env: {}, | |
event: void 0, | |
res: void 0 | |
}) { | |
this._status = 200; | |
this._pretty = false; | |
this._prettySpace = 2; | |
this.req = this.initRequest(req); | |
this._map = {}; | |
Object.assign(this, opts); | |
if (!this.res) { | |
const res = new response_1.HonoResponse(null, { status: 404 }); | |
res._finalized = false; | |
this.res = res; | |
} | |
} | |
initRequest(req) { | |
req.header = (name) => { | |
if (name) { | |
return req.headers.get(name); | |
} else { | |
const result = {}; | |
for (const [key, value] of req.headers) { | |
result[key] = value; | |
} | |
return result; | |
} | |
}; | |
req.query = (key) => { | |
const url = new URL(req.url); | |
if (key) { | |
return url.searchParams.get(key); | |
} else { | |
const result = {}; | |
for (const key2 of url.searchParams.keys()) { | |
result[key2] = url.searchParams.get(key2) || ""; | |
} | |
return result; | |
} | |
}; | |
req.queries = (key) => { | |
const url = new URL(req.url); | |
if (key) { | |
return url.searchParams.getAll(key); | |
} else { | |
const result = {}; | |
for (const key2 of url.searchParams.keys()) { | |
result[key2] = url.searchParams.getAll(key2); | |
} | |
return result; | |
} | |
}; | |
return req; | |
} | |
header(name, value) { | |
this.res.headers.set(name, value); | |
} | |
status(status) { | |
this._status = status; | |
} | |
set(key, value) { | |
this._map[key] = value; | |
} | |
get(key) { | |
return this._map[key]; | |
} | |
pretty(prettyJSON, space = 2) { | |
this._pretty = prettyJSON; | |
this._prettySpace = space; | |
} | |
newResponse(data, init = {}) { | |
init.status = init.status || this._status || 200; | |
const headers = {}; | |
this.res.headers.forEach((v, k) => { | |
headers[k] = v; | |
}); | |
init.headers = Object.assign(headers, init.headers); | |
return new Response(data, init); | |
} | |
body(data, status = this._status, headers = {}) { | |
return this.newResponse(data, { | |
status, | |
headers | |
}); | |
} | |
text(text, status = this._status, headers = {}) { | |
if (typeof text !== "string") { | |
throw new TypeError("text method arg must be a string!"); | |
} | |
headers["Content-Type"] || (headers["Content-Type"] = "text/plain; charset=UTF-8"); | |
return this.body(text, status, headers); | |
} | |
json(object, status = this._status, headers = {}) { | |
if (typeof object !== "object") { | |
throw new TypeError("json method arg must be an object!"); | |
} | |
const body = this._pretty ? JSON.stringify(object, null, this._prettySpace) : JSON.stringify(object); | |
headers["Content-Type"] || (headers["Content-Type"] = "application/json; charset=UTF-8"); | |
return this.body(body, status, headers); | |
} | |
html(html, status = this._status, headers = {}) { | |
if (typeof html !== "string") { | |
throw new TypeError("html method arg must be a string!"); | |
} | |
headers["Content-Type"] || (headers["Content-Type"] = "text/html; charset=UTF-8"); | |
return this.body(html, status, headers); | |
} | |
redirect(location, status = 302) { | |
if (typeof location !== "string") { | |
throw new TypeError("location must be a string!"); | |
} | |
if (!(0, url_1.isAbsoluteURL)(location)) { | |
const url = new URL(this.req.url); | |
url.pathname = location; | |
location = url.toString(); | |
} | |
return this.newResponse(null, { | |
status, | |
headers: { | |
Location: location | |
} | |
}); | |
} | |
}; | |
exports.Context = Context; | |
} | |
}); | |
// node_modules/hono/dist/compose.js | |
var require_compose = __commonJS({ | |
"node_modules/hono/dist/compose.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.compose = void 0; | |
var context_1 = require_context(); | |
var compose = (middleware, onError, onNotFound) => { | |
return async (context, next) => { | |
let index2 = -1; | |
return dispatch(0); | |
async function dispatch(i) { | |
if (i <= index2) { | |
return Promise.reject(new Error("next() called multiple times")); | |
} | |
let handler = middleware[i]; | |
index2 = i; | |
if (i === middleware.length && next) | |
handler = next; | |
if (!handler) { | |
if (context instanceof context_1.Context && context.res._finalized === false && onNotFound) { | |
context.res = onNotFound(context); | |
context.res._finalized = true; | |
} | |
return Promise.resolve(context); | |
} | |
return Promise.resolve(handler(context, dispatch.bind(null, i + 1))).then(async (res) => { | |
if (res && context instanceof context_1.Context) { | |
context.res = res; | |
context.res._finalized = true; | |
} | |
return context; | |
}).catch((err) => { | |
if (context instanceof context_1.Context && onError) { | |
if (err instanceof Error) { | |
context.res = onError(err, context); | |
context.res._finalized = true; | |
} | |
return context; | |
} else { | |
throw err; | |
} | |
}); | |
} | |
}; | |
}; | |
exports.compose = compose; | |
} | |
}); | |
// node_modules/hono/dist/router.js | |
var require_router = __commonJS({ | |
"node_modules/hono/dist/router.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.METHOD_NAME_ALL_LOWERCASE = exports.METHOD_NAME_ALL = void 0; | |
exports.METHOD_NAME_ALL = "ALL"; | |
exports.METHOD_NAME_ALL_LOWERCASE = "all"; | |
} | |
}); | |
// node_modules/hono/dist/router/trie-router/node.js | |
var require_node = __commonJS({ | |
"node_modules/hono/dist/router/trie-router/node.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.Node = void 0; | |
var router_1 = require_router(); | |
var url_1 = require_url(); | |
function findParam(node, name) { | |
for (let i = 0, len = node.patterns.length; i < len; i++) { | |
if (typeof node.patterns[i] === "object" && node.patterns[i][1] === name) { | |
return true; | |
} | |
} | |
const nodes = Object.values(node.children); | |
for (let i = 0, len = nodes.length; i < len; i++) { | |
if (findParam(nodes[i], name)) { | |
return true; | |
} | |
} | |
return false; | |
} | |
var Node = class { | |
constructor(method, handler, children) { | |
this.order = 0; | |
this.children = children || {}; | |
this.methods = []; | |
if (method && handler) { | |
const m = {}; | |
m[method] = { handler, score: 0, name: this.name }; | |
this.methods = [m]; | |
} | |
this.patterns = []; | |
} | |
insert(method, path, handler) { | |
this.name = `${method} ${path}`; | |
this.order = ++this.order; | |
let curNode = this; | |
const parts = (0, url_1.splitPath)(path); | |
const parentPatterns = []; | |
const errorMessage = (name) => { | |
return `Duplicate param name, use another name instead of '${name}' - ${method} ${path} <--- '${name}'`; | |
}; | |
for (let i = 0, len = parts.length; i < len; i++) { | |
const p = parts[i]; | |
if (Object.keys(curNode.children).includes(p)) { | |
parentPatterns.push(...curNode.patterns); | |
curNode = curNode.children[p]; | |
continue; | |
} | |
curNode.children[p] = new Node(); | |
const pattern = (0, url_1.getPattern)(p); | |
if (pattern) { | |
if (typeof pattern === "object") { | |
for (let j = 0, len2 = parentPatterns.length; j < len2; j++) { | |
if (typeof parentPatterns[j] === "object" && parentPatterns[j][1] === pattern[1]) { | |
throw new Error(errorMessage(pattern[1])); | |
} | |
} | |
if (Object.values(curNode.children).some((n) => findParam(n, pattern[1]))) { | |
throw new Error(errorMessage(pattern[1])); | |
} | |
} | |
curNode.patterns.push(pattern); | |
parentPatterns.push(...curNode.patterns); | |
} | |
parentPatterns.push(...curNode.patterns); | |
curNode = curNode.children[p]; | |
} | |
let score = 1; | |
if (path === "*") { | |
score = score + this.order * 0.01; | |
} else { | |
score = parts.length + this.order * 0.01; | |
} | |
if (!curNode.methods.length) { | |
curNode.methods = []; | |
} | |
const m = {}; | |
const handlerSet = { handler, name: this.name, score }; | |
m[method] = handlerSet; | |
curNode.methods.push(m); | |
return curNode; | |
} | |
getHandlerSets(node, method, wildcard) { | |
const handlerSets = []; | |
node.methods.map((m) => { | |
const handlerSet = m[method] || m[router_1.METHOD_NAME_ALL]; | |
if (handlerSet !== void 0) { | |
const hs = Object.assign({}, handlerSet); | |
if (wildcard) { | |
hs.score = handlerSet.score - 1; | |
} | |
handlerSets.push(hs); | |
return; | |
} | |
}); | |
return handlerSets; | |
} | |
next(node, part, method, isLast) { | |
const handlerSets = []; | |
const nextNodes = []; | |
const params = {}; | |
for (let j = 0, len = node.patterns.length; j < len; j++) { | |
const pattern = node.patterns[j]; | |
if (pattern === "*") { | |
const astNode = node.children["*"]; | |
if (astNode) { | |
handlerSets.push(...this.getHandlerSets(astNode, method)); | |
nextNodes.push(astNode); | |
} | |
} | |
if (part === "") | |
continue; | |
const [key, name, matcher] = pattern; | |
if (matcher === true || matcher instanceof RegExp && matcher.test(part)) { | |
if (typeof key === "string") { | |
if (isLast === true) { | |
handlerSets.push(...this.getHandlerSets(node.children[key], method)); | |
} | |
nextNodes.push(node.children[key]); | |
} | |
if (typeof name === "string") { | |
params[name] = part; | |
} | |
} | |
} | |
const nextNode = node.children[part]; | |
if (nextNode) { | |
if (isLast === true) { | |
if (nextNode.children["*"]) { | |
handlerSets.push(...this.getHandlerSets(nextNode.children["*"], method, true)); | |
} | |
handlerSets.push(...this.getHandlerSets(nextNode, method)); | |
} | |
nextNodes.push(nextNode); | |
} | |
const next = { | |
nodes: nextNodes, | |
handlerSets, | |
params | |
}; | |
return next; | |
} | |
search(method, path) { | |
const handlerSets = []; | |
let params = {}; | |
const curNode = this; | |
let curNodes = [curNode]; | |
const parts = (0, url_1.splitPath)(path); | |
for (let i = 0, len = parts.length; i < len; i++) { | |
const p = parts[i]; | |
const isLast = i === len - 1; | |
const tempNodes = []; | |
for (let j = 0, len2 = curNodes.length; j < len2; j++) { | |
const res = this.next(curNodes[j], p, method, isLast); | |
if (res.nodes.length === 0) { | |
continue; | |
} | |
handlerSets.push(...res.handlerSets); | |
params = Object.assign(params, res.params); | |
tempNodes.push(...res.nodes); | |
} | |
curNodes = tempNodes; | |
} | |
if (handlerSets.length <= 0) | |
return null; | |
const handlers = handlerSets.sort((a, b) => { | |
return a.score - b.score; | |
}).map((s) => { | |
return s.handler; | |
}); | |
return { handlers, params }; | |
} | |
}; | |
exports.Node = Node; | |
} | |
}); | |
// node_modules/hono/dist/router/trie-router/router.js | |
var require_router2 = __commonJS({ | |
"node_modules/hono/dist/router/trie-router/router.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.TrieRouter = void 0; | |
var node_1 = require_node(); | |
var TrieRouter = class { | |
constructor() { | |
this.node = new node_1.Node(); | |
} | |
add(method, path, handler) { | |
this.node.insert(method, path, handler); | |
} | |
match(method, path) { | |
return this.node.search(method, path); | |
} | |
}; | |
exports.TrieRouter = TrieRouter; | |
} | |
}); | |
// node_modules/hono/dist/router/trie-router/index.js | |
var require_trie_router = __commonJS({ | |
"node_modules/hono/dist/router/trie-router/index.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.TrieRouter = void 0; | |
var router_1 = require_router2(); | |
Object.defineProperty(exports, "TrieRouter", { enumerable: true, get: function() { | |
return router_1.TrieRouter; | |
} }); | |
} | |
}); | |
// node_modules/hono/dist/hono.js | |
var require_hono = __commonJS({ | |
"node_modules/hono/dist/hono.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.Hono = void 0; | |
var compose_1 = require_compose(); | |
var context_1 = require_context(); | |
var router_1 = require_router(); | |
var trie_router_1 = require_trie_router(); | |
var url_1 = require_url(); | |
var methods = ["get", "post", "put", "delete", "head", "options", "patch"]; | |
function defineDynamicClass() { | |
return class { | |
}; | |
} | |
var Hono7 = class extends defineDynamicClass() { | |
constructor(init = {}) { | |
super(); | |
this.router = new trie_router_1.TrieRouter(); | |
this.strict = true; | |
this._tempPath = ""; | |
this.path = "/"; | |
this.routes = []; | |
this.notFoundHandler = (c) => { | |
const message = "404 Not Found"; | |
return c.text(message, 404); | |
}; | |
this.errorHandler = (err, c) => { | |
console.error(`${err.stack || err.message}`); | |
const message = "Internal Server Error"; | |
return c.text(message, 500); | |
}; | |
const allMethods = [...methods, router_1.METHOD_NAME_ALL_LOWERCASE]; | |
allMethods.map((method) => { | |
this[method] = (args1, ...args) => { | |
if (typeof args1 === "string") { | |
this.path = args1; | |
} else { | |
this.addRoute(method, this.path, args1); | |
} | |
args.map((handler) => { | |
if (typeof handler !== "string") { | |
this.addRoute(method, this.path, handler); | |
} | |
}); | |
return this; | |
}; | |
}); | |
Object.assign(this, init); | |
} | |
route(path, app2) { | |
this._tempPath = path; | |
if (app2) { | |
app2.routes.map((r) => { | |
this.addRoute(r.method, r.path, r.handler); | |
}); | |
this._tempPath = ""; | |
} | |
return this; | |
} | |
use(arg1, ...handlers) { | |
if (typeof arg1 === "string") { | |
this.path = arg1; | |
} else { | |
handlers.unshift(arg1); | |
} | |
handlers.map((handler) => { | |
this.addRoute(router_1.METHOD_NAME_ALL, this.path, handler); | |
}); | |
return this; | |
} | |
onError(handler) { | |
this.errorHandler = handler; | |
return this; | |
} | |
notFound(handler) { | |
this.notFoundHandler = handler; | |
return this; | |
} | |
addRoute(method, path, handler) { | |
method = method.toUpperCase(); | |
if (this._tempPath) { | |
path = (0, url_1.mergePath)(this._tempPath, path); | |
} | |
this.router.add(method, path, handler); | |
const r = { path, method, handler }; | |
this.routes.push(r); | |
} | |
async matchRoute(method, path) { | |
return this.router.match(method, path); | |
} | |
async dispatch(request, event, env) { | |
const path = (0, url_1.getPathFromURL)(request.url, { strict: this.strict }); | |
const method = request.method; | |
const result = await this.matchRoute(method, path); | |
request.param = (key) => { | |
if (result) { | |
if (key) { | |
return result.params[key]; | |
} else { | |
return result.params; | |
} | |
} | |
return null; | |
}; | |
const handlers = result ? result.handlers : [this.notFoundHandler]; | |
const c = new context_1.Context(request, { | |
env, | |
event | |
}); | |
c.notFound = () => this.notFoundHandler(c); | |
const composed = (0, compose_1.compose)(handlers, this.errorHandler, this.notFoundHandler); | |
let context; | |
try { | |
context = await composed(c); | |
} catch (err) { | |
if (err instanceof Error) { | |
return this.errorHandler(err, c); | |
} | |
throw err; | |
} | |
if (!context.res) | |
return context.notFound(); | |
return context.res; | |
} | |
async handleEvent(event) { | |
return this.dispatch(event.request, event); | |
} | |
async fetch(request, env, event) { | |
return this.dispatch(request, event, env); | |
} | |
request(input, requestInit) { | |
const req = input instanceof Request ? input : new Request(input, requestInit); | |
return this.dispatch(req); | |
} | |
fire() { | |
addEventListener("fetch", (event) => { | |
event.respondWith(this.handleEvent(event)); | |
}); | |
} | |
}; | |
exports.Hono = Hono7; | |
} | |
}); | |
// node_modules/hono/dist/index.js | |
var require_dist = __commonJS({ | |
"node_modules/hono/dist/index.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.Context = exports.Hono = void 0; | |
var hono_1 = require_hono(); | |
Object.defineProperty(exports, "Hono", { enumerable: true, get: function() { | |
return hono_1.Hono; | |
} }); | |
var context_1 = require_context(); | |
Object.defineProperty(exports, "Context", { enumerable: true, get: function() { | |
return context_1.Context; | |
} }); | |
} | |
}); | |
// node_modules/hono/dist/middleware/cors/index.js | |
var require_cors = __commonJS({ | |
"node_modules/hono/dist/middleware/cors/index.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.cors = void 0; | |
var cors2 = (options) => { | |
const defaults = { | |
origin: "*", | |
allowMethods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH"], | |
allowHeaders: [], | |
exposeHeaders: [] | |
}; | |
const opts = Object.assign(Object.assign({}, defaults), options); | |
return async (c, next) => { | |
var _a, _b; | |
await next(); | |
function set(key, value) { | |
c.res.headers.append(key, value); | |
} | |
set("Access-Control-Allow-Origin", opts.origin); | |
if (opts.origin !== "*") { | |
set("Vary", "Origin"); | |
} | |
if (opts.credentials) { | |
set("Access-Control-Allow-Credentials", "true"); | |
} | |
if ((_a = opts.exposeHeaders) === null || _a === void 0 ? void 0 : _a.length) { | |
set("Access-Control-Expose-Headers", opts.exposeHeaders.join(",")); | |
} | |
if (c.req.method === "OPTIONS") { | |
if (opts.maxAge != null) { | |
set("Access-Control-Max-Age", opts.maxAge.toString()); | |
} | |
if ((_b = opts.allowMethods) === null || _b === void 0 ? void 0 : _b.length) { | |
set("Access-Control-Allow-Methods", opts.allowMethods.join(",")); | |
} | |
let headers = opts.allowHeaders; | |
if (!(headers === null || headers === void 0 ? void 0 : headers.length)) { | |
const requestHeaders = c.req.headers.get("Access-Control-Request-Headers"); | |
if (requestHeaders) { | |
headers = requestHeaders.split(/\s*,\s*/); | |
} | |
} | |
if (headers === null || headers === void 0 ? void 0 : headers.length) { | |
set("Access-Control-Allow-Headers", headers.join(",")); | |
set("Vary", "Access-Control-Request-Headers"); | |
} | |
c.res.headers.delete("Content-Length"); | |
c.res.headers.delete("Content-Type"); | |
c.res = new Response(null, { | |
headers: c.res.headers, | |
status: 204, | |
statusText: c.res.statusText | |
}); | |
} | |
}; | |
}; | |
exports.cors = cors2; | |
} | |
}); | |
// node_modules/dom-parser/lib/Node.js | |
var require_Node = __commonJS({ | |
"node_modules/dom-parser/lib/Node.js"(exports, module) { | |
function Node(cfg) { | |
this.namespace = cfg.namespace || null; | |
this.text = cfg.text; | |
this._selfCloseTag = cfg.selfCloseTag; | |
Object.defineProperties(this, { | |
nodeType: { | |
value: cfg.nodeType | |
}, | |
nodeName: { | |
value: cfg.nodeType == 1 ? cfg.nodeName : "#text" | |
}, | |
childNodes: { | |
value: cfg.childNodes | |
}, | |
firstChild: { | |
get: function() { | |
return this.childNodes[0] || null; | |
} | |
}, | |
lastChild: { | |
get: function() { | |
return this.childNodes[this.childNodes.length - 1] || null; | |
} | |
}, | |
parentNode: { | |
value: cfg.parentNode || null | |
}, | |
attributes: { | |
value: cfg.attributes || [] | |
}, | |
innerHTML: { | |
get: function() { | |
var result = "", cNode; | |
for (var i = 0, l = this.childNodes.length; i < l; i++) { | |
cNode = this.childNodes[i]; | |
result += cNode.nodeType === 3 ? cNode.text : cNode.outerHTML; | |
} | |
return result; | |
} | |
}, | |
outerHTML: { | |
get: function() { | |
if (this.nodeType != 3) { | |
var str, attrs = (this.attributes.map(function(elem) { | |
return elem.name + (elem.value ? '="' + elem.value + '"' : ""); | |
}) || []).join(" "), childs = ""; | |
str = "<" + this.nodeName + (attrs ? " " + attrs : "") + (this._selfCloseTag ? "/" : "") + ">"; | |
if (!this._selfCloseTag) { | |
childs = (this._selfCloseTag ? "" : this.childNodes.map(function(child) { | |
return child.outerHTML; | |
}) || []).join(""); | |
str += childs; | |
str += "</" + this.nodeName + ">"; | |
} | |
} else { | |
str = this.textContent; | |
} | |
return str; | |
} | |
}, | |
textContent: { | |
get: function() { | |
if (this.nodeType == Node.TEXT_NODE) { | |
return this.text; | |
} else { | |
return this.childNodes.map(function(node) { | |
return node.textContent; | |
}).join("").replace(/\x20+/g, " "); | |
} | |
} | |
} | |
}); | |
} | |
Node.prototype.getAttribute = function(attributeName) { | |
for (var i = 0, l = this.attributes.length; i < l; i++) { | |
if (this.attributes[i].name == attributeName) { | |
return this.attributes[i].value; | |
} | |
} | |
return null; | |
}; | |
function searchElements(root, conditionFn, onlyFirst) { | |
var result = []; | |
onlyFirst = !!onlyFirst; | |
if (root.nodeType !== 3) { | |
for (var i = 0, l = root.childNodes.length; i < l; i++) { | |
if (root.childNodes[i].nodeType !== 3 && conditionFn(root.childNodes[i])) { | |
result.push(root.childNodes[i]); | |
if (onlyFirst) { | |
break; | |
} | |
} | |
result = result.concat(searchElements(root.childNodes[i], conditionFn)); | |
} | |
} | |
return onlyFirst ? result[0] : result; | |
} | |
Node.prototype.getElementsByTagName = function(tagName) { | |
return searchElements(this, function(elem) { | |
return elem.nodeName == tagName; | |
}); | |
}; | |
Node.prototype.getElementsByClassName = function(className) { | |
var expr = new RegExp("^(.*?\\s)?" + className + "(\\s.*?)?$"); | |
return searchElements(this, function(elem) { | |
return elem.attributes.length && expr.test(elem.getAttribute("class")); | |
}); | |
}; | |
Node.prototype.getElementById = function(id) { | |
return searchElements(this, function(elem) { | |
return elem.attributes.length && elem.getAttribute("id") == id; | |
}, true); | |
}; | |
Node.prototype.getElementsByName = function(name) { | |
return searchElements(this, function(elem) { | |
return elem.attributes.length && elem.getAttribute("name") == name; | |
}); | |
}; | |
Node.ELEMENT_NODE = 1; | |
Node.TEXT_NODE = 3; | |
module.exports = Node; | |
} | |
}); | |
// node_modules/dom-parser/lib/Dom.js | |
var require_Dom = __commonJS({ | |
"node_modules/dom-parser/lib/Dom.js"(exports, module) { | |
var tagRegExp = /(<\/?[a-z][a-z0-9]*(?::[a-z][a-z0-9]*)?\s*(?:\s+[a-z0-9-_]+=(?:(?:'[\s\S]*?')|(?:"[\s\S]*?")))*\s*\/?>)|([^<]|<(?![a-z\/]))*/gi; | |
var attrRegExp = /\s[a-z0-9-_]+\b(\s*=\s*('|")[\s\S]*?\2)?/gi; | |
var splitAttrRegExp = /(\s[a-z0-9-_]+\b\s*)(?:=(\s*('|")[\s\S]*?\3))?/gi; | |
var startTagExp = /^<[a-z]/; | |
var selfCloseTagExp = /\/>$/; | |
var closeTagExp = /^<\//; | |
var nodeNameExp = /<\/?([a-z][a-z0-9]*)(?::([a-z][a-z0-9]*))?/i; | |
var attributeQuotesExp = /^('|")|('|")$/g; | |
var noClosingTagsExp = /^(?:area|base|br|col|command|embed|hr|img|input|link|meta|param|source)/i; | |
var Node = require_Node(); | |
function findByRegExp(html, selector, onlyFirst) { | |
var result = [], tagsCount = 0, tags = html.match(tagRegExp), composing = false, currentObject = null, matchingSelector, fullNodeName, selfCloseTag, attributes, attrBuffer, attrStr, buffer, tag; | |
for (var i = 0, l = tags.length; i < l; i++) { | |
tag = tags[i]; | |
fullNodeName = tag.match(nodeNameExp); | |
matchingSelector = selector.test(tag); | |
if (matchingSelector && !composing) { | |
composing = true; | |
} | |
if (composing) { | |
if (startTagExp.test(tag)) { | |
selfCloseTag = selfCloseTagExp.test(tag) || noClosingTagsExp.test(fullNodeName[1]); | |
attributes = []; | |
attrStr = tag.match(attrRegExp) || []; | |
for (var aI = 0, aL = attrStr.length; aI < aL; aI++) { | |
splitAttrRegExp.lastIndex = 0; | |
attrBuffer = splitAttrRegExp.exec(attrStr[aI]); | |
attributes.push({ | |
name: attrBuffer[1].trim(), | |
value: (attrBuffer[2] || "").trim().replace(attributeQuotesExp, "") | |
}); | |
} | |
(currentObject && currentObject.childNodes || result).push(buffer = new Node({ | |
nodeType: 1, | |
nodeName: fullNodeName[1], | |
namespace: fullNodeName[2], | |
attributes, | |
childNodes: [], | |
parentNode: currentObject, | |
startTag: tag, | |
selfCloseTag | |
})); | |
tagsCount++; | |
if (!onlyFirst && matchingSelector && currentObject) { | |
result.push(buffer); | |
} | |
if (selfCloseTag) { | |
tagsCount--; | |
} else { | |
currentObject = buffer; | |
} | |
} else if (closeTagExp.test(tag)) { | |
if (currentObject.nodeName == fullNodeName[1]) { | |
currentObject = currentObject.parentNode; | |
tagsCount--; | |
} | |
} else { | |
currentObject.childNodes.push(new Node({ | |
nodeType: 3, | |
text: tag, | |
parentNode: currentObject | |
})); | |
} | |
if (tagsCount == 0) { | |
composing = false; | |
currentObject = null; | |
if (onlyFirst) { | |
break; | |
} | |
} | |
} | |
} | |
return onlyFirst ? result[0] || null : result; | |
} | |
function Dom(rawHTML) { | |
this.rawHTML = rawHTML; | |
} | |
Dom.prototype.getElementsByClassName = function(className) { | |
var selector = new RegExp(`class=('|")(.*?\\s)?` + className + "(\\s.*?)?\\1"); | |
return findByRegExp(this.rawHTML, selector); | |
}; | |
Dom.prototype.getElementsByTagName = function(tagName) { | |
var selector = new RegExp("^<" + tagName, "i"); | |
return findByRegExp(this.rawHTML, selector); | |
}; | |
Dom.prototype.getElementById = function(id) { | |
var selector = new RegExp(`id=('|")` + id + "\\1"); | |
return findByRegExp(this.rawHTML, selector, true); | |
}; | |
Dom.prototype.getElementsByName = function(name) { | |
return this.getElementsByAttribute("name", name); | |
}; | |
Dom.prototype.getElementsByAttribute = function(attr, value) { | |
var selector = new RegExp("\\s" + attr + `=('|")` + value + "\\1"); | |
return findByRegExp(this.rawHTML, selector); | |
}; | |
module.exports = Dom; | |
} | |
}); | |
// node_modules/dom-parser/lib/DomParser.js | |
var require_DomParser = __commonJS({ | |
"node_modules/dom-parser/lib/DomParser.js"(exports, module) { | |
var Dom = require_Dom(); | |
function DomParser6() { | |
} | |
DomParser6.prototype.parseFromString = function(html) { | |
return new Dom(html); | |
}; | |
module.exports = DomParser6; | |
} | |
}); | |
// node_modules/dom-parser/index.js | |
var require_dom_parser = __commonJS({ | |
"node_modules/dom-parser/index.js"(exports, module) { | |
var DomParser6 = require_DomParser(); | |
module.exports = DomParser6; | |
} | |
}); | |
// node_modules/html-entities/lib/named-references.js | |
var require_named_references = __commonJS({ | |
"node_modules/html-entities/lib/named-references.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.bodyRegExps = { 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 }; | |
exports.namedReferences = { xml: { entities: { "<": "<", ">": ">", """: '"', "'": "'", "&": "&" }, characters: { "<": "<", ">": ">", '"': """, "'": "'", "&": "&" } }, html4: { entities: { "'": "'", " ": "\xA0", " ": "\xA0", "¡": "\xA1", "¡": "\xA1", "¢": "\xA2", "¢": "\xA2", "£": "\xA3", "£": "\xA3", "¤": "\xA4", "¤": "\xA4", "¥": "\xA5", "¥": "\xA5", "¦": "\xA6", "¦": "\xA6", "§": "\xA7", "§": "\xA7", "¨": "\xA8", "¨": "\xA8", "©": "\xA9", "©": "\xA9", "ª": "\xAA", "ª": "\xAA", "«": "\xAB", "«": "\xAB", "¬": "\xAC", "¬": "\xAC", "­": "\xAD", "­": "\xAD", "®": "\xAE", "®": "\xAE", "¯": "\xAF", "¯": "\xAF", "°": "\xB0", "°": "\xB0", "±": "\xB1", "±": "\xB1", "²": "\xB2", "²": "\xB2", "³": "\xB3", "³": "\xB3", "´": "\xB4", "´": "\xB4", "µ": "\xB5", "µ": "\xB5", "¶": "\xB6", "¶": "\xB6", "·": "\xB7", "·": "\xB7", "¸": "\xB8", "¸": "\xB8", "¹": "\xB9", "¹": "\xB9", "º": "\xBA", "º": "\xBA", "»": "\xBB", "»": "\xBB", "¼": "\xBC", "¼": "\xBC", "½": "\xBD", "½": "\xBD", "¾": "\xBE", "¾": "\xBE", "¿": "\xBF", "¿": "\xBF", "À": "\xC0", "À": "\xC0", "Á": "\xC1", "Á": "\xC1", "Â": "\xC2", "Â": "\xC2", "Ã": "\xC3", "Ã": "\xC3", "Ä": "\xC4", "Ä": "\xC4", "Å": "\xC5", "Å": "\xC5", "Æ": "\xC6", "Æ": "\xC6", "Ç": "\xC7", "Ç": "\xC7", "È": "\xC8", "È": "\xC8", "É": "\xC9", "É": "\xC9", "Ê": "\xCA", "Ê": "\xCA", "Ë": "\xCB", "Ë": "\xCB", "Ì": "\xCC", "Ì": "\xCC", "Í": "\xCD", "Í": "\xCD", "Î": "\xCE", "Î": "\xCE", "Ï": "\xCF", "Ï": "\xCF", "Ð": "\xD0", "Ð": "\xD0", "Ñ": "\xD1", "Ñ": "\xD1", "Ò": "\xD2", "Ò": "\xD2", "Ó": "\xD3", "Ó": "\xD3", "Ô": "\xD4", "Ô": "\xD4", "Õ": "\xD5", "Õ": "\xD5", "Ö": "\xD6", "Ö": "\xD6", "×": "\xD7", "×": "\xD7", "Ø": "\xD8", "Ø": "\xD8", "Ù": "\xD9", "Ù": "\xD9", "Ú": "\xDA", "Ú": "\xDA", "Û": "\xDB", "Û": "\xDB", "Ü": "\xDC", "Ü": "\xDC", "Ý": "\xDD", "Ý": "\xDD", "Þ": "\xDE", "Þ": "\xDE", "ß": "\xDF", "ß": "\xDF", "à": "\xE0", "à": "\xE0", "á": "\xE1", "á": "\xE1", "â": "\xE2", "â": "\xE2", "ã": "\xE3", "ã": "\xE3", "ä": "\xE4", "ä": "\xE4", "å": "\xE5", "å": "\xE5", "æ": "\xE6", "æ": "\xE6", "ç": "\xE7", "ç": "\xE7", "è": "\xE8", "è": "\xE8", "é": "\xE9", "é": "\xE9", "ê": "\xEA", "ê": "\xEA", "ë": "\xEB", "ë": "\xEB", "ì": "\xEC", "ì": "\xEC", "í": "\xED", "í": "\xED", "î": "\xEE", "î": "\xEE", "ï": "\xEF", "ï": "\xEF", "ð": "\xF0", "ð": "\xF0", "ñ": "\xF1", "ñ": "\xF1", "ò": "\xF2", "ò": "\xF2", "ó": "\xF3", "ó": "\xF3", "ô": "\xF4", "ô": "\xF4", "õ": "\xF5", "õ": "\xF5", "ö": "\xF6", "ö": "\xF6", "÷": "\xF7", "÷": "\xF7", "ø": "\xF8", "ø": "\xF8", "ù": "\xF9", "ù": "\xF9", "ú": "\xFA", "ú": "\xFA", "û": "\xFB", "û": "\xFB", "ü": "\xFC", "ü": "\xFC", "ý": "\xFD", "ý": "\xFD", "þ": "\xFE", "þ": "\xFE", "ÿ": "\xFF", "ÿ": "\xFF", """: '"', """: '"', "&": "&", "&": "&", "<": "<", "<": "<", ">": ">", ">": ">", "Œ": "\u0152", "œ": "\u0153", "Š": "\u0160", "š": "\u0161", "Ÿ": "\u0178", "ˆ": "\u02C6", "˜": "\u02DC", " ": "\u2002", " ": "\u2003", " ": "\u2009", "‌": "\u200C", "‍": "\u200D", "‎": "\u200E", "‏": "\u200F", "–": "\u2013", "—": "\u2014", "‘": "\u2018", "’": "\u2019", "‚": "\u201A", "“": "\u201C", "”": "\u201D", "„": "\u201E", "†": "\u2020", "‡": "\u2021", "‰": "\u2030", "‹": "\u2039", "›": "\u203A", "€": "\u20AC", "ƒ": "\u0192", "Α": "\u0391", "Β": "\u0392", "Γ": "\u0393", "Δ": "\u0394", "Ε": "\u0395", "Ζ": "\u0396", "Η": "\u0397", "Θ": "\u0398", "Ι": "\u0399", "Κ": "\u039A", "Λ": "\u039B", "Μ": "\u039C", "Ν": "\u039D", "Ξ": "\u039E", "Ο": "\u039F", "Π": "\u03A0", "Ρ": "\u03A1", "Σ": "\u03A3", "Τ": "\u03A4", "Υ": "\u03A5", "Φ": "\u03A6", "Χ": "\u03A7", "Ψ": "\u03A8", "Ω": "\u03A9", "α": "\u03B1", "β": "\u03B2", "γ": "\u03B3", "δ": "\u03B4", "ε": "\u03B5", "ζ": "\u03B6", "η": "\u03B7", "θ": "\u03B8", "ι": "\u03B9", "κ": "\u03BA", "λ": "\u03BB", "μ": "\u03BC", "ν": "\u03BD", "ξ": "\u03BE", "ο": "\u03BF", "π": "\u03C0", "ρ": "\u03C1", "ς": "\u03C2", "σ": "\u03C3", "τ": "\u03C4", "υ": "\u03C5", "φ": "\u03C6", "χ": "\u03C7", "ψ": "\u03C8", "ω": "\u03C9", "ϑ": "\u03D1", "ϒ": "\u03D2", "ϖ": "\u03D6", "•": "\u2022", "…": "\u2026", "′": "\u2032", "″": "\u2033", "‾": "\u203E", "⁄": "\u2044", "℘": "\u2118", "ℑ": "\u2111", "ℜ": "\u211C", "™": "\u2122", "ℵ": "\u2135", "←": "\u2190", "↑": "\u2191", "→": "\u2192", "↓": "\u2193", "↔": "\u2194", "↵": "\u21B5", "⇐": "\u21D0", "⇑": "\u21D1", "⇒": "\u21D2", "⇓": "\u21D3", "⇔": "\u21D4", "∀": "\u2200", "∂": "\u2202", "∃": "\u2203", "∅": "\u2205", "∇": "\u2207", "∈": "\u2208", "∉": "\u2209", "∋": "\u220B", "∏": "\u220F", "∑": "\u2211", "−": "\u2212", "∗": "\u2217", "√": "\u221A", "∝": "\u221D", "∞": "\u221E", "∠": "\u2220", "∧": "\u2227", "∨": "\u2228", "∩": "\u2229", "∪": "\u222A", "∫": "\u222B", "∴": "\u2234", "∼": "\u223C", "≅": "\u2245", "≈": "\u2248", "≠": "\u2260", "≡": "\u2261", "≤": "\u2264", "≥": "\u2265", "⊂": "\u2282", "⊃": "\u2283", "⊄": "\u2284", "⊆": "\u2286", "⊇": "\u2287", "⊕": "\u2295", "⊗": "\u2297", "⊥": "\u22A5", "⋅": "\u22C5", "⌈": "\u2308", "⌉": "\u2309", "⌊": "\u230A", "⌋": "\u230B", "⟨": "\u2329", "⟩": "\u232A", "◊": "\u25CA", "♠": "\u2660", "♣": "\u2663", "♥": "\u2665", "♦": "\u2666" }, characters: { "'": "'", "\xA0": " ", "\xA1": "¡", "\xA2": "¢", "\xA3": "£", "\xA4": "¤", "\xA5": "¥", "\xA6": "¦", "\xA7": "§", "\xA8": "¨", "\xA9": "©", "\xAA": "ª", "\xAB": "«", "\xAC": "¬", "\xAD": "­", "\xAE": "®", "\xAF": "¯", "\xB0": "°", "\xB1": "±", "\xB2": "²", "\xB3": "³", "\xB4": "´", "\xB5": "µ", "\xB6": "¶", "\xB7": "·", "\xB8": "¸", "\xB9": "¹", "\xBA": "º", "\xBB": "»", "\xBC": "¼", "\xBD": "½", "\xBE": "¾", "\xBF": "¿", "\xC0": "À", "\xC1": "Á", "\xC2": "Â", "\xC3": "Ã", "\xC4": "Ä", "\xC5": "Å", "\xC6": "Æ", "\xC7": "Ç", "\xC8": "È", "\xC9": "É", "\xCA": "Ê", "\xCB": "Ë", "\xCC": "Ì", "\xCD": "Í", "\xCE": "Î", "\xCF": "Ï", "\xD0": "Ð", "\xD1": "Ñ", "\xD2": "Ò", "\xD3": "Ó", "\xD4": "Ô", "\xD5": "Õ", "\xD6": "Ö", "\xD7": "×", "\xD8": "Ø", "\xD9": "Ù", "\xDA": "Ú", "\xDB": "Û", "\xDC": "Ü", "\xDD": "Ý", "\xDE": "Þ", "\xDF": "ß", "\xE0": "à", "\xE1": "á", "\xE2": "â", "\xE3": "ã", "\xE4": "ä", "\xE5": "å", "\xE6": "æ", "\xE7": "ç", "\xE8": "è", "\xE9": "é", "\xEA": "ê", "\xEB": "ë", "\xEC": "ì", "\xED": "í", "\xEE": "î", "\xEF": "ï", "\xF0": "ð", "\xF1": "ñ", "\xF2": "ò", "\xF3": "ó", "\xF4": "ô", "\xF5": "õ", "\xF6": "ö", "\xF7": "÷", "\xF8": "ø", "\xF9": "ù", "\xFA": "ú", "\xFB": "û", "\xFC": "ü", "\xFD": "ý", "\xFE": "þ", "\xFF": "ÿ", '"': """, "&": "&", "<": "<", ">": ">", "\u0152": "Œ", "\u0153": "œ", "\u0160": "Š", "\u0161": "š", "\u0178": "Ÿ", "\u02C6": "ˆ", "\u02DC": "˜", "\u2002": " ", "\u2003": " ", "\u2009": " ", "\u200C": "‌", "\u200D": "‍", "\u200E": "‎", "\u200F": "‏", "\u2013": "–", "\u2014": "—", "\u2018": "‘", "\u2019": "’", "\u201A": "‚", "\u201C": "“", "\u201D": "”", "\u201E": "„", "\u2020": "†", "\u2021": "‡", "\u2030": "‰", "\u2039": "‹", "\u203A": "›", "\u20AC": "€", "\u0192": "ƒ", "\u0391": "Α", "\u0392": "Β", "\u0393": "Γ", "\u0394": "Δ", "\u0395": "Ε", "\u0396": "Ζ", "\u0397": "Η", "\u0398": "Θ", "\u0399": "Ι", "\u039A": "Κ", "\u039B": "Λ", "\u039C": "Μ", "\u039D": "Ν", "\u039E": "Ξ", "\u039F": "Ο", "\u03A0": "Π", "\u03A1": "Ρ", "\u03A3": "Σ", "\u03A4": "Τ", "\u03A5": "Υ", "\u03A6": "Φ", "\u03A7": "Χ", "\u03A8": "Ψ", "\u03A9": "Ω", "\u03B1": "α", "\u03B2": "β", "\u03B3": "γ", "\u03B4": "δ", "\u03B5": "ε", "\u03B6": "ζ", "\u03B7": "η", "\u03B8": "θ", "\u03B9": "ι", "\u03BA": "κ", "\u03BB": "λ", "\u03BC": "μ", "\u03BD": "ν", "\u03BE": "ξ", "\u03BF": "ο", "\u03C0": "π", "\u03C1": "ρ", "\u03C2": "ς", "\u03C3": "σ", "\u03C4": "τ", "\u03C5": "υ", "\u03C6": "φ", "\u03C7": "χ", "\u03C8": "ψ", "\u03C9": "ω", "\u03D1": "ϑ", "\u03D2": "ϒ", "\u03D6": "ϖ", "\u2022": "•", "\u2026": "…", "\u2032": "′", "\u2033": "″", "\u203E": "‾", "\u2044": "⁄", "\u2118": "℘", "\u2111": "ℑ", "\u211C": "ℜ", "\u2122": "™", "\u2135": "ℵ", "\u2190": "←", "\u2191": "↑", "\u2192": "→", "\u2193": "↓", "\u2194": "↔", "\u21B5": "↵", "\u21D0": "⇐", "\u21D1": "⇑", "\u21D2": "⇒", "\u21D3": "⇓", "\u21D4": "⇔", "\u2200": "∀", "\u2202": "∂", "\u2203": "∃", "\u2205": "∅", "\u2207": "∇", "\u2208": "∈", "\u2209": "∉", "\u220B": "∋", "\u220F": "∏", "\u2211": "∑", "\u2212": "−", "\u2217": "∗", "\u221A": "√", "\u221D": "∝", "\u221E": "∞", "\u2220": "∠", "\u2227": "∧", "\u2228": "∨", "\u2229": "∩", "\u222A": "∪", "\u222B": "∫", "\u2234": "∴", "\u223C": "∼", "\u2245": "≅", "\u2248": "≈", "\u2260": "≠", "\u2261": "≡", "\u2264": "≤", "\u2265": "≥", "\u2282": "⊂", "\u2283": "⊃", "\u2284": "⊄", "\u2286": "⊆", "\u2287": "⊇", "\u2295": "⊕", "\u2297": "⊗", "\u22A5": "⊥", "\u22C5": "⋅", "\u2308": "⌈", "\u2309": "⌉", "\u230A": "⌊", "\u230B": "⌋", "\u2329": "⟨", "\u232A": "⟩", "\u25CA": "◊", "\u2660": "♠", "\u2663": "♣", "\u2665": "♥", "\u2666": "♦" } }, html5: { entities: { "Æ": "\xC6", "Æ": "\xC6", "&": "&", "&": "&", "Á": "\xC1", "Á": "\xC1", "Ă": "\u0102", "Â": "\xC2", "Â": "\xC2", "А": "\u0410", "𝔄": "\u{1D504}", "À": "\xC0", "À": "\xC0", "Α": "\u0391", "Ā": "\u0100", "⩓": "\u2A53", "Ą": "\u0104", "𝔸": "\u{1D538}", "⁡": "\u2061", "Å": "\xC5", "Å": "\xC5", "𝒜": "\u{1D49C}", "≔": "\u2254", "Ã": "\xC3", "Ã": "\xC3", "Ä": "\xC4", "Ä": "\xC4", "∖": "\u2216", "⫧": "\u2AE7", "⌆": "\u2306", "Б": "\u0411", "∵": "\u2235", "ℬ": "\u212C", "Β": "\u0392", "𝔅": "\u{1D505}", "𝔹": "\u{1D539}", "˘": "\u02D8", "ℬ": "\u212C", "≎": "\u224E", "Ч": "\u0427", "©": "\xA9", "©": "\xA9", "Ć": "\u0106", "⋒": "\u22D2", "ⅅ": "\u2145", "ℭ": "\u212D", "Č": "\u010C", "Ç": "\xC7", "Ç": "\xC7", "Ĉ": "\u0108", "∰": "\u2230", "Ċ": "\u010A", "¸": "\xB8", "·": "\xB7", "ℭ": "\u212D", "Χ": "\u03A7", "⊙": "\u2299", "⊖": "\u2296", "⊕": "\u2295", "⊗": "\u2297", "∲": "\u2232", "”": "\u201D", "’": "\u2019", "∷": "\u2237", "⩴": "\u2A74", "≡": "\u2261", "∯": "\u222F", "∮": "\u222E", "ℂ": "\u2102", "∐": "\u2210", "∳": "\u2233", "⨯": "\u2A2F", "𝒞": "\u{1D49E}", "⋓": "\u22D3", "≍": "\u224D", "ⅅ": "\u2145", "⤑": "\u2911", "Ђ": "\u0402", "Ѕ": "\u0405", "Џ": "\u040F", "‡": "\u2021", "↡": "\u21A1", "⫤": "\u2AE4", "Ď": "\u010E", "Д": "\u0414", "∇": "\u2207", "Δ": "\u0394", "𝔇": "\u{1D507}", "´": "\xB4", "˙": "\u02D9", "˝": "\u02DD", "`": "`", "˜": "\u02DC", "⋄": "\u22C4", "ⅆ": "\u2146", "𝔻": "\u{1D53B}", "¨": "\xA8", "⃜": "\u20DC", "≐": "\u2250", "∯": "\u222F", "¨": "\xA8", "⇓": "\u21D3", "⇐": "\u21D0", "⇔": "\u21D4", "⫤": "\u2AE4", "⟸": "\u27F8", "⟺": "\u27FA", "⟹": "\u27F9", "⇒": "\u21D2", "⊨": "\u22A8", "⇑": "\u21D1", "⇕": "\u21D5", "∥": "\u2225", "↓": "\u2193", "⤓": "\u2913", "⇵": "\u21F5", "̑": "\u0311", "⥐": "\u2950", "⥞": "\u295E", "↽": "\u21BD", "⥖": "\u2956", "⥟": "\u295F", "⇁": "\u21C1", "⥗": "\u2957", "⊤": "\u22A4", "↧": "\u21A7", "⇓": "\u21D3", "𝒟": "\u{1D49F}", "Đ": "\u0110", "Ŋ": "\u014A", "Ð": "\xD0", "Ð": "\xD0", "É": "\xC9", "É": "\xC9", "Ě": "\u011A", "Ê": "\xCA", "Ê": "\xCA", "Э": "\u042D", "Ė": "\u0116", "𝔈": "\u{1D508}", "È": "\xC8", "È": "\xC8", "∈": "\u2208", "Ē": "\u0112", "◻": "\u25FB", "▫": "\u25AB", "Ę": "\u0118", "𝔼": "\u{1D53C}", "Ε": "\u0395", "⩵": "\u2A75", "≂": "\u2242", "⇌": "\u21CC", "ℰ": "\u2130", "⩳": "\u2A73", "Η": "\u0397", "Ë": "\xCB", "Ë": "\xCB", "∃": "\u2203", "ⅇ": "\u2147", "Ф": "\u0424", "𝔉": "\u{1D509}", "◼": "\u25FC", "▪": "\u25AA", "𝔽": "\u{1D53D}", "∀": "\u2200", "ℱ": "\u2131", "ℱ": "\u2131", "Ѓ": "\u0403", ">": ">", ">": ">", "Γ": "\u0393", "Ϝ": "\u03DC", "Ğ": "\u011E", "Ģ": "\u0122", "Ĝ": "\u011C", "Г": "\u0413", "Ġ": "\u0120", "𝔊": "\u{1D50A}", "⋙": "\u22D9", "𝔾": "\u{1D53E}", "≥": "\u2265", "⋛": "\u22DB", "≧": "\u2267", "⪢": "\u2AA2", "≷": "\u2277", "⩾": "\u2A7E", "≳": "\u2273", "𝒢": "\u{1D4A2}", "≫": "\u226B", "Ъ": "\u042A", "ˇ": "\u02C7", "^": "^", "Ĥ": "\u0124", "ℌ": "\u210C", "ℋ": "\u210B", "ℍ": "\u210D", "─": "\u2500", "ℋ": "\u210B", "Ħ": "\u0126", "≎": "\u224E", "≏": "\u224F", "Е": "\u0415", "IJ": "\u0132", "Ё": "\u0401", "Í": "\xCD", "Í": "\xCD", "Î": "\xCE", "Î": "\xCE", "И": "\u0418", "İ": "\u0130", "ℑ": "\u2111", "Ì": "\xCC", "Ì": "\xCC", "ℑ": "\u2111", "Ī": "\u012A", "ⅈ": "\u2148", "⇒": "\u21D2", "∬": "\u222C", "∫": "\u222B", "⋂": "\u22C2", "⁣": "\u2063", "⁢": "\u2062", "Į": "\u012E", "𝕀": "\u{1D540}", "Ι": "\u0399", "ℐ": "\u2110", "Ĩ": "\u0128", "І": "\u0406", "Ï": "\xCF", "Ï": "\xCF", "Ĵ": "\u0134", "Й": "\u0419", "𝔍": "\u{1D50D}", "𝕁": "\u{1D541}", "𝒥": "\u{1D4A5}", "Ј": "\u0408", "Є": "\u0404", "Х": "\u0425", "Ќ": "\u040C", "Κ": "\u039A", "Ķ": "\u0136", "К": "\u041A", "𝔎": "\u{1D50E}", "𝕂": "\u{1D542}", "𝒦": "\u{1D4A6}", "Љ": "\u0409", "<": "<", "<": "<", "Ĺ": "\u0139", "Λ": "\u039B", "⟪": "\u27EA", "ℒ": "\u2112", "↞": "\u219E", "Ľ": "\u013D", "Ļ": "\u013B", "Л": "\u041B", "⟨": "\u27E8", "←": "\u2190", "⇤": "\u21E4", "⇆": "\u21C6", "⌈": "\u2308", "⟦": "\u27E6", "⥡": "\u2961", "⇃": "\u21C3", "⥙": "\u2959", "⌊": "\u230A", "↔": "\u2194", "⥎": "\u294E", "⊣": "\u22A3", "↤": "\u21A4", "⥚": "\u295A", "⊲": "\u22B2", "⧏": "\u29CF", "⊴": "\u22B4", "⥑": "\u2951", "⥠": "\u2960", "↿": "\u21BF", "⥘": "\u2958", "↼": "\u21BC", "⥒": "\u2952", "⇐": "\u21D0", "⇔": "\u21D4", "⋚": "\u22DA", "≦": "\u2266", "≶": "\u2276", "⪡": "\u2AA1", "⩽": "\u2A7D", "≲": "\u2272", "𝔏": "\u{1D50F}", "⋘": "\u22D8", "⇚": "\u21DA", "Ŀ": "\u013F", "⟵": "\u27F5", "⟷": "\u27F7", "⟶": "\u27F6", "⟸": "\u27F8", "⟺": "\u27FA", "⟹": "\u27F9", "𝕃": "\u{1D543}", "↙": "\u2199", "↘": "\u2198", "ℒ": "\u2112", "↰": "\u21B0", "Ł": "\u0141", "≪": "\u226A", "⤅": "\u2905", "М": "\u041C", " ": "\u205F", "ℳ": "\u2133", "𝔐": "\u{1D510}", "∓": "\u2213", "𝕄": "\u{1D544}", "ℳ": "\u2133", "Μ": "\u039C", "Њ": "\u040A", "Ń": "\u0143", "Ň": "\u0147", "Ņ": "\u0145", "Н": "\u041D", "​": "\u200B", "​": "\u200B", "​": "\u200B", "​": "\u200B", "≫": "\u226B", "≪": "\u226A", "
": "\n", "𝔑": "\u{1D511}", "⁠": "\u2060", " ": "\xA0", "ℕ": "\u2115", "⫬": "\u2AEC", "≢": "\u2262", "≭": "\u226D", "∦": "\u2226", "∉": "\u2209", "≠": "\u2260", "≂̸": "\u2242\u0338", "∄": "\u2204", "≯": "\u226F", "≱": "\u2271", "≧̸": "\u2267\u0338", "≫̸": "\u226B\u0338", "≹": "\u2279", "⩾̸": "\u2A7E\u0338", "≵": "\u2275", "≎̸": "\u224E\u0338", "≏̸": "\u224F\u0338", "⋪": "\u22EA", "⧏̸": "\u29CF\u0338", "⋬": "\u22EC", "≮": "\u226E", "≰": "\u2270", "≸": "\u2278", "≪̸": "\u226A\u0338", "⩽̸": "\u2A7D\u0338", "≴": "\u2274", "⪢̸": "\u2AA2\u0338", "⪡̸": "\u2AA1\u0338", "⊀": "\u2280", "⪯̸": "\u2AAF\u0338", "⋠": "\u22E0", "∌": "\u220C", "⋫": "\u22EB", "⧐̸": "\u29D0\u0338", "⋭": "\u22ED", "⊏̸": "\u228F\u0338", "⋢": "\u22E2", "⊐̸": "\u2290\u0338", "⋣": "\u22E3", "⊂⃒": "\u2282\u20D2", "⊈": "\u2288", "⊁": "\u2281", "⪰̸": "\u2AB0\u0338", "⋡": "\u22E1", "≿̸": "\u227F\u0338", "⊃⃒": "\u2283\u20D2", "⊉": "\u2289", "≁": "\u2241", "≄": "\u2244", "≇": "\u2247", "≉": "\u2249", "∤": "\u2224", "𝒩": "\u{1D4A9}", "Ñ": "\xD1", "Ñ": "\xD1", "Ν": "\u039D", "Œ": "\u0152", "Ó": "\xD3", "Ó": "\xD3", "Ô": "\xD4", "Ô": "\xD4", "О": "\u041E", "Ő": "\u0150", "𝔒": "\u{1D512}", "Ò": "\xD2", "Ò": "\xD2", "Ō": "\u014C", "Ω": "\u03A9", "Ο": "\u039F", "𝕆": "\u{1D546}", "“": "\u201C", "‘": "\u2018", "⩔": "\u2A54", "𝒪": "\u{1D4AA}", "Ø": "\xD8", "Ø": "\xD8", "Õ": "\xD5", "Õ": "\xD5", "⨷": "\u2A37", "Ö": "\xD6", "Ö": "\xD6", "‾": "\u203E", "⏞": "\u23DE", "⎴": "\u23B4", "⏜": "\u23DC", "∂": "\u2202", "П": "\u041F", "𝔓": "\u{1D513}", "Φ": "\u03A6", "Π": "\u03A0", "±": "\xB1", "ℌ": "\u210C", "ℙ": "\u2119", "⪻": "\u2ABB", "≺": "\u227A", "⪯": "\u2AAF", "≼": "\u227C", "≾": "\u227E", "″": "\u2033", "∏": "\u220F", "∷": "\u2237", "∝": "\u221D", "𝒫": "\u{1D4AB}", "Ψ": "\u03A8", """: '"', """: '"', "𝔔": "\u{1D514}", "ℚ": "\u211A", "𝒬": "\u{1D4AC}", "⤐": "\u2910", "®": "\xAE", "®": "\xAE", "Ŕ": "\u0154", "⟫": "\u27EB", "↠": "\u21A0", "⤖": "\u2916", "Ř": "\u0158", "Ŗ": "\u0156", "Р": "\u0420", "ℜ": "\u211C", "∋": "\u220B", "⇋": "\u21CB", "⥯": "\u296F", "ℜ": "\u211C", "Ρ": "\u03A1", "⟩": "\u27E9", "→": "\u2192", "⇥": "\u21E5", "⇄": "\u21C4", "⌉": "\u2309", "⟧": "\u27E7", "⥝": "\u295D", "⇂": "\u21C2", "⥕": "\u2955", "⌋": "\u230B", "⊢": "\u22A2", "↦": "\u21A6", "⥛": "\u295B", "⊳": "\u22B3", "⧐": "\u29D0", "⊵": "\u22B5", "⥏": "\u294F", "⥜": "\u295C", "↾": "\u21BE", "⥔": "\u2954", "⇀": "\u21C0", "⥓": "\u2953", "⇒": "\u21D2", "ℝ": "\u211D", "⥰": "\u2970", "⇛": "\u21DB", "ℛ": "\u211B", "↱": "\u21B1", "⧴": "\u29F4", "Щ": "\u0429", "Ш": "\u0428", "Ь": "\u042C", "Ś": "\u015A", "⪼": "\u2ABC", "Š": "\u0160", "Ş": "\u015E", "Ŝ": "\u015C", "С": "\u0421", "𝔖": "\u{1D516}", "↓": "\u2193", "←": "\u2190", "→": "\u2192", "↑": "\u2191", "Σ": "\u03A3", "∘": "\u2218", "𝕊": "\u{1D54A}", "√": "\u221A", "□": "\u25A1", "⊓": "\u2293", "⊏": "\u228F", "⊑": "\u2291", "⊐": "\u2290", "⊒": "\u2292", "⊔": "\u2294", "𝒮": "\u{1D4AE}", "⋆": "\u22C6", "⋐": "\u22D0", "⋐": "\u22D0", "⊆": "\u2286", "≻": "\u227B", "⪰": "\u2AB0", "≽": "\u227D", "≿": "\u227F", "∋": "\u220B", "∑": "\u2211", "⋑": "\u22D1", "⊃": "\u2283", "⊇": "\u2287", "⋑": "\u22D1", "Þ": "\xDE", "Þ": "\xDE", "™": "\u2122", "Ћ": "\u040B", "Ц": "\u0426", "	": " ", "Τ": "\u03A4", "Ť": "\u0164", "Ţ": "\u0162", "Т": "\u0422", "𝔗": "\u{1D517}", "∴": "\u2234", "Θ": "\u0398", "  ": "\u205F\u200A", " ": "\u2009", "∼": "\u223C", "≃": "\u2243", "≅": "\u2245", "≈": "\u2248", "𝕋": "\u{1D54B}", "⃛": "\u20DB", "𝒯": "\u{1D4AF}", "Ŧ": "\u0166", "Ú": "\xDA", "Ú": "\xDA", "↟": "\u219F", "⥉": "\u2949", "Ў": "\u040E", "Ŭ": "\u016C", "Û": "\xDB", "Û": "\xDB", "У": "\u0423", "Ű": "\u0170", "𝔘": "\u{1D518}", "Ù": "\xD9", "Ù": "\xD9", "Ū": "\u016A", "_": "_", "⏟": "\u23DF", "⎵": "\u23B5", "⏝": "\u23DD", "⋃": "\u22C3", "⊎": "\u228E", "Ų": "\u0172", "𝕌": "\u{1D54C}", "↑": "\u2191", "⤒": "\u2912", "⇅": "\u21C5", "↕": "\u2195", "⥮": "\u296E", "⊥": "\u22A5", "↥": "\u21A5", "⇑": "\u21D1", "⇕": "\u21D5", "↖": "\u2196", "↗": "\u2197", "ϒ": "\u03D2", "Υ": "\u03A5", "Ů": "\u016E", "𝒰": "\u{1D4B0}", "Ũ": "\u0168", "Ü": "\xDC", "Ü": "\xDC", "⊫": "\u22AB", "⫫": "\u2AEB", "В": "\u0412", "⊩": "\u22A9", "⫦": "\u2AE6", "⋁": "\u22C1", "‖": "\u2016", "‖": "\u2016", "∣": "\u2223", "|": "|", "❘": "\u2758", "≀": "\u2240", " ": "\u200A", "𝔙": "\u{1D519}", "𝕍": "\u{1D54D}", "𝒱": "\u{1D4B1}", "⊪": "\u22AA", "Ŵ": "\u0174", "⋀": "\u22C0", "𝔚": "\u{1D51A}", "𝕎": "\u{1D54E}", "𝒲": "\u{1D4B2}", "𝔛": "\u{1D51B}", "Ξ": "\u039E", "𝕏": "\u{1D54F}", "𝒳": "\u{1D4B3}", "Я": "\u042F", "Ї": "\u0407", "Ю": "\u042E", "Ý": "\xDD", "Ý": "\xDD", "Ŷ": "\u0176", "Ы": "\u042B", "𝔜": "\u{1D51C}", "𝕐": "\u{1D550}", "𝒴": "\u{1D4B4}", "Ÿ": "\u0178", "Ж": "\u0416", "Ź": "\u0179", "Ž": "\u017D", "З": "\u0417", "Ż": "\u017B", "​": "\u200B", "Ζ": "\u0396", "ℨ": "\u2128", "ℤ": "\u2124", "𝒵": "\u{1D4B5}", "á": "\xE1", "á": "\xE1", "ă": "\u0103", "∾": "\u223E", "∾̳": "\u223E\u0333", "∿": "\u223F", "â": "\xE2", "â": "\xE2", "´": "\xB4", "´": "\xB4", "а": "\u0430", "æ": "\xE6", "æ": "\xE6", "⁡": "\u2061", "𝔞": "\u{1D51E}", "à": "\xE0", "à": "\xE0", "ℵ": "\u2135", "ℵ": "\u2135", "α": "\u03B1", "ā": "\u0101", "⨿": "\u2A3F", "&": "&", "&": "&", "∧": "\u2227", "⩕": "\u2A55", "⩜": "\u2A5C", "⩘": "\u2A58", "⩚": "\u2A5A", "∠": "\u2220", "⦤": "\u29A4", "∠": "\u2220", "∡": "\u2221", "⦨": "\u29A8", "⦩": "\u29A9", "⦪": "\u29AA", "⦫": "\u29AB", "⦬": "\u29AC", "⦭": "\u29AD", "⦮": "\u29AE", "⦯": "\u29AF", "∟": "\u221F", "⊾": "\u22BE", "⦝": "\u299D", "∢": "\u2222", "Å": "\xC5", "⍼": "\u237C", "ą": "\u0105", "𝕒": "\u{1D552}", "≈": "\u2248", "⩰": "\u2A70", "⩯": "\u2A6F", "≊": "\u224A", "≋": "\u224B", "'": "'", "≈": "\u2248", "≊": "\u224A", "å": "\xE5", "å": "\xE5", "𝒶": "\u{1D4B6}", "*": "*", "≈": "\u2248", "≍": "\u224D", "ã": "\xE3", "ã": "\xE3", "ä": "\xE4", "ä": "\xE4", "∳": "\u2233", "⨑": "\u2A11", "⫭": "\u2AED", "≌": "\u224C", "϶": "\u03F6", "‵": "\u2035", "∽": "\u223D", "⋍": "\u22CD", "⊽": "\u22BD", "⌅": "\u2305", "⌅": "\u2305", "⎵": "\u23B5", "⎶": "\u23B6", "≌": "\u224C", "б": "\u0431", "„": "\u201E", "∵": "\u2235", "∵": "\u2235", "⦰": "\u29B0", "϶": "\u03F6", "ℬ": "\u212C", "β": "\u03B2", "ℶ": "\u2136", "≬": "\u226C", "𝔟": "\u{1D51F}", "⋂": "\u22C2", "◯": "\u25EF", "⋃": "\u22C3", "⨀": "\u2A00", "⨁": "\u2A01", "⨂": "\u2A02", "⨆": "\u2A06", "★": "\u2605", "▽": "\u25BD", "△": "\u25B3", "⨄": "\u2A04", "⋁": "\u22C1", "⋀": "\u22C0", "⤍": "\u290D", "⧫": "\u29EB", "▪": "\u25AA", "▴": "\u25B4", "▾": "\u25BE", "◂": "\u25C2", "▸": "\u25B8", "␣": "\u2423", "▒": "\u2592", "░": "\u2591", "▓": "\u2593", "█": "\u2588", "=⃥": "=\u20E5", "≡⃥": "\u2261\u20E5", "⌐": "\u2310", "𝕓": "\u{1D553}", "⊥": "\u22A5", "⊥": "\u22A5", "⋈": "\u22C8", "╗": "\u2557", "╔": "\u2554", "╖": "\u2556", "╓": "\u2553", "═": "\u2550", "╦": "\u2566", "╩": "\u2569", "╤": "\u2564", "╧": "\u2567", "╝": "\u255D", "╚": "\u255A", "╜": "\u255C", "╙": "\u2559", "║": "\u2551", "╬": "\u256C", "╣": "\u2563", "╠": "\u2560", "╫": "\u256B", "╢": "\u2562", "╟": "\u255F", "⧉": "\u29C9", "╕": "\u2555", "╒": "\u2552", "┐": "\u2510", "┌": "\u250C", "─": "\u2500", "╥": "\u2565", "╨": "\u2568", "┬": "\u252C", "┴": "\u2534", "⊟": "\u229F", "⊞": "\u229E", "⊠": "\u22A0", "╛": "\u255B", "╘": "\u2558", "┘": "\u2518", "└": "\u2514", "│": "\u2502", "╪": "\u256A", "╡": "\u2561", "╞": "\u255E", "┼": "\u253C", "┤": "\u2524", "├": "\u251C", "‵": "\u2035", "˘": "\u02D8", "¦": "\xA6", "¦": "\xA6", "𝒷": "\u{1D4B7}", "⁏": "\u204F", "∽": "\u223D", "⋍": "\u22CD", "\": "\\", "⧅": "\u29C5", "⟈": "\u27C8", "•": "\u2022", "•": "\u2022", "≎": "\u224E", "⪮": "\u2AAE", "≏": "\u224F", "≏": "\u224F", "ć": "\u0107", "∩": "\u2229", "⩄": "\u2A44", "⩉": "\u2A49", "⩋": "\u2A4B", "⩇": "\u2A47", "⩀": "\u2A40", "∩︀": "\u2229\uFE00", "⁁": "\u2041", "ˇ": "\u02C7", "⩍": "\u2A4D", "č": "\u010D", "ç": "\xE7", "ç": "\xE7", "ĉ": "\u0109", "⩌": "\u2A4C", "⩐": "\u2A50", "ċ": "\u010B", "¸": "\xB8", "¸": "\xB8", "⦲": "\u29B2", "¢": "\xA2", "¢": "\xA2", "·": "\xB7", "𝔠": "\u{1D520}", "ч": "\u0447", "✓": "\u2713", "✓": "\u2713", "χ": "\u03C7", "○": "\u25CB", "⧃": "\u29C3", "ˆ": "\u02C6", "≗": "\u2257", "↺": "\u21BA", "↻": "\u21BB", "®": "\xAE", "Ⓢ": "\u24C8", "⊛": "\u229B", "⊚": "\u229A", "⊝": "\u229D", "≗": "\u2257", "⨐": "\u2A10", "⫯": "\u2AEF", "⧂": "\u29C2", "♣": "\u2663", "♣": "\u2663", ":": ":", "≔": "\u2254", "≔": "\u2254", ",": ",", "@": "@", "∁": "\u2201", "∘": "\u2218", "∁": "\u2201", "ℂ": "\u2102", "≅": "\u2245", "⩭": "\u2A6D", "∮": "\u222E", "𝕔": "\u{1D554}", "∐": "\u2210", "©": "\xA9", "©": "\xA9", "℗": "\u2117", "↵": "\u21B5", "✗": "\u2717", "𝒸": "\u{1D4B8}", "⫏": "\u2ACF", "⫑": "\u2AD1", "⫐": "\u2AD0", "⫒": "\u2AD2", "⋯": "\u22EF", "⤸": "\u2938", "⤵": "\u2935", "⋞": "\u22DE", "⋟": "\u22DF", "↶": "\u21B6", "⤽": "\u293D", "∪": "\u222A", "⩈": "\u2A48", "⩆": "\u2A46", "⩊": "\u2A4A", "⊍": "\u228D", "⩅": "\u2A45", "∪︀": "\u222A\uFE00", "↷": "\u21B7", "⤼": "\u293C", "⋞": "\u22DE", "⋟": "\u22DF", "⋎": "\u22CE", "⋏": "\u22CF", "¤": "\xA4", "¤": "\xA4", "↶": "\u21B6", "↷": "\u21B7", "⋎": "\u22CE", "⋏": "\u22CF", "∲": "\u2232", "∱": "\u2231", "⌭": "\u232D", "⇓": "\u21D3", "⥥": "\u2965", "†": "\u2020", "ℸ": "\u2138", "↓": "\u2193", "‐": "\u2010", "⊣": "\u22A3", "⤏": "\u290F", "˝": "\u02DD", "ď": "\u010F", "д": "\u0434", "ⅆ": "\u2146", "‡": "\u2021", "⇊": "\u21CA", "⩷": "\u2A77", "°": "\xB0", "°": "\xB0", "δ": "\u03B4", "⦱": "\u29B1", "⥿": "\u297F", "𝔡": "\u{1D521}", "⇃": "\u21C3", "⇂": "\u21C2", "⋄": "\u22C4", "⋄": "\u22C4", "♦": "\u2666", "♦": "\u2666", "¨": "\xA8", "ϝ": "\u03DD", "⋲": "\u22F2", "÷": "\xF7", "÷": "\xF7", "÷": "\xF7", "⋇": "\u22C7", "⋇": "\u22C7", "ђ": "\u0452", "⌞": "\u231E", "⌍": "\u230D", "$": "$", "𝕕": "\u{1D555}", "˙": "\u02D9", "≐": "\u2250", "≑": "\u2251", "∸": "\u2238", "∔": "\u2214", "⊡": "\u22A1", "⌆": "\u2306", "↓": "\u2193", "⇊": "\u21CA", "⇃": "\u21C3", "⇂": "\u21C2", "⤐": "\u2910", "⌟": "\u231F", "⌌": "\u230C", "𝒹": "\u{1D4B9}", "ѕ": "\u0455", "⧶": "\u29F6", "đ": "\u0111", "⋱": "\u22F1", "▿": "\u25BF", "▾": "\u25BE", "⇵": "\u21F5", "⥯": "\u296F", "⦦": "\u29A6", "џ": "\u045F", "⟿": "\u27FF", "⩷": "\u2A77", "≑": "\u2251", "é": "\xE9", "é": "\xE9", "⩮": "\u2A6E", "ě": "\u011B", "≖": "\u2256", "ê": "\xEA", "ê": "\xEA", "≕": "\u2255", "э": "\u044D", "ė": "\u0117", "ⅇ": "\u2147", "≒": "\u2252", "𝔢": "\u{1D522}", "⪚": "\u2A9A", "è": "\xE8", "è": "\xE8", "⪖": "\u2A96", "⪘": "\u2A98", "⪙": "\u2A99", "⏧": "\u23E7", "ℓ": "\u2113", "⪕": "\u2A95", "⪗": "\u2A97", "ē": "\u0113", "∅": "\u2205", "∅": "\u2205", "∅": "\u2205", " ": "\u2004", " ": "\u2005", " ": "\u2003", "ŋ": "\u014B", " ": "\u2002", "ę": "\u0119", "𝕖": "\u{1D556}", "⋕": "\u22D5", "⧣": "\u29E3", "⩱": "\u2A71", "ε": "\u03B5", "ε": "\u03B5", "ϵ": "\u03F5", "≖": "\u2256", "≕": "\u2255", "≂": "\u2242", "⪖": "\u2A96", "⪕": "\u2A95", "=": "=", "≟": "\u225F", "≡": "\u2261", "⩸": "\u2A78", "⧥": "\u29E5", "≓": "\u2253", "⥱": "\u2971", "ℯ": "\u212F", "≐": "\u2250", "≂": "\u2242", "η": "\u03B7", "ð": "\xF0", "ð": "\xF0", "ë": "\xEB", "ë": "\xEB", "€": "\u20AC", "!": "!", "∃": "\u2203", "ℰ": "\u2130", "ⅇ": "\u2147", "≒": "\u2252", "ф": "\u0444", "♀": "\u2640", "ffi": "\uFB03", "ff": "\uFB00", "ffl": "\uFB04", "𝔣": "\u{1D523}", "fi": "\uFB01", "fj": "fj", "♭": "\u266D", "fl": "\uFB02", "▱": "\u25B1", "ƒ": "\u0192", "𝕗": "\u{1D557}", "∀": "\u2200", "⋔": "\u22D4", "⫙": "\u2AD9", "⨍": "\u2A0D", "½": "\xBD", "½": "\xBD", "⅓": "\u2153", "¼": "\xBC", "¼": "\xBC", "⅕": "\u2155", "⅙": "\u2159", "⅛": "\u215B", "⅔": "\u2154", "⅖": "\u2156", "¾": "\xBE", "¾": "\xBE", "⅗": "\u2157", "⅜": "\u215C", "⅘": "\u2158", "⅚": "\u215A", "⅝": "\u215D", "⅞": "\u215E", "⁄": "\u2044", "⌢": "\u2322", "𝒻": "\u{1D4BB}", "≧": "\u2267", "⪌": "\u2A8C", "ǵ": "\u01F5", "γ": "\u03B3", "ϝ": "\u03DD", "⪆": "\u2A86", "ğ": "\u011F", "ĝ": "\u011D", "г": "\u0433", "ġ": "\u0121", "≥": "\u2265", "⋛": "\u22DB", "≥": "\u2265", "≧": "\u2267", "⩾": "\u2A7E", "⩾": "\u2A7E", "⪩": "\u2AA9", "⪀": "\u2A80", "⪂": "\u2A82", "⪄": "\u2A84", "⋛︀": "\u22DB\uFE00", "⪔": "\u2A94", "𝔤": "\u{1D524}", "≫": "\u226B", "⋙": "\u22D9", "ℷ": "\u2137", "ѓ": "\u0453", "≷": "\u2277", "⪒": "\u2A92", "⪥": "\u2AA5", "⪤": "\u2AA4", "≩": "\u2269", "⪊": "\u2A8A", "⪊": "\u2A8A", "⪈": "\u2A88", "⪈": "\u2A88", "≩": "\u2269", "⋧": "\u22E7", "𝕘": "\u{1D558}", "`": "`", "ℊ": "\u210A", "≳": "\u2273", "⪎": "\u2A8E", "⪐": "\u2A90", ">": ">", ">": ">", "⪧": "\u2AA7", "⩺": "\u2A7A", "⋗": "\u22D7", "⦕": "\u2995", "⩼": "\u2A7C", "⪆": "\u2A86", "⥸": "\u2978", "⋗": "\u22D7", "⋛": "\u22DB", "⪌": "\u2A8C", "≷": "\u2277", "≳": "\u2273", "≩︀": "\u2269\uFE00", "≩︀": "\u2269\uFE00", "⇔": "\u21D4", " ": "\u200A", "½": "\xBD", "ℋ": "\u210B", "ъ": "\u044A", "↔": "\u2194", "⥈": "\u2948", "↭": "\u21AD", "ℏ": "\u210F", "ĥ": "\u0125", "♥": "\u2665", "♥": "\u2665", "…": "\u2026", "⊹": "\u22B9", "𝔥": "\u{1D525}", "⤥": "\u2925", "⤦": "\u2926", "⇿": "\u21FF", "∻": "\u223B", "↩": "\u21A9", "↪": "\u21AA", "𝕙": "\u{1D559}", "―": "\u2015", "𝒽": "\u{1D4BD}", "ℏ": "\u210F", "ħ": "\u0127", "⁃": "\u2043", "‐": "\u2010", "í": "\xED", "í": "\xED", "⁣": "\u2063", "î": "\xEE", "î": "\xEE", "и": "\u0438", "е": "\u0435", "¡": "\xA1", "¡": "\xA1", "⇔": "\u21D4", "𝔦": "\u{1D526}", "ì": "\xEC", "ì": "\xEC", "ⅈ": "\u2148", "⨌": "\u2A0C", "∭": "\u222D", "⧜": "\u29DC", "℩": "\u2129", "ij": "\u0133", "ī": "\u012B", "ℑ": "\u2111", "ℐ": "\u2110", "ℑ": "\u2111", "ı": "\u0131", "⊷": "\u22B7", "Ƶ": "\u01B5", "∈": "\u2208", "℅": "\u2105", "∞": "\u221E", "⧝": "\u29DD", "ı": "\u0131", "∫": "\u222B", "⊺": "\u22BA", "ℤ": "\u2124", "⊺": "\u22BA", "⨗": "\u2A17", "⨼": "\u2A3C", "ё": "\u0451", "į": "\u012F", "𝕚": "\u{1D55A}", "ι": "\u03B9", "⨼": "\u2A3C", "¿": "\xBF", "¿": "\xBF", "𝒾": "\u{1D4BE}", "∈": "\u2208", "⋹": "\u22F9", "⋵": "\u22F5", "⋴": "\u22F4", "⋳": "\u22F3", "∈": "\u2208", "⁢": "\u2062", "ĩ": "\u0129", "і": "\u0456", "ï": "\xEF", "ï": "\xEF", "ĵ": "\u0135", "й": "\u0439", "𝔧": "\u{1D527}", "ȷ": "\u0237", "𝕛": "\u{1D55B}", "𝒿": "\u{1D4BF}", "ј": "\u0458", "є": "\u0454", "κ": "\u03BA", "ϰ": "\u03F0", "ķ": "\u0137", "к": "\u043A", "𝔨": "\u{1D528}", "ĸ": "\u0138", "х": "\u0445", "ќ": "\u045C", "𝕜": "\u{1D55C}", "𝓀": "\u{1D4C0}", "⇚": "\u21DA", "⇐": "\u21D0", "⤛": "\u291B", "⤎": "\u290E", "≦": "\u2266", "⪋": "\u2A8B", "⥢": "\u2962", "ĺ": "\u013A", "⦴": "\u29B4", "ℒ": "\u2112", "λ": "\u03BB", "⟨": "\u27E8", "⦑": "\u2991", "⟨": "\u27E8", "⪅": "\u2A85", "«": "\xAB", "«": "\xAB", "←": "\u2190", "⇤": "\u21E4", "⤟": "\u291F", "⤝": "\u291D", "↩": "\u21A9", "↫": "\u21AB", "⤹": "\u2939", "⥳": "\u2973", "↢": "\u21A2", "⪫": "\u2AAB", "⤙": "\u2919", "⪭": "\u2AAD", "⪭︀": "\u2AAD\uFE00", "⤌": "\u290C", "❲": "\u2772", "{": "{", "[": "[", "⦋": "\u298B", "⦏": "\u298F", "⦍": "\u298D", "ľ": "\u013E", "ļ": "\u013C", "⌈": "\u2308", "{": "{", "л": "\u043B", "⤶": "\u2936", "“": "\u201C", "„": "\u201E", "⥧": "\u2967", "⥋": "\u294B", "↲": "\u21B2", "≤": "\u2264", "←": "\u2190", "↢": "\u21A2", "↽": "\u21BD", "↼": "\u21BC", "⇇": "\u21C7", "↔": "\u2194", "⇆": "\u21C6", "⇋": "\u21CB", "↭": "\u21AD", "⋋": "\u22CB", "⋚": "\u22DA", "≤": "\u2264", "≦": "\u2266", "⩽": "\u2A7D", "⩽": "\u2A7D", "⪨": "\u2AA8", "⩿": "\u2A7F", "⪁": "\u2A81", "⪃": "\u2A83", "⋚︀": "\u22DA\uFE00", "⪓": "\u2A93", "⪅": "\u2A85", "⋖": "\u22D6", "⋚": "\u22DA", "⪋": "\u2A8B", "≶": "\u2276", "≲": "\u2272", "⥼": "\u297C", "⌊": "\u230A", "𝔩": "\u{1D529}", "≶": "\u2276", "⪑": "\u2A91", "↽": "\u21BD", "↼": "\u21BC", "⥪": "\u296A", "▄": "\u2584", "љ": "\u0459", "≪": "\u226A", "⇇": "\u21C7", "⌞": "\u231E", "⥫": "\u296B", "◺": "\u25FA", "ŀ": "\u0140", "⎰": "\u23B0", "⎰": "\u23B0", "≨": "\u2268", "⪉": "\u2A89", "⪉": "\u2A89", "⪇": "\u2A87", "⪇": "\u2A87", "≨": "\u2268", "⋦": "\u22E6", "⟬": "\u27EC", "⇽": "\u21FD", "⟦": "\u27E6", "⟵": "\u27F5", "⟷": "\u27F7", "⟼": "\u27FC", "⟶": "\u27F6", "↫": "\u21AB", "↬": "\u21AC", "⦅": "\u2985", "𝕝": "\u{1D55D}", "⨭": "\u2A2D", "⨴": "\u2A34", "∗": "\u2217", "_": "_", "◊": "\u25CA", "◊": "\u25CA", "⧫": "\u29EB", "(": "(", "⦓": "\u2993", "⇆": "\u21C6", "⌟": "\u231F", "⇋": "\u21CB", "⥭": "\u296D", "‎": "\u200E", "⊿": "\u22BF", "‹": "\u2039", "𝓁": "\u{1D4C1}", "↰": "\u21B0", "≲": "\u2272", "⪍": "\u2A8D", "⪏": "\u2A8F", "[": "[", "‘": "\u2018", "‚": "\u201A", "ł": "\u0142", "<": "<", "<": "<", "⪦": "\u2AA6", "⩹": "\u2A79", "⋖": "\u22D6", "⋋": "\u22CB", "⋉": "\u22C9", "⥶": "\u2976", "⩻": "\u2A7B", "⦖": "\u2996", "◃": "\u25C3", "⊴": "\u22B4", "◂": "\u25C2", "⥊": "\u294A", "⥦": "\u2966", "≨︀": "\u2268\uFE00", "≨︀": "\u2268\uFE00", "∺": "\u223A", "¯": "\xAF", "¯": "\xAF", "♂": "\u2642", "✠": "\u2720", "✠": "\u2720", "↦": "\u21A6", "↦": "\u21A6", "↧": "\u21A7", "↤": "\u21A4", "↥": "\u21A5", "▮": "\u25AE", "⨩": "\u2A29", "м": "\u043C", "—": "\u2014", "∡": "\u2221", "𝔪": "\u{1D52A}", "℧": "\u2127", "µ": "\xB5", "µ": "\xB5", "∣": "\u2223", "*": "*", "⫰": "\u2AF0", "·": "\xB7", "·": "\xB7", "−": "\u2212", "⊟": "\u229F", "∸": "\u2238", "⨪": "\u2A2A", "⫛": "\u2ADB", "…": "\u2026", "∓": "\u2213", "⊧": "\u22A7", "𝕞": "\u{1D55E}", "∓": "\u2213", "𝓂": "\u{1D4C2}", "∾": "\u223E", "μ": "\u03BC", "⊸": "\u22B8", "⊸": "\u22B8", "⋙̸": "\u22D9\u0338", "≫⃒": "\u226B\u20D2", "≫̸": "\u226B\u0338", "⇍": "\u21CD", "⇎": "\u21CE", "⋘̸": "\u22D8\u0338", "≪⃒": "\u226A\u20D2", "≪̸": "\u226A\u0338", "⇏": "\u21CF", "⊯": "\u22AF", "⊮": "\u22AE", "∇": "\u2207", "ń": "\u0144", "∠⃒": "\u2220\u20D2", "≉": "\u2249", "⩰̸": "\u2A70\u0338", "≋̸": "\u224B\u0338", "ʼn": "\u0149", "≉": "\u2249", "♮": "\u266E", "♮": "\u266E", "ℕ": "\u2115", " ": "\xA0", " ": "\xA0", "≎̸": "\u224E\u0338", "≏̸": "\u224F\u0338", "⩃": "\u2A43", "ň": "\u0148", "ņ": "\u0146", "≇": "\u2247", "⩭̸": "\u2A6D\u0338", "⩂": "\u2A42", "н": "\u043D", "–": "\u2013", "≠": "\u2260", "⇗": "\u21D7", "⤤": "\u2924", "↗": "\u2197", "↗": "\u2197", "≐̸": "\u2250\u0338", "≢": "\u2262", "⤨": "\u2928", "≂̸": "\u2242\u0338", "∄": "\u2204", "∄": "\u2204", "𝔫": "\u{1D52B}", "≧̸": "\u2267\u0338", "≱": "\u2271", "≱": "\u2271", "≧̸": "\u2267\u0338", "⩾̸": "\u2A7E\u0338", "⩾̸": "\u2A7E\u0338", "≵": "\u2275", "≯": "\u226F", "≯": "\u226F", "⇎": "\u21CE", "↮": "\u21AE", "⫲": "\u2AF2", "∋": "\u220B", "⋼": "\u22FC", "⋺": "\u22FA", "∋": "\u220B", "њ": "\u045A", "⇍": "\u21CD", "≦̸": "\u2266\u0338", "↚": "\u219A", "‥": "\u2025", "≰": "\u2270", "↚": "\u219A", "↮": "\u21AE", "≰": "\u2270", "≦̸": "\u2266\u0338", "⩽̸": "\u2A7D\u0338", "⩽̸": "\u2A7D\u0338", "≮": "\u226E", "≴": "\u2274", "≮": "\u226E", "⋪": "\u22EA", "⋬": "\u22EC", "∤": "\u2224", "𝕟": "\u{1D55F}", "¬": "\xAC", "¬": "\xAC", "∉": "\u2209", "⋹̸": "\u22F9\u0338", "⋵̸": "\u22F5\u0338", "∉": "\u2209", "⋷": "\u22F7", "⋶": "\u22F6", "∌": "\u220C", "∌": "\u220C", "⋾": "\u22FE", "⋽": "\u22FD", "∦": "\u2226", "∦": "\u2226", "⫽⃥": "\u2AFD\u20E5", "∂̸": "\u2202\u0338", "⨔": "\u2A14", "⊀": "\u2280", "⋠": "\u22E0", "⪯̸": "\u2AAF\u0338", "⊀": "\u2280", "⪯̸": "\u2AAF\u0338", "⇏": "\u21CF", "↛": "\u219B", "⤳̸": "\u2933\u0338", "↝̸": "\u219D\u0338", "↛": "\u219B", "⋫": "\u22EB", "⋭": "\u22ED", "⊁": "\u2281", "⋡": "\u22E1", "⪰̸": "\u2AB0\u0338", "𝓃": "\u{1D4C3}", "∤": "\u2224", "∦": "\u2226", "≁": "\u2241", "≄": "\u2244", "≄": "\u2244", "∤": "\u2224", "∦": "\u2226", "⋢": "\u22E2", "⋣": "\u22E3", "⊄": "\u2284", "⫅̸": "\u2AC5\u0338", "⊈": "\u2288", "⊂⃒": "\u2282\u20D2", "⊈": "\u2288", "⫅̸": "\u2AC5\u0338", "⊁": "\u2281", "⪰̸": "\u2AB0\u0338", "⊅": "\u2285", "⫆̸": "\u2AC6\u0338", "⊉": "\u2289", "⊃⃒": "\u2283\u20D2", "⊉": "\u2289", "⫆̸": "\u2AC6\u0338", "≹": "\u2279", "ñ": "\xF1", "ñ": "\xF1", "≸": "\u2278", "⋪": "\u22EA", "⋬": "\u22EC", "⋫": "\u22EB", "⋭": "\u22ED", "ν": "\u03BD", "#": "#", "№": "\u2116", " ": "\u2007", "⊭": "\u22AD", "⤄": "\u2904", "≍⃒": "\u224D\u20D2", "⊬": "\u22AC", "≥⃒": "\u2265\u20D2", ">⃒": ">\u20D2", "⧞": "\u29DE", "⤂": "\u2902", "≤⃒": "\u2264\u20D2", "<⃒": "<\u20D2", "⊴⃒": "\u22B4\u20D2", "⤃": "\u2903", "⊵⃒": "\u22B5\u20D2", "∼⃒": "\u223C\u20D2", "⇖": "\u21D6", "⤣": "\u2923", "↖": "\u2196", "↖": "\u2196", "⤧": "\u2927", "Ⓢ": "\u24C8", "ó": "\xF3", "ó": "\xF3", "⊛": "\u229B", "⊚": "\u229A", "ô": "\xF4", "ô": "\xF4", "о": "\u043E", "⊝": "\u229D", "ő": "\u0151", "⨸": "\u2A38", "⊙": "\u2299", "⦼": "\u29BC", "œ": "\u0153", "⦿": "\u29BF", "𝔬": "\u{1D52C}", "˛": "\u02DB", "ò": "\xF2", "ò": "\xF2", "⧁": "\u29C1", "⦵": "\u29B5", "Ω": "\u03A9", "∮": "\u222E", "↺": "\u21BA", "⦾": "\u29BE", "⦻": "\u29BB", "‾": "\u203E", "⧀": "\u29C0", "ō": "\u014D", "ω": "\u03C9", "ο": "\u03BF", "⦶": "\u29B6", "⊖": "\u2296", "𝕠": "\u{1D560}", "⦷": "\u29B7", "⦹": "\u29B9", "⊕": "\u2295", "∨": "\u2228", "↻": "\u21BB", "⩝": "\u2A5D", "ℴ": "\u2134", "ℴ": "\u2134", "ª": "\xAA", "ª": "\xAA", "º": "\xBA", "º": "\xBA", "⊶": "\u22B6", "⩖": "\u2A56", "⩗": "\u2A57", "⩛": "\u2A5B", "ℴ": "\u2134", "ø": "\xF8", "ø": "\xF8", "⊘": "\u2298", "õ": "\xF5", "õ": "\xF5", "⊗": "\u2297", "⨶": "\u2A36", "ö": "\xF6", "ö": "\xF6", "⌽": "\u233D", "∥": "\u2225", "¶": "\xB6", "¶": "\xB6", "∥": "\u2225", "⫳": "\u2AF3", "⫽": "\u2AFD", "∂": "\u2202", "п": "\u043F", "%": "%", ".": ".", "‰": "\u2030", "⊥": "\u22A5", "‱": "\u2031", "𝔭": "\u{1D52D}", "φ": "\u03C6", "ϕ": "\u03D5", "ℳ": "\u2133", "☎": "\u260E", "π": "\u03C0", "⋔": "\u22D4", "ϖ": "\u03D6", "ℏ": "\u210F", "ℎ": "\u210E", "ℏ": "\u210F", "+": "+", "⨣": "\u2A23", "⊞": "\u229E", "⨢": "\u2A22", "∔": "\u2214", "⨥": "\u2A25", "⩲": "\u2A72", "±": "\xB1", "±": "\xB1", "⨦": "\u2A26", "⨧": "\u2A27", "±": "\xB1", "⨕": "\u2A15", "𝕡": "\u{1D561}", "£": "\xA3", "£": "\xA3", "≺": "\u227A", "⪳": "\u2AB3", "⪷": "\u2AB7", "≼": "\u227C", "⪯": "\u2AAF", "≺": "\u227A", "⪷": "\u2AB7", "≼": "\u227C", "⪯": "\u2AAF", "⪹": "\u2AB9", "⪵": "\u2AB5", "⋨": "\u22E8", "≾": "\u227E", "′": "\u2032", "ℙ": "\u2119", "⪵": "\u2AB5", "⪹": "\u2AB9", "⋨": "\u22E8", "∏": "\u220F", "⌮": "\u232E", "⌒": "\u2312", "⌓": "\u2313", "∝": "\u221D", "∝": "\u221D", "≾": "\u227E", "⊰": "\u22B0", "𝓅": "\u{1D4C5}", "ψ": "\u03C8", " ": "\u2008", "𝔮": "\u{1D52E}", "⨌": "\u2A0C", "𝕢": "\u{1D562}", "⁗": "\u2057", "𝓆": "\u{1D4C6}", "ℍ": "\u210D", "⨖": "\u2A16", "?": "?", "≟": "\u225F", """: '"', """: '"', "⇛": "\u21DB", "⇒": "\u21D2", "⤜": "\u291C", "⤏": "\u290F", "⥤": "\u2964", "∽̱": "\u223D\u0331", "ŕ": "\u0155", "√": "\u221A", "⦳": "\u29B3", "⟩": "\u27E9", "⦒": "\u2992", "⦥": "\u29A5", "⟩": "\u27E9", "»": "\xBB", "»": "\xBB", "→": "\u2192", "⥵": "\u2975", "⇥": "\u21E5", "⤠": "\u2920", "⤳": "\u2933", "⤞": "\u291E", "↪": "\u21AA", "↬": "\u21AC", "⥅": "\u2945", "⥴": "\u2974", "↣": "\u21A3", "↝": "\u219D", "⤚": "\u291A", "∶": "\u2236", "ℚ": "\u211A", "⤍": "\u290D", "❳": "\u2773", "}": "}", "]": "]", "⦌": "\u298C", "⦎": "\u298E", "⦐": "\u2990", "ř": "\u0159", "ŗ": "\u0157", "⌉": "\u2309", "}": "}", "р": "\u0440", "⤷": "\u2937", "⥩": "\u2969", "”": "\u201D", "”": "\u201D", "↳": "\u21B3", "ℜ": "\u211C", "ℛ": "\u211B", "ℜ": "\u211C", "ℝ": "\u211D", "▭": "\u25AD", "®": "\xAE", "®": "\xAE", "⥽": "\u297D", "⌋": "\u230B", "𝔯": "\u{1D52F}", "⇁": "\u21C1", "⇀": "\u21C0", "⥬": "\u296C", "ρ": "\u03C1", "ϱ": "\u03F1", "→": "\u2192", "↣": "\u21A3", "⇁": "\u21C1", "⇀": "\u21C0", "⇄": "\u21C4", "⇌": "\u21CC", "⇉": "\u21C9", "↝": "\u219D", "⋌": "\u22CC", "˚": "\u02DA", "≓": "\u2253", "⇄": "\u21C4", "⇌": "\u21CC", "‏": "\u200F", "⎱": "\u23B1", "⎱": "\u23B1", "⫮": "\u2AEE", "⟭": "\u27ED", "⇾": "\u21FE", "⟧": "\u27E7", "⦆": "\u2986", "𝕣": "\u{1D563}", "⨮": "\u2A2E", "⨵": "\u2A35", ")": ")", "⦔": "\u2994", "⨒": "\u2A12", "⇉": "\u21C9", "›": "\u203A", "𝓇": "\u{1D4C7}", "↱": "\u21B1", "]": "]", "’": "\u2019", "’": "\u2019", "⋌": "\u22CC", "⋊": "\u22CA", "▹": "\u25B9", "⊵": "\u22B5", "▸": "\u25B8", "⧎": "\u29CE", "⥨": "\u2968", "℞": "\u211E", "ś": "\u015B", "‚": "\u201A", "≻": "\u227B", "⪴": "\u2AB4", "⪸": "\u2AB8", "š": "\u0161", "≽": "\u227D", "⪰": "\u2AB0", "ş": "\u015F", "ŝ": "\u015D", "⪶": "\u2AB6", "⪺": "\u2ABA", "⋩": "\u22E9", "⨓": "\u2A13", "≿": "\u227F", "с": "\u0441", "⋅": "\u22C5", "⊡": "\u22A1", "⩦": "\u2A66", "⇘": "\u21D8", "⤥": "\u2925", "↘": "\u2198", "↘": "\u2198", "§": "\xA7", "§": "\xA7", ";": ";", "⤩": "\u2929", "∖": "\u2216", "∖": "\u2216", "✶": "\u2736", "𝔰": "\u{1D530}", "⌢": "\u2322", "♯": "\u266F", "щ": "\u0449", "ш": "\u0448", "∣": "\u2223", "∥": "\u2225", "­": "\xAD", "­": "\xAD", "σ": "\u03C3", "ς": "\u03C2", "ς": "\u03C2", "∼": "\u223C", "⩪": "\u2A6A", "≃": "\u2243", "≃": "\u2243", "⪞": "\u2A9E", "⪠": "\u2AA0", "⪝": "\u2A9D", "⪟": "\u2A9F", "≆": "\u2246", "⨤": "\u2A24", "⥲": "\u2972", "←": "\u2190", "∖": "\u2216", "⨳": "\u2A33", "⧤": "\u29E4", "∣": "\u2223", "⌣": "\u2323", "⪪": "\u2AAA", "⪬": "\u2AAC", "⪬︀": "\u2AAC\uFE00", "ь": "\u044C", "/": "/", "⧄": "\u29C4", "⌿": "\u233F", "𝕤": "\u{1D564}", "♠": "\u2660", "♠": "\u2660", "∥": "\u2225", "⊓": "\u2293", "⊓︀": "\u2293\uFE00", "⊔": "\u2294", "⊔︀": "\u2294\uFE00", "⊏": "\u228F", "⊑": "\u2291", "⊏": "\u228F", "⊑": "\u2291", "⊐": "\u2290", "⊒": "\u2292", "⊐": "\u2290", "⊒": "\u2292", "□": "\u25A1", "□": "\u25A1", "▪": "\u25AA", "▪": "\u25AA", "→": "\u2192", "𝓈": "\u{1D4C8}", "∖": "\u2216", "⌣": "\u2323", "⋆": "\u22C6", "☆": "\u2606", "★": "\u2605", "ϵ": "\u03F5", "ϕ": "\u03D5", "¯": "\xAF", "⊂": "\u2282", "⫅": "\u2AC5", "⪽": "\u2ABD", "⊆": "\u2286", "⫃": "\u2AC3", "⫁": "\u2AC1", "⫋": "\u2ACB", "⊊": "\u228A", "⪿": "\u2ABF", "⥹": "\u2979", "⊂": "\u2282", "⊆": "\u2286", "⫅": "\u2AC5", "⊊": "\u228A", "⫋": "\u2ACB", "⫇": "\u2AC7", "⫕": "\u2AD5", "⫓": "\u2AD3", "≻": "\u227B", "⪸": "\u2AB8", "≽": "\u227D", "⪰": "\u2AB0", "⪺": "\u2ABA", "⪶": "\u2AB6", "⋩": "\u22E9", "≿": "\u227F", "∑": "\u2211", "♪": "\u266A", "¹": "\xB9", "¹": "\xB9", "²": "\xB2", "²": "\xB2", "³": "\xB3", "³": "\xB3", "⊃": "\u2283", "⫆": "\u2AC6", "⪾": "\u2ABE", "⫘": "\u2AD8", "⊇": "\u2287", "⫄": "\u2AC4", "⟉": "\u27C9", "⫗": "\u2AD7", "⥻": "\u297B", "⫂": "\u2AC2", "⫌": "\u2ACC", "⊋": "\u228B", "⫀": "\u2AC0", "⊃": "\u2283", "⊇": "\u2287", "⫆": "\u2AC6", "⊋": "\u228B", "⫌": "\u2ACC", "⫈": "\u2AC8", "⫔": "\u2AD4", "⫖": "\u2AD6", "⇙": "\u21D9", "⤦": "\u2926", "↙": "\u2199", "↙": "\u2199", "⤪": "\u292A", "ß": "\xDF", "ß": "\xDF", "⌖": "\u2316", "τ": "\u03C4", "⎴": "\u23B4", "ť": "\u0165", "ţ": "\u0163", "т": "\u0442", "⃛": "\u20DB", "⌕": "\u2315", "𝔱": "\u{1D531}", "∴": "\u2234", "∴": "\u2234", "θ": "\u03B8", "ϑ": "\u03D1", "ϑ": "\u03D1", "≈": "\u2248", "∼": "\u223C", " ": "\u2009", "≈": "\u2248", "∼": "\u223C", "þ": "\xFE", "þ": "\xFE", "˜": "\u02DC", "×": "\xD7", "×": "\xD7", "⊠": "\u22A0", "⨱": "\u2A31", "⨰": "\u2A30", "∭": "\u222D", "⤨": "\u2928", "⊤": "\u22A4", "⌶": "\u2336", "⫱": "\u2AF1", "𝕥": "\u{1D565}", "⫚": "\u2ADA", "⤩": "\u2929", "‴": "\u2034", "™": "\u2122", "▵": "\u25B5", "▿": "\u25BF", "◃": "\u25C3", "⊴": "\u22B4", "≜": "\u225C", "▹": "\u25B9", "⊵": "\u22B5", "◬": "\u25EC", "≜": "\u225C", "⨺": "\u2A3A", "⨹": "\u2A39", "⧍": "\u29CD", "⨻": "\u2A3B", "⏢": "\u23E2", "𝓉": "\u{1D4C9}", "ц": "\u0446", "ћ": "\u045B", "ŧ": "\u0167", "≬": "\u226C", "↞": "\u219E", "↠": "\u21A0", "⇑": "\u21D1", "⥣": "\u2963", "ú": "\xFA", "ú": "\xFA", "↑": "\u2191", "ў": "\u045E", "ŭ": "\u016D", "û": "\xFB", "û": "\xFB", "у": "\u0443", "⇅": "\u21C5", "ű": "\u0171", "⥮": "\u296E", "⥾": "\u297E", "𝔲": "\u{1D532}", "ù": "\xF9", "ù": "\xF9", "↿": "\u21BF", "↾": "\u21BE", "▀": "\u2580", "⌜": "\u231C", "⌜": "\u231C", "⌏": "\u230F", "◸": "\u25F8", "ū": "\u016B", "¨": "\xA8", "¨": "\xA8", "ų": "\u0173", "𝕦": "\u{1D566}", "↑": "\u2191", "↕": "\u2195", "↿": "\u21BF", "↾": "\u21BE", "⊎": "\u228E", "υ": "\u03C5", "ϒ": "\u03D2", "υ": "\u03C5", "⇈": "\u21C8", "⌝": "\u231D", "⌝": "\u231D", "⌎": "\u230E", "ů": "\u016F", "◹": "\u25F9", "𝓊": "\u{1D4CA}", "⋰": "\u22F0", "ũ": "\u0169", "▵": "\u25B5", "▴": "\u25B4", "⇈": "\u21C8", "ü": "\xFC", "ü": "\xFC", "⦧": "\u29A7", "⇕": "\u21D5", "⫨": "\u2AE8", "⫩": "\u2AE9", "⊨": "\u22A8", "⦜": "\u299C", "ϵ": "\u03F5", "ϰ": "\u03F0", "∅": "\u2205", "ϕ": "\u03D5", "ϖ": "\u03D6", "∝": "\u221D", "↕": "\u2195", "ϱ": "\u03F1", "ς": "\u03C2", "⊊︀": "\u228A\uFE00", "⫋︀": "\u2ACB\uFE00", "⊋︀": "\u228B\uFE00", "⫌︀": "\u2ACC\uFE00", "ϑ": "\u03D1", "⊲": "\u22B2", "⊳": "\u22B3", "в": "\u0432", "⊢": "\u22A2", "∨": "\u2228", "⊻": "\u22BB", "≚": "\u225A", "⋮": "\u22EE", "|": "|", "|": "|", "𝔳": "\u{1D533}", "⊲": "\u22B2", "⊂⃒": "\u2282\u20D2", "⊃⃒": "\u2283\u20D2", "𝕧": "\u{1D567}", "∝": "\u221D", "⊳": "\u22B3", "𝓋": "\u{1D4CB}", "⫋︀": "\u2ACB\uFE00", "⊊︀": "\u228A\uFE00", "⫌︀": "\u2ACC\uFE00", "⊋︀": "\u228B\uFE00", "⦚": "\u299A", "ŵ": "\u0175", "⩟": "\u2A5F", "∧": "\u2227", "≙": "\u2259", "℘": "\u2118", "𝔴": "\u{1D534}", "𝕨": "\u{1D568}", "℘": "\u2118", "≀": "\u2240", "≀": "\u2240", "𝓌": "\u{1D4CC}", "⋂": "\u22C2", "◯": "\u25EF", "⋃": "\u22C3", "▽": "\u25BD", "𝔵": "\u{1D535}", "⟺": "\u27FA", "⟷": "\u27F7", "ξ": "\u03BE", "⟸": "\u27F8", "⟵": "\u27F5", "⟼": "\u27FC", "⋻": "\u22FB", "⨀": "\u2A00", "𝕩": "\u{1D569}", "⨁": "\u2A01", "⨂": "\u2A02", "⟹": "\u27F9", "⟶": "\u27F6", "𝓍": "\u{1D4CD}", "⨆": "\u2A06", "⨄": "\u2A04", "△": "\u25B3", "⋁": "\u22C1", "⋀": "\u22C0", "ý": "\xFD", "ý": "\xFD", "я": "\u044F", "ŷ": "\u0177", "ы": "\u044B", "¥": "\xA5", "¥": "\xA5", "𝔶": "\u{1D536}", "ї": "\u0457", "𝕪": "\u{1D56A}", "𝓎": "\u{1D4CE}", "ю": "\u044E", "ÿ": "\xFF", "ÿ": "\xFF", "ź": "\u017A", "ž": "\u017E", "з": "\u0437", "ż": "\u017C", "ℨ": "\u2128", "ζ": "\u03B6", "𝔷": "\u{1D537}", "ж": "\u0436", "⇝": "\u21DD", "𝕫": "\u{1D56B}", "𝓏": "\u{1D4CF}", "‍": "\u200D", "‌": "\u200C" }, characters: { "\xC6": "Æ", "&": "&", "\xC1": "Á", "\u0102": "Ă", "\xC2": "Â", "\u0410": "А", "\u{1D504}": "𝔄", "\xC0": "À", "\u0391": "Α", "\u0100": "Ā", "\u2A53": "⩓", "\u0104": "Ą", "\u{1D538}": "𝔸", "\u2061": "⁡", "\xC5": "Å", "\u{1D49C}": "𝒜", "\u2254": "≔", "\xC3": "Ã", "\xC4": "Ä", "\u2216": "∖", "\u2AE7": "⫧", "\u2306": "⌆", "\u0411": "Б", "\u2235": "∵", "\u212C": "ℬ", "\u0392": "Β", "\u{1D505}": "𝔅", "\u{1D539}": "𝔹", "\u02D8": "˘", "\u224E": "≎", "\u0427": "Ч", "\xA9": "©", "\u0106": "Ć", "\u22D2": "⋒", "\u2145": "ⅅ", "\u212D": "ℭ", "\u010C": "Č", "\xC7": "Ç", "\u0108": "Ĉ", "\u2230": "∰", "\u010A": "Ċ", "\xB8": "¸", "\xB7": "·", "\u03A7": "Χ", "\u2299": "⊙", "\u2296": "⊖", "\u2295": "⊕", "\u2297": "⊗", "\u2232": "∲", "\u201D": "”", "\u2019": "’", "\u2237": "∷", "\u2A74": "⩴", "\u2261": "≡", "\u222F": "∯", "\u222E": "∮", "\u2102": "ℂ", "\u2210": "∐", "\u2233": "∳", "\u2A2F": "⨯", "\u{1D49E}": "𝒞", "\u22D3": "⋓", "\u224D": "≍", "\u2911": "⤑", "\u0402": "Ђ", "\u0405": "Ѕ", "\u040F": "Џ", "\u2021": "‡", "\u21A1": "↡", "\u2AE4": "⫤", "\u010E": "Ď", "\u0414": "Д", "\u2207": "∇", "\u0394": "Δ", "\u{1D507}": "𝔇", "\xB4": "´", "\u02D9": "˙", "\u02DD": "˝", "`": "`", "\u02DC": "˜", "\u22C4": "⋄", "\u2146": "ⅆ", "\u{1D53B}": "𝔻", "\xA8": "¨", "\u20DC": "⃜", "\u2250": "≐", "\u21D3": "⇓", "\u21D0": "⇐", "\u21D4": "⇔", "\u27F8": "⟸", "\u27FA": "⟺", "\u27F9": "⟹", "\u21D2": "⇒", "\u22A8": "⊨", "\u21D1": "⇑", "\u21D5": "⇕", "\u2225": "∥", "\u2193": "↓", "\u2913": "⤓", "\u21F5": "⇵", "\u0311": "̑", "\u2950": "⥐", "\u295E": "⥞", "\u21BD": "↽", "\u2956": "⥖", "\u295F": "⥟", "\u21C1": "⇁", "\u2957": "⥗", "\u22A4": "⊤", "\u21A7": "↧", "\u{1D49F}": "𝒟", "\u0110": "Đ", "\u014A": "Ŋ", "\xD0": "Ð", "\xC9": "É", "\u011A": "Ě", "\xCA": "Ê", "\u042D": "Э", "\u0116": "Ė", "\u{1D508}": "𝔈", "\xC8": "È", "\u2208": "∈", "\u0112": "Ē", "\u25FB": "◻", "\u25AB": "▫", "\u0118": "Ę", "\u{1D53C}": "𝔼", "\u0395": "Ε", "\u2A75": "⩵", "\u2242": "≂", "\u21CC": "⇌", "\u2130": "ℰ", "\u2A73": "⩳", "\u0397": "Η", "\xCB": "Ë", "\u2203": "∃", "\u2147": "ⅇ", "\u0424": "Ф", "\u{1D509}": "𝔉", "\u25FC": "◼", "\u25AA": "▪", "\u{1D53D}": "𝔽", "\u2200": "∀", "\u2131": "ℱ", "\u0403": "Ѓ", ">": ">", "\u0393": "Γ", "\u03DC": "Ϝ", "\u011E": "Ğ", "\u0122": "Ģ", "\u011C": "Ĝ", "\u0413": "Г", "\u0120": "Ġ", "\u{1D50A}": "𝔊", "\u22D9": "⋙", "\u{1D53E}": "𝔾", "\u2265": "≥", "\u22DB": "⋛", "\u2267": "≧", "\u2AA2": "⪢", "\u2277": "≷", "\u2A7E": "⩾", "\u2273": "≳", "\u{1D4A2}": "𝒢", "\u226B": "≫", "\u042A": "Ъ", "\u02C7": "ˇ", "^": "^", "\u0124": "Ĥ", "\u210C": "ℌ", "\u210B": "ℋ", "\u210D": "ℍ", "\u2500": "─", "\u0126": "Ħ", "\u224F": "≏", "\u0415": "Е", "\u0132": "IJ", "\u0401": "Ё", "\xCD": "Í", "\xCE": "Î", "\u0418": "И", "\u0130": "İ", "\u2111": "ℑ", "\xCC": "Ì", "\u012A": "Ī", "\u2148": "ⅈ", "\u222C": "∬", "\u222B": "∫", "\u22C2": "⋂", "\u2063": "⁣", "\u2062": "⁢", "\u012E": "Į", "\u{1D540}": "𝕀", "\u0399": "Ι", "\u2110": "ℐ", "\u0128": "Ĩ", "\u0406": "І", "\xCF": "Ï", "\u0134": "Ĵ", "\u0419": "Й", "\u{1D50D}": "𝔍", "\u{1D541}": "𝕁", "\u{1D4A5}": "𝒥", "\u0408": "Ј", "\u0404": "Є", "\u0425": "Х", "\u040C": "Ќ", "\u039A": "Κ", "\u0136": "Ķ", "\u041A": "К", "\u{1D50E}": "𝔎", "\u{1D542}": "𝕂", "\u{1D4A6}": "𝒦", "\u0409": "Љ", "<": "<", "\u0139": "Ĺ", "\u039B": "Λ", "\u27EA": "⟪", "\u2112": "ℒ", "\u219E": "↞", "\u013D": "Ľ", "\u013B": "Ļ", "\u041B": "Л", "\u27E8": "⟨", "\u2190": "←", "\u21E4": "⇤", "\u21C6": "⇆", "\u2308": "⌈", "\u27E6": "⟦", "\u2961": "⥡", "\u21C3": "⇃", "\u2959": "⥙", "\u230A": "⌊", "\u2194": "↔", "\u294E": "⥎", "\u22A3": "⊣", "\u21A4": "↤", "\u295A": "⥚", "\u22B2": "⊲", "\u29CF": "⧏", "\u22B4": "⊴", "\u2951": "⥑", "\u2960": "⥠", "\u21BF": "↿", "\u2958": "⥘", "\u21BC": "↼", "\u2952": "⥒", "\u22DA": "⋚", "\u2266": "≦", "\u2276": "≶", "\u2AA1": "⪡", "\u2A7D": "⩽", "\u2272": "≲", "\u{1D50F}": "𝔏", "\u22D8": "⋘", "\u21DA": "⇚", "\u013F": "Ŀ", "\u27F5": "⟵", "\u27F7": "⟷", "\u27F6": "⟶", "\u{1D543}": "𝕃", "\u2199": "↙", "\u2198": "↘", "\u21B0": "↰", "\u0141": "Ł", "\u226A": "≪", "\u2905": "⤅", "\u041C": "М", "\u205F": " ", "\u2133": "ℳ", "\u{1D510}": "𝔐", "\u2213": "∓", "\u{1D544}": "𝕄", "\u039C": "Μ", "\u040A": "Њ", "\u0143": "Ń", "\u0147": "Ň", "\u0145": "Ņ", "\u041D": "Н", "\u200B": "​", "\n": "
", "\u{1D511}": "𝔑", "\u2060": "⁠", "\xA0": " ", "\u2115": "ℕ", "\u2AEC": "⫬", "\u2262": "≢", "\u226D": "≭", "\u2226": "∦", "\u2209": "∉", "\u2260": "≠", "\u2242\u0338": "≂̸", "\u2204": "∄", "\u226F": "≯", "\u2271": "≱", "\u2267\u0338": "≧̸", "\u226B\u0338": "≫̸", "\u2279": "≹", "\u2A7E\u0338": "⩾̸", "\u2275": "≵", "\u224E\u0338": "≎̸", "\u224F\u0338": "≏̸", "\u22EA": "⋪", "\u29CF\u0338": "⧏̸", "\u22EC": "⋬", "\u226E": "≮", "\u2270": "≰", "\u2278": "≸", "\u226A\u0338": "≪̸", "\u2A7D\u0338": "⩽̸", "\u2274": "≴", "\u2AA2\u0338": "⪢̸", "\u2AA1\u0338": "⪡̸", "\u2280": "⊀", "\u2AAF\u0338": "⪯̸", "\u22E0": "⋠", "\u220C": "∌", "\u22EB": "⋫", "\u29D0\u0338": "⧐̸", "\u22ED": "⋭", "\u228F\u0338": "⊏̸", "\u22E2": "⋢", "\u2290\u0338": "⊐̸", "\u22E3": "⋣", "\u2282\u20D2": "⊂⃒", "\u2288": "⊈", "\u2281": "⊁", "\u2AB0\u0338": "⪰̸", "\u22E1": "⋡", "\u227F\u0338": "≿̸", "\u2283\u20D2": "⊃⃒", "\u2289": "⊉", "\u2241": "≁", "\u2244": "≄", "\u2247": "≇", "\u2249": "≉", "\u2224": "∤", "\u{1D4A9}": "𝒩", "\xD1": "Ñ", "\u039D": "Ν", "\u0152": "Œ", "\xD3": "Ó", "\xD4": "Ô", "\u041E": "О", "\u0150": "Ő", "\u{1D512}": "𝔒", "\xD2": "Ò", "\u014C": "Ō", "\u03A9": "Ω", "\u039F": "Ο", "\u{1D546}": "𝕆", "\u201C": "“", "\u2018": "‘", "\u2A54": "⩔", "\u{1D4AA}": "𝒪", "\xD8": "Ø", "\xD5": "Õ", "\u2A37": "⨷", "\xD6": "Ö", "\u203E": "‾", "\u23DE": "⏞", "\u23B4": "⎴", "\u23DC": "⏜", "\u2202": "∂", "\u041F": "П", "\u{1D513}": "𝔓", "\u03A6": "Φ", "\u03A0": "Π", "\xB1": "±", "\u2119": "ℙ", "\u2ABB": "⪻", "\u227A": "≺", "\u2AAF": "⪯", "\u227C": "≼", "\u227E": "≾", "\u2033": "″", "\u220F": "∏", "\u221D": "∝", "\u{1D4AB}": "𝒫", "\u03A8": "Ψ", '"': """, "\u{1D514}": "𝔔", "\u211A": "ℚ", "\u{1D4AC}": "𝒬", "\u2910": "⤐", "\xAE": "®", "\u0154": "Ŕ", "\u27EB": "⟫", "\u21A0": "↠", "\u2916": "⤖", "\u0158": "Ř", "\u0156": "Ŗ", "\u0420": "Р", "\u211C": "ℜ", "\u220B": "∋", "\u21CB": "⇋", "\u296F": "⥯", "\u03A1": "Ρ", "\u27E9": "⟩", "\u2192": "→", "\u21E5": "⇥", "\u21C4": "⇄", "\u2309": "⌉", "\u27E7": "⟧", "\u295D": "⥝", "\u21C2": "⇂", "\u2955": "⥕", "\u230B": "⌋", "\u22A2": "⊢", "\u21A6": "↦", "\u295B": "⥛", "\u22B3": "⊳", "\u29D0": "⧐", "\u22B5": "⊵", "\u294F": "⥏", "\u295C": "⥜", "\u21BE": "↾", "\u2954": "⥔", "\u21C0": "⇀", "\u2953": "⥓", "\u211D": "ℝ", "\u2970": "⥰", "\u21DB": "⇛", "\u211B": "ℛ", "\u21B1": "↱", "\u29F4": "⧴", "\u0429": "Щ", "\u0428": "Ш", "\u042C": "Ь", "\u015A": "Ś", "\u2ABC": "⪼", "\u0160": "Š", "\u015E": "Ş", "\u015C": "Ŝ", "\u0421": "С", "\u{1D516}": "𝔖", "\u2191": "↑", "\u03A3": "Σ", "\u2218": "∘", "\u{1D54A}": "𝕊", "\u221A": "√", "\u25A1": "□", "\u2293": "⊓", "\u228F": "⊏", "\u2291": "⊑", "\u2290": "⊐", "\u2292": "⊒", "\u2294": "⊔", "\u{1D4AE}": "𝒮", "\u22C6": "⋆", "\u22D0": "⋐", "\u2286": "⊆", "\u227B": "≻", "\u2AB0": "⪰", "\u227D": "≽", "\u227F": "≿", "\u2211": "∑", "\u22D1": "⋑", "\u2283": "⊃", "\u2287": "⊇", "\xDE": "Þ", "\u2122": "™", "\u040B": "Ћ", "\u0426": "Ц", " ": "	", "\u03A4": "Τ", "\u0164": "Ť", "\u0162": "Ţ", "\u0422": "Т", "\u{1D517}": "𝔗", "\u2234": "∴", "\u0398": "Θ", "\u205F\u200A": "  ", "\u2009": " ", "\u223C": "∼", "\u2243": "≃", "\u2245": "≅", "\u2248": "≈", "\u{1D54B}": "𝕋", "\u20DB": "⃛", "\u{1D4AF}": "𝒯", "\u0166": "Ŧ", "\xDA": "Ú", "\u219F": "↟", "\u2949": "⥉", "\u040E": "Ў", "\u016C": "Ŭ", "\xDB": "Û", "\u0423": "У", "\u0170": "Ű", "\u{1D518}": "𝔘", "\xD9": "Ù", "\u016A": "Ū", _: "_", "\u23DF": "⏟", "\u23B5": "⎵", "\u23DD": "⏝", "\u22C3": "⋃", "\u228E": "⊎", "\u0172": "Ų", "\u{1D54C}": "𝕌", "\u2912": "⤒", "\u21C5": "⇅", "\u2195": "↕", "\u296E": "⥮", "\u22A5": "⊥", "\u21A5": "↥", "\u2196": "↖", "\u2197": "↗", "\u03D2": "ϒ", "\u03A5": "Υ", "\u016E": "Ů", "\u{1D4B0}": "𝒰", "\u0168": "Ũ", "\xDC": "Ü", "\u22AB": "⊫", "\u2AEB": "⫫", "\u0412": "В", "\u22A9": "⊩", "\u2AE6": "⫦", "\u22C1": "⋁", "\u2016": "‖", "\u2223": "∣", "|": "|", "\u2758": "❘", "\u2240": "≀", "\u200A": " ", "\u{1D519}": "𝔙", "\u{1D54D}": "𝕍", "\u{1D4B1}": "𝒱", "\u22AA": "⊪", "\u0174": "Ŵ", "\u22C0": "⋀", "\u{1D51A}": "𝔚", "\u{1D54E}": "𝕎", "\u{1D4B2}": "𝒲", "\u{1D51B}": "𝔛", "\u039E": "Ξ", "\u{1D54F}": "𝕏", "\u{1D4B3}": "𝒳", "\u042F": "Я", "\u0407": "Ї", "\u042E": "Ю", "\xDD": "Ý", "\u0176": "Ŷ", "\u042B": "Ы", "\u{1D51C}": "𝔜", "\u{1D550}": "𝕐", "\u{1D4B4}": "𝒴", "\u0178": "Ÿ", "\u0416": "Ж", "\u0179": "Ź", "\u017D": "Ž", "\u0417": "З", "\u017B": "Ż", "\u0396": "Ζ", "\u2128": "ℨ", "\u2124": "ℤ", "\u{1D4B5}": "𝒵", "\xE1": "á", "\u0103": "ă", "\u223E": "∾", "\u223E\u0333": "∾̳", "\u223F": "∿", "\xE2": "â", "\u0430": "а", "\xE6": "æ", "\u{1D51E}": "𝔞", "\xE0": "à", "\u2135": "ℵ", "\u03B1": "α", "\u0101": "ā", "\u2A3F": "⨿", "\u2227": "∧", "\u2A55": "⩕", "\u2A5C": "⩜", "\u2A58": "⩘", "\u2A5A": "⩚", "\u2220": "∠", "\u29A4": "⦤", "\u2221": "∡", "\u29A8": "⦨", "\u29A9": "⦩", "\u29AA": "⦪", "\u29AB": "⦫", "\u29AC": "⦬", "\u29AD": "⦭", "\u29AE": "⦮", "\u29AF": "⦯", "\u221F": "∟", "\u22BE": "⊾", "\u299D": "⦝", "\u2222": "∢", "\u237C": "⍼", "\u0105": "ą", "\u{1D552}": "𝕒", "\u2A70": "⩰", "\u2A6F": "⩯", "\u224A": "≊", "\u224B": "≋", "'": "'", "\xE5": "å", "\u{1D4B6}": "𝒶", "*": "*", "\xE3": "ã", "\xE4": "ä", "\u2A11": "⨑", "\u2AED": "⫭", "\u224C": "≌", "\u03F6": "϶", "\u2035": "‵", "\u223D": "∽", "\u22CD": "⋍", "\u22BD": "⊽", "\u2305": "⌅", "\u23B6": "⎶", "\u0431": "б", "\u201E": "„", "\u29B0": "⦰", "\u03B2": "β", "\u2136": "ℶ", "\u226C": "≬", "\u{1D51F}": "𝔟", "\u25EF": "◯", "\u2A00": "⨀", "\u2A01": "⨁", "\u2A02": "⨂", "\u2A06": "⨆", "\u2605": "★", "\u25BD": "▽", "\u25B3": "△", "\u2A04": "⨄", "\u290D": "⤍", "\u29EB": "⧫", "\u25B4": "▴", "\u25BE": "▾", "\u25C2": "◂", "\u25B8": "▸", "\u2423": "␣", "\u2592": "▒", "\u2591": "░", "\u2593": "▓", "\u2588": "█", "=\u20E5": "=⃥", "\u2261\u20E5": "≡⃥", "\u2310": "⌐", "\u{1D553}": "𝕓", "\u22C8": "⋈", "\u2557": "╗", "\u2554": "╔", "\u2556": "╖", "\u2553": "╓", "\u2550": "═", "\u2566": "╦", "\u2569": "╩", "\u2564": "╤", "\u2567": "╧", "\u255D": "╝", "\u255A": "╚", "\u255C": "╜", "\u2559": "╙", "\u2551": "║", "\u256C": "╬", "\u2563": "╣", "\u2560": "╠", "\u256B": "╫", "\u2562": "╢", "\u255F": "╟", "\u29C9": "⧉", "\u2555": "╕", "\u2552": "╒", "\u2510": "┐", "\u250C": "┌", "\u2565": "╥", "\u2568": "╨", "\u252C": "┬", "\u2534": "┴", "\u229F": "⊟", "\u229E": "⊞", "\u22A0": "⊠", "\u255B": "╛", "\u2558": "╘", "\u2518": "┘", "\u2514": "└", "\u2502": "│", "\u256A": "╪", "\u2561": "╡", "\u255E": "╞", "\u253C": "┼", "\u2524": "┤", "\u251C": "├", "\xA6": "¦", "\u{1D4B7}": "𝒷", "\u204F": "⁏", "\\": "\", "\u29C5": "⧅", "\u27C8": "⟈", "\u2022": "•", "\u2AAE": "⪮", "\u0107": "ć", "\u2229": "∩", "\u2A44": "⩄", "\u2A49": "⩉", "\u2A4B": "⩋", "\u2A47": "⩇", "\u2A40": "⩀", "\u2229\uFE00": "∩︀", "\u2041": "⁁", "\u2A4D": "⩍", "\u010D": "č", "\xE7": "ç", "\u0109": "ĉ", "\u2A4C": "⩌", "\u2A50": "⩐", "\u010B": "ċ", "\u29B2": "⦲", "\xA2": "¢", "\u{1D520}": "𝔠", "\u0447": "ч", "\u2713": "✓", "\u03C7": "χ", "\u25CB": "○", "\u29C3": "⧃", "\u02C6": "ˆ", "\u2257": "≗", "\u21BA": "↺", "\u21BB": "↻", "\u24C8": "Ⓢ", "\u229B": "⊛", "\u229A": "⊚", "\u229D": "⊝", "\u2A10": "⨐", "\u2AEF": "⫯", "\u29C2": "⧂", "\u2663": "♣", ":": ":", ",": ",", "@": "@", "\u2201": "∁", "\u2A6D": "⩭", "\u{1D554}": "𝕔", "\u2117": "℗", "\u21B5": "↵", "\u2717": "✗", "\u{1D4B8}": "𝒸", "\u2ACF": "⫏", "\u2AD1": "⫑", "\u2AD0": "⫐", "\u2AD2": "⫒", "\u22EF": "⋯", "\u2938": "⤸", "\u2935": "⤵", "\u22DE": "⋞", "\u22DF": "⋟", "\u21B6": "↶", "\u293D": "⤽", "\u222A": "∪", "\u2A48": "⩈", "\u2A46": "⩆", "\u2A4A": "⩊", "\u228D": "⊍", "\u2A45": "⩅", "\u222A\uFE00": "∪︀", "\u21B7": "↷", "\u293C": "⤼", "\u22CE": "⋎", "\u22CF": "⋏", "\xA4": "¤", "\u2231": "∱", "\u232D": "⌭", "\u2965": "⥥", "\u2020": "†", "\u2138": "ℸ", "\u2010": "‐", "\u290F": "⤏", "\u010F": "ď", "\u0434": "д", "\u21CA": "⇊", "\u2A77": "⩷", "\xB0": "°", "\u03B4": "δ", "\u29B1": "⦱", "\u297F": "⥿", "\u{1D521}": "𝔡", "\u2666": "♦", "\u03DD": "ϝ", "\u22F2": "⋲", "\xF7": "÷", "\u22C7": "⋇", "\u0452": "ђ", "\u231E": "⌞", "\u230D": "⌍", $: "$", "\u{1D555}": "𝕕", "\u2251": "≑", "\u2238": "∸", "\u2214": "∔", "\u22A1": "⊡", "\u231F": "⌟", "\u230C": "⌌", "\u{1D4B9}": "𝒹", "\u0455": "ѕ", "\u29F6": "⧶", "\u0111": "đ", "\u22F1": "⋱", "\u25BF": "▿", "\u29A6": "⦦", "\u045F": "џ", "\u27FF": "⟿", "\xE9": "é", "\u2A6E": "⩮", "\u011B": "ě", "\u2256": "≖", "\xEA": "ê", "\u2255": "≕", "\u044D": "э", "\u0117": "ė", "\u2252": "≒", "\u{1D522}": "𝔢", "\u2A9A": "⪚", "\xE8": "è", "\u2A96": "⪖", "\u2A98": "⪘", "\u2A99": "⪙", "\u23E7": "⏧", "\u2113": "ℓ", "\u2A95": "⪕", "\u2A97": "⪗", "\u0113": "ē", "\u2205": "∅", "\u2004": " ", "\u2005": " ", "\u2003": " ", "\u014B": "ŋ", "\u2002": " ", "\u0119": "ę", "\u{1D556}": "𝕖", "\u22D5": "⋕", "\u29E3": "⧣", "\u2A71": "⩱", "\u03B5": "ε", "\u03F5": "ϵ", "=": "=", "\u225F": "≟", "\u2A78": "⩸", "\u29E5": "⧥", "\u2253": "≓", "\u2971": "⥱", "\u212F": "ℯ", "\u03B7": "η", "\xF0": "ð", "\xEB": "ë", "\u20AC": "€", "!": "!", "\u0444": "ф", "\u2640": "♀", "\uFB03": "ffi", "\uFB00": "ff", "\uFB04": "ffl", "\u{1D523}": "𝔣", "\uFB01": "fi", fj: "fj", "\u266D": "♭", "\uFB02": "fl", "\u25B1": "▱", "\u0192": "ƒ", "\u{1D557}": "𝕗", "\u22D4": "⋔", "\u2AD9": "⫙", "\u2A0D": "⨍", "\xBD": "½", "\u2153": "⅓", "\xBC": "¼", "\u2155": "⅕", "\u2159": "⅙", "\u215B": "⅛", "\u2154": "⅔", "\u2156": "⅖", "\xBE": "¾", "\u2157": "⅗", "\u215C": "⅜", "\u2158": "⅘", "\u215A": "⅚", "\u215D": "⅝", "\u215E": "⅞", "\u2044": "⁄", "\u2322": "⌢", "\u{1D4BB}": "𝒻", "\u2A8C": "⪌", "\u01F5": "ǵ", "\u03B3": "γ", "\u2A86": "⪆", "\u011F": "ğ", "\u011D": "ĝ", "\u0433": "г", "\u0121": "ġ", "\u2AA9": "⪩", "\u2A80": "⪀", "\u2A82": "⪂", "\u2A84": "⪄", "\u22DB\uFE00": "⋛︀", "\u2A94": "⪔", "\u{1D524}": "𝔤", "\u2137": "ℷ", "\u0453": "ѓ", "\u2A92": "⪒", "\u2AA5": "⪥", "\u2AA4": "⪤", "\u2269": "≩", "\u2A8A": "⪊", "\u2A88": "⪈", "\u22E7": "⋧", "\u{1D558}": "𝕘", "\u210A": "ℊ", "\u2A8E": "⪎", "\u2A90": "⪐", "\u2AA7": "⪧", "\u2A7A": "⩺", "\u22D7": "⋗", "\u2995": "⦕", "\u2A7C": "⩼", "\u2978": "⥸", "\u2269\uFE00": "≩︀", "\u044A": "ъ", "\u2948": "⥈", "\u21AD": "↭", "\u210F": "ℏ", "\u0125": "ĥ", "\u2665": "♥", "\u2026": "…", "\u22B9": "⊹", "\u{1D525}": "𝔥", "\u2925": "⤥", "\u2926": "⤦", "\u21FF": "⇿", "\u223B": "∻", "\u21A9": "↩", "\u21AA": "↪", "\u{1D559}": "𝕙", "\u2015": "―", "\u{1D4BD}": "𝒽", "\u0127": "ħ", "\u2043": "⁃", "\xED": "í", "\xEE": "î", "\u0438": "и", "\u0435": "е", "\xA1": "¡", "\u{1D526}": "𝔦", "\xEC": "ì", "\u2A0C": "⨌", "\u222D": "∭", "\u29DC": "⧜", "\u2129": "℩", "\u0133": "ij", "\u012B": "ī", "\u0131": "ı", "\u22B7": "⊷", "\u01B5": "Ƶ", "\u2105": "℅", "\u221E": "∞", "\u29DD": "⧝", "\u22BA": "⊺", "\u2A17": "⨗", "\u2A3C": "⨼", "\u0451": "ё", "\u012F": "į", "\u{1D55A}": "𝕚", "\u03B9": "ι", "\xBF": "¿", "\u{1D4BE}": "𝒾", "\u22F9": "⋹", "\u22F5": "⋵", "\u22F4": "⋴", "\u22F3": "⋳", "\u0129": "ĩ", "\u0456": "і", "\xEF": "ï", "\u0135": "ĵ", "\u0439": "й", "\u{1D527}": "𝔧", "\u0237": "ȷ", "\u{1D55B}": "𝕛", "\u{1D4BF}": "𝒿", "\u0458": "ј", "\u0454": "є", "\u03BA": "κ", "\u03F0": "ϰ", "\u0137": "ķ", "\u043A": "к", "\u{1D528}": "𝔨", "\u0138": "ĸ", "\u0445": "х", "\u045C": "ќ", "\u{1D55C}": "𝕜", "\u{1D4C0}": "𝓀", "\u291B": "⤛", "\u290E": "⤎", "\u2A8B": "⪋", "\u2962": "⥢", "\u013A": "ĺ", "\u29B4": "⦴", "\u03BB": "λ", "\u2991": "⦑", "\u2A85": "⪅", "\xAB": "«", "\u291F": "⤟", "\u291D": "⤝", "\u21AB": "↫", "\u2939": "⤹", "\u2973": "⥳", "\u21A2": "↢", "\u2AAB": "⪫", "\u2919": "⤙", "\u2AAD": "⪭", "\u2AAD\uFE00": "⪭︀", "\u290C": "⤌", "\u2772": "❲", "{": "{", "[": "[", "\u298B": "⦋", "\u298F": "⦏", "\u298D": "⦍", "\u013E": "ľ", "\u013C": "ļ", "\u043B": "л", "\u2936": "⤶", "\u2967": "⥧", "\u294B": "⥋", "\u21B2": "↲", "\u2264": "≤", "\u21C7": "⇇", "\u22CB": "⋋", "\u2AA8": "⪨", "\u2A7F": "⩿", "\u2A81": "⪁", "\u2A83": "⪃", "\u22DA\uFE00": "⋚︀", "\u2A93": "⪓", "\u22D6": "⋖", "\u297C": "⥼", "\u{1D529}": "𝔩", "\u2A91": "⪑", "\u296A": "⥪", "\u2584": "▄", "\u0459": "љ", "\u296B": "⥫", "\u25FA": "◺", "\u0140": "ŀ", "\u23B0": "⎰", "\u2268": "≨", "\u2A89": "⪉", "\u2A87": "⪇", "\u22E6": "⋦", "\u27EC": "⟬", "\u21FD": "⇽", "\u27FC": "⟼", "\u21AC": "↬", "\u2985": "⦅", "\u{1D55D}": "𝕝", "\u2A2D": "⨭", "\u2A34": "⨴", "\u2217": "∗", "\u25CA": "◊", "(": "(", "\u2993": "⦓", "\u296D": "⥭", "\u200E": "‎", "\u22BF": "⊿", "\u2039": "‹", "\u{1D4C1}": "𝓁", "\u2A8D": "⪍", "\u2A8F": "⪏", "\u201A": "‚", "\u0142": "ł", "\u2AA6": "⪦", "\u2A79": "⩹", "\u22C9": "⋉", "\u2976": "⥶", "\u2A7B": "⩻", "\u2996": "⦖", "\u25C3": "◃", "\u294A": "⥊", "\u2966": "⥦", "\u2268\uFE00": "≨︀", "\u223A": "∺", "\xAF": "¯", "\u2642": "♂", "\u2720": "✠", "\u25AE": "▮", "\u2A29": "⨩", "\u043C": "м", "\u2014": "—", "\u{1D52A}": "𝔪", "\u2127": "℧", "\xB5": "µ", "\u2AF0": "⫰", "\u2212": "−", "\u2A2A": "⨪", "\u2ADB": "⫛", "\u22A7": "⊧", "\u{1D55E}": "𝕞", "\u{1D4C2}": "𝓂", "\u03BC": "μ", "\u22B8": "⊸", "\u22D9\u0338": "⋙̸", "\u226B\u20D2": "≫⃒", "\u21CD": "⇍", "\u21CE": "⇎", "\u22D8\u0338": "⋘̸", "\u226A\u20D2": "≪⃒", "\u21CF": "⇏", "\u22AF": "⊯", "\u22AE": "⊮", "\u0144": "ń", "\u2220\u20D2": "∠⃒", "\u2A70\u0338": "⩰̸", "\u224B\u0338": "≋̸", "\u0149": "ʼn", "\u266E": "♮", "\u2A43": "⩃", "\u0148": "ň", "\u0146": "ņ", "\u2A6D\u0338": "⩭̸", "\u2A42": "⩂", "\u043D": "н", "\u2013": "–", "\u21D7": "⇗", "\u2924": "⤤", "\u2250\u0338": "≐̸", "\u2928": "⤨", "\u{1D52B}": "𝔫", "\u21AE": "↮", "\u2AF2": "⫲", "\u22FC": "⋼", "\u22FA": "⋺", "\u045A": "њ", "\u2266\u0338": "≦̸", "\u219A": "↚", "\u2025": "‥", "\u{1D55F}": "𝕟", "\xAC": "¬", "\u22F9\u0338": "⋹̸", "\u22F5\u0338": "⋵̸", "\u22F7": "⋷", "\u22F6": "⋶", "\u22FE": "⋾", "\u22FD": "⋽", "\u2AFD\u20E5": "⫽⃥", "\u2202\u0338": "∂̸", "\u2A14": "⨔", "\u219B": "↛", "\u2933\u0338": "⤳̸", "\u219D\u0338": "↝̸", "\u{1D4C3}": "𝓃", "\u2284": "⊄", "\u2AC5\u0338": "⫅̸", "\u2285": "⊅", "\u2AC6\u0338": "⫆̸", "\xF1": "ñ", "\u03BD": "ν", "#": "#", "\u2116": "№", "\u2007": " ", "\u22AD": "⊭", "\u2904": "⤄", "\u224D\u20D2": "≍⃒", "\u22AC": "⊬", "\u2265\u20D2": "≥⃒", ">\u20D2": ">⃒", "\u29DE": "⧞", "\u2902": "⤂", "\u2264\u20D2": "≤⃒", "<\u20D2": "<⃒", "\u22B4\u20D2": "⊴⃒", "\u2903": "⤃", "\u22B5\u20D2": "⊵⃒", "\u223C\u20D2": "∼⃒", "\u21D6": "⇖", "\u2923": "⤣", "\u2927": "⤧", "\xF3": "ó", "\xF4": "ô", "\u043E": "о", "\u0151": "ő", "\u2A38": "⨸", "\u29BC": "⦼", "\u0153": "œ", "\u29BF": "⦿", "\u{1D52C}": "𝔬", "\u02DB": "˛", "\xF2": "ò", "\u29C1": "⧁", "\u29B5": "⦵", "\u29BE": "⦾", "\u29BB": "⦻", "\u29C0": "⧀", "\u014D": "ō", "\u03C9": "ω", "\u03BF": "ο", "\u29B6": "⦶", "\u{1D560}": "𝕠", "\u29B7": "⦷", "\u29B9": "⦹", "\u2228": "∨", "\u2A5D": "⩝", "\u2134": "ℴ", "\xAA": "ª", "\xBA": "º", "\u22B6": "⊶", "\u2A56": "⩖", "\u2A57": "⩗", "\u2A5B": "⩛", "\xF8": "ø", "\u2298": "⊘", "\xF5": "õ", "\u2A36": "⨶", "\xF6": "ö", "\u233D": "⌽", "\xB6": "¶", "\u2AF3": "⫳", "\u2AFD": "⫽", "\u043F": "п", "%": "%", ".": ".", "\u2030": "‰", "\u2031": "‱", "\u{1D52D}": "𝔭", "\u03C6": "φ", "\u03D5": "ϕ", "\u260E": "☎", "\u03C0": "π", "\u03D6": "ϖ", "\u210E": "ℎ", "+": "+", "\u2A23": "⨣", "\u2A22": "⨢", "\u2A25": "⨥", "\u2A72": "⩲", "\u2A26": "⨦", "\u2A27": "⨧", "\u2A15": "⨕", "\u{1D561}": "𝕡", "\xA3": "£", "\u2AB3": "⪳", "\u2AB7": "⪷", "\u2AB9": "⪹", "\u2AB5": "⪵", "\u22E8": "⋨", "\u2032": "′", "\u232E": "⌮", "\u2312": "⌒", "\u2313": "⌓", "\u22B0": "⊰", "\u{1D4C5}": "𝓅", "\u03C8": "ψ", "\u2008": " ", "\u{1D52E}": "𝔮", "\u{1D562}": "𝕢", "\u2057": "⁗", "\u{1D4C6}": "𝓆", "\u2A16": "⨖", "?": "?", "\u291C": "⤜", "\u2964": "⥤", "\u223D\u0331": "∽̱", "\u0155": "ŕ", "\u29B3": "⦳", "\u2992": "⦒", "\u29A5": "⦥", "\xBB": "»", "\u2975": "⥵", "\u2920": "⤠", "\u2933": "⤳", "\u291E": "⤞", "\u2945": "⥅", "\u2974": "⥴", "\u21A3": "↣", "\u219D": "↝", "\u291A": "⤚", "\u2236": "∶", "\u2773": "❳", "}": "}", "]": "]", "\u298C": "⦌", "\u298E": "⦎", "\u2990": "⦐", "\u0159": "ř", "\u0157": "ŗ", "\u0440": "р", "\u2937": "⤷", "\u2969": "⥩", "\u21B3": "↳", "\u25AD": "▭", "\u297D": "⥽", "\u{1D52F}": "𝔯", "\u296C": "⥬", "\u03C1": "ρ", "\u03F1": "ϱ", "\u21C9": "⇉", "\u22CC": "⋌", "\u02DA": "˚", "\u200F": "‏", "\u23B1": "⎱", "\u2AEE": "⫮", "\u27ED": "⟭", "\u21FE": "⇾", "\u2986": "⦆", "\u{1D563}": "𝕣", "\u2A2E": "⨮", "\u2A35": "⨵", ")": ")", "\u2994": "⦔", "\u2A12": "⨒", "\u203A": "›", "\u{1D4C7}": "𝓇", "\u22CA": "⋊", "\u25B9": "▹", "\u29CE": "⧎", "\u2968": "⥨", "\u211E": "℞", "\u015B": "ś", "\u2AB4": "⪴", "\u2AB8": "⪸", "\u0161": "š", "\u015F": "ş", "\u015D": "ŝ", "\u2AB6": "⪶", "\u2ABA": "⪺", "\u22E9": "⋩", "\u2A13": "⨓", "\u0441": "с", "\u22C5": "⋅", "\u2A66": "⩦", "\u21D8": "⇘", "\xA7": "§", ";": ";", "\u2929": "⤩", "\u2736": "✶", "\u{1D530}": "𝔰", "\u266F": "♯", "\u0449": "щ", "\u0448": "ш", "\xAD": "­", "\u03C3": "σ", "\u03C2": "ς", "\u2A6A": "⩪", "\u2A9E": "⪞", "\u2AA0": "⪠", "\u2A9D": "⪝", "\u2A9F": "⪟", "\u2246": "≆", "\u2A24": "⨤", "\u2972": "⥲", "\u2A33": "⨳", "\u29E4": "⧤", "\u2323": "⌣", "\u2AAA": "⪪", "\u2AAC": "⪬", "\u2AAC\uFE00": "⪬︀", "\u044C": "ь", "/": "/", "\u29C4": "⧄", "\u233F": "⌿", "\u{1D564}": "𝕤", "\u2660": "♠", "\u2293\uFE00": "⊓︀", "\u2294\uFE00": "⊔︀", "\u{1D4C8}": "𝓈", "\u2606": "☆", "\u2282": "⊂", "\u2AC5": "⫅", "\u2ABD": "⪽", "\u2AC3": "⫃", "\u2AC1": "⫁", "\u2ACB": "⫋", "\u228A": "⊊", "\u2ABF": "⪿", "\u2979": "⥹", "\u2AC7": "⫇", "\u2AD5": "⫕", "\u2AD3": "⫓", "\u266A": "♪", "\xB9": "¹", "\xB2": "²", "\xB3": "³", "\u2AC6": "⫆", "\u2ABE": "⪾", "\u2AD8": "⫘", "\u2AC4": "⫄", "\u27C9": "⟉", "\u2AD7": "⫗", "\u297B": "⥻", "\u2AC2": "⫂", "\u2ACC": "⫌", "\u228B": "⊋", "\u2AC0": "⫀", "\u2AC8": "⫈", "\u2AD4": "⫔", "\u2AD6": "⫖", "\u21D9": "⇙", "\u292A": "⤪", "\xDF": "ß", "\u2316": "⌖", "\u03C4": "τ", "\u0165": "ť", "\u0163": "ţ", "\u0442": "т", "\u2315": "⌕", "\u{1D531}": "𝔱", "\u03B8": "θ", "\u03D1": "ϑ", "\xFE": "þ", "\xD7": "×", "\u2A31": "⨱", "\u2A30": "⨰", "\u2336": "⌶", "\u2AF1": "⫱", "\u{1D565}": "𝕥", "\u2ADA": "⫚", "\u2034": "‴", "\u25B5": "▵", "\u225C": "≜", "\u25EC": "◬", "\u2A3A": "⨺", "\u2A39": "⨹", "\u29CD": "⧍", "\u2A3B": "⨻", "\u23E2": "⏢", "\u{1D4C9}": "𝓉", "\u0446": "ц", "\u045B": "ћ", "\u0167": "ŧ", "\u2963": "⥣", "\xFA": "ú", "\u045E": "ў", "\u016D": "ŭ", "\xFB": "û", "\u0443": "у", "\u0171": "ű", "\u297E": "⥾", "\u{1D532}": "𝔲", "\xF9": "ù", "\u2580": "▀", "\u231C": "⌜", "\u230F": "⌏", "\u25F8": "◸", "\u016B": "ū", "\u0173": "ų", "\u{1D566}": "𝕦", "\u03C5": "υ", "\u21C8": "⇈", "\u231D": "⌝", "\u230E": "⌎", "\u016F": "ů", "\u25F9": "◹", "\u{1D4CA}": "𝓊", "\u22F0": "⋰", "\u0169": "ũ", "\xFC": "ü", "\u29A7": "⦧", "\u2AE8": "⫨", "\u2AE9": "⫩", "\u299C": "⦜", "\u228A\uFE00": "⊊︀", "\u2ACB\uFE00": "⫋︀", "\u228B\uFE00": "⊋︀", "\u2ACC\uFE00": "⫌︀", "\u0432": "в", "\u22BB": "⊻", "\u225A": "≚", "\u22EE": "⋮", "\u{1D533}": "𝔳", "\u{1D567}": "𝕧", "\u{1D4CB}": "𝓋", "\u299A": "⦚", "\u0175": "ŵ", "\u2A5F": "⩟", "\u2259": "≙", "\u2118": "℘", "\u{1D534}": "𝔴", "\u{1D568}": "𝕨", "\u{1D4CC}": "𝓌", "\u{1D535}": "𝔵", "\u03BE": "ξ", "\u22FB": "⋻", "\u{1D569}": "𝕩", "\u{1D4CD}": "𝓍", "\xFD": "ý", "\u044F": "я", "\u0177": "ŷ", "\u044B": "ы", "\xA5": "¥", "\u{1D536}": "𝔶", "\u0457": "ї", "\u{1D56A}": "𝕪", "\u{1D4CE}": "𝓎", "\u044E": "ю", "\xFF": "ÿ", "\u017A": "ź", "\u017E": "ž", "\u0437": "з", "\u017C": "ż", "\u03B6": "ζ", "\u{1D537}": "𝔷", "\u0436": "ж", "\u21DD": "⇝", "\u{1D56B}": "𝕫", "\u{1D4CF}": "𝓏", "\u200D": "‍", "\u200C": "‌" } } }; | |
} | |
}); | |
// node_modules/html-entities/lib/numeric-unicode-map.js | |
var require_numeric_unicode_map = __commonJS({ | |
"node_modules/html-entities/lib/numeric-unicode-map.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.numericUnicodeMap = { 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 }; | |
} | |
}); | |
// node_modules/html-entities/lib/surrogate-pairs.js | |
var require_surrogate_pairs = __commonJS({ | |
"node_modules/html-entities/lib/surrogate-pairs.js"(exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.fromCodePoint = String.fromCodePoint || function(astralCodePoint) { | |
return String.fromCharCode(Math.floor((astralCodePoint - 65536) / 1024) + 55296, (astralCodePoint - 65536) % 1024 + 56320); | |
}; | |
exports.getCodePoint = String.prototype.codePointAt ? function(input, position) { | |
return input.codePointAt(position); | |
} : function(input, position) { | |
return (input.charCodeAt(position) - 55296) * 1024 + input.charCodeAt(position + 1) - 56320 + 65536; | |
}; | |
exports.highSurrogateFrom = 55296; | |
exports.highSurrogateTo = 56319; | |
} | |
}); | |
// node_modules/html-entities/lib/index.js | |
var require_lib = __commonJS({ | |
"node_modules/html-entities/lib/index.js"(exports) { | |
"use strict"; | |
var __assign = exports && exports.__assign || function() { | |
__assign = Object.assign || function(t) { | |
for (var s, i = 1, n = arguments.length; i < n; i++) { | |
s = arguments[i]; | |
for (var p in s) | |
if (Object.prototype.hasOwnProperty.call(s, p)) | |
t[p] = s[p]; | |
} | |
return t; | |
}; | |
return __assign.apply(this, arguments); | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var named_references_1 = require_named_references(); | |
var numeric_unicode_map_1 = require_numeric_unicode_map(); | |
var surrogate_pairs_1 = require_surrogate_pairs(); | |
var allNamedReferences = __assign(__assign({}, named_references_1.namedReferences), { all: named_references_1.namedReferences.html5 }); | |
var encodeRegExps = { | |
specialChars: /[<>'"&]/g, | |
nonAscii: /(?:[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g, | |
nonAsciiPrintable: /(?:[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\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]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g | |
}; | |
var defaultEncodeOptions = { | |
mode: "specialChars", | |
level: "all", | |
numeric: "decimal" | |
}; | |
function encode(text, _a) { | |
var _b = _a === void 0 ? defaultEncodeOptions : _a, _c = _b.mode, mode = _c === void 0 ? "specialChars" : _c, _d = _b.numeric, numeric = _d === void 0 ? "decimal" : _d, _e = _b.level, level = _e === void 0 ? "all" : _e; | |
if (!text) { | |
return ""; | |
} | |
var encodeRegExp = encodeRegExps[mode]; | |
var references = allNamedReferences[level].characters; | |
var isHex = numeric === "hexadecimal"; | |
encodeRegExp.lastIndex = 0; | |
var _b = encodeRegExp.exec(text); | |
var _c; | |
if (_b) { | |
_c = ""; | |
var _d = 0; | |
do { | |
if (_d !== _b.index) { | |
_c += text.substring(_d, _b.index); | |
} | |
var _e = _b[0]; | |
var result_1 = references[_e]; | |
if (!result_1) { | |
var code_1 = _e.length > 1 ? surrogate_pairs_1.getCodePoint(_e, 0) : _e.charCodeAt(0); | |
result_1 = (isHex ? "&#x" + code_1.toString(16) : "&#" + code_1) + ";"; | |
} | |
_c += result_1; | |
_d = _b.index + _e.length; | |
} while (_b = encodeRegExp.exec(text)); | |
if (_d !== text.length) { | |
_c += text.substring(_d); | |
} | |
} else { | |
_c = text; | |
} | |
return _c; | |
} | |
exports.encode = encode; | |
var defaultDecodeOptions = { | |
scope: "body", | |
level: "all" | |
}; | |
var strict = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g; | |
var attribute = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g; | |
var baseDecodeRegExps = { | |
xml: { | |
strict, | |
attribute, | |
body: named_references_1.bodyRegExps.xml | |
}, | |
html4: { | |
strict, | |
attribute, | |
body: named_references_1.bodyRegExps.html4 | |
}, | |
html5: { | |
strict, | |
attribute, | |
body: named_references_1.bodyRegExps.html5 | |
} | |
}; | |
var decodeRegExps = __assign(__assign({}, baseDecodeRegExps), { all: baseDecodeRegExps.html5 }); | |
var fromCharCode = String.fromCharCode; | |
var outOfBoundsChar = fromCharCode(65533); | |
var defaultDecodeEntityOptions = { | |
level: "all" | |
}; | |
function decodeEntity(entity, _a) { | |
var _b = (_a === void 0 ? defaultDecodeEntityOptions : _a).level, level = _b === void 0 ? "all" : _b; | |
if (!entity) { | |
return ""; | |
} | |
var _b = entity; | |
var decodeEntityLastChar_1 = entity[entity.length - 1]; | |
if (false) { | |
_b = entity; | |
} else if (false) { | |
_b = entity; | |
} else { | |
var decodeResultByReference_1 = allNamedReferences[level].entities[entity]; | |
if (decodeResultByReference_1) { | |
_b = decodeResultByReference_1; | |
} else if (entity[0] === "&" && entity[1] === "#") { | |
var decodeSecondChar_1 = entity[2]; | |
var decodeCode_1 = decodeSecondChar_1 == "x" || decodeSecondChar_1 == "X" ? parseInt(entity.substr(3), 16) : parseInt(entity.substr(2)); | |
_b = decodeCode_1 >= 1114111 ? outOfBoundsChar : decodeCode_1 > 65535 ? surrogate_pairs_1.fromCodePoint(decodeCode_1) : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_1] || decodeCode_1); | |
} | |
} | |
return _b; | |
} | |
exports.decodeEntity = decodeEntity; | |
function decode(text, _a) { | |
var decodeSecondChar_1 = _a === void 0 ? defaultDecodeOptions : _a, decodeCode_1 = decodeSecondChar_1.level, level = decodeCode_1 === void 0 ? "all" : decodeCode_1, _b = decodeSecondChar_1.scope, scope = _b === void 0 ? level === "xml" ? "strict" : "body" : _b; | |
if (!text) { | |
return ""; | |
} | |
var decodeRegExp = decodeRegExps[level][scope]; | |
var references = allNamedReferences[level].entities; | |
var isAttribute = scope === "attribute"; | |
var isStrict = scope === "strict"; | |
decodeRegExp.lastIndex = 0; | |
var replaceMatch_1 = decodeRegExp.exec(text); | |
var replaceResult_1; | |
if (replaceMatch_1) { | |
replaceResult_1 = ""; | |
var replaceLastIndex_1 = 0; | |
do { | |
if (replaceLastIndex_1 !== replaceMatch_1.index) { | |
replaceResult_1 += text.substring(replaceLastIndex_1, replaceMatch_1.index); | |
} | |
var replaceInput_1 = replaceMatch_1[0]; | |
var decodeResult_1 = replaceInput_1; | |
var decodeEntityLastChar_2 = replaceInput_1[replaceInput_1.length - 1]; | |
if (isAttribute && decodeEntityLastChar_2 === "=") { | |
decodeResult_1 = replaceInput_1; | |
} else if (isStrict && decodeEntityLastChar_2 !== ";") { | |
decodeResult_1 = replaceInput_1; | |
} else { | |
var decodeResultByReference_2 = references[replaceInput_1]; | |
if (decodeResultByReference_2) { | |
decodeResult_1 = decodeResultByReference_2; | |
} else if (replaceInput_1[0] === "&" && replaceInput_1[1] === "#") { | |
var decodeSecondChar_2 = replaceInput_1[2]; | |
var decodeCode_2 = decodeSecondChar_2 == "x" || decodeSecondChar_2 == "X" ? parseInt(replaceInput_1.substr(3), 16) : parseInt(replaceInput_1.substr(2)); | |
decodeResult_1 = decodeCode_2 >= 1114111 ? outOfBoundsChar : decodeCode_2 > 65535 ? surrogate_pairs_1.fromCodePoint(decodeCode_2) : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_2] || decodeCode_2); | |
} | |
} | |
replaceResult_1 += decodeResult_1; | |
replaceLastIndex_1 = replaceMatch_1.index + replaceInput_1.length; | |
} while (replaceMatch_1 = decodeRegExp.exec(text)); | |
if (replaceLastIndex_1 !== text.length) { | |
replaceResult_1 += text.substring(replaceLastIndex_1); | |
} | |
} else { | |
replaceResult_1 = text; | |
} | |
return replaceResult_1; | |
} | |
exports.decode = decode; | |
} | |
}); | |
// node_modules/has-symbols/shams.js | |
var require_shams = __commonJS({ | |
"node_modules/has-symbols/shams.js"(exports, module) { | |
"use strict"; | |
module.exports = function hasSymbols() { | |
if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { | |
return false; | |
} | |
if (typeof Symbol.iterator === "symbol") { | |
return true; | |
} | |
var obj = {}; | |
var sym = Symbol("test"); | |
var symObj = Object(sym); | |
if (typeof sym === "string") { | |
return false; | |
} | |
if (Object.prototype.toString.call(sym) !== "[object Symbol]") { | |
return false; | |
} | |
if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { | |
return false; | |
} | |
var symVal = 42; | |
obj[sym] = symVal; | |
for (sym in obj) { | |
return false; | |
} | |
if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { | |
return false; | |
} | |
if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { | |
return false; | |
} | |
var syms = Object.getOwnPropertySymbols(obj); | |
if (syms.length !== 1 || syms[0] !== sym) { | |
return false; | |
} | |
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { | |
return false; | |
} | |
if (typeof Object.getOwnPropertyDescriptor === "function") { | |
var descriptor = Object.getOwnPropertyDescriptor(obj, sym); | |
if (descriptor.value !== symVal || descriptor.enumerable !== true) { | |
return false; | |
} | |
} | |
return true; | |
}; | |
} | |
}); | |
// node_modules/has-symbols/index.js | |
var require_has_symbols = __commonJS({ | |
"node_modules/has-symbols/index.js"(exports, module) { | |
"use strict"; | |
var origSymbol = typeof Symbol !== "undefined" && Symbol; | |
var hasSymbolSham = require_shams(); | |
module.exports = function hasNativeSymbols() { | |
if (typeof origSymbol !== "function") { | |
return false; | |
} | |
if (typeof Symbol !== "function") { | |
return false; | |
} | |
if (typeof origSymbol("foo") !== "symbol") { | |
return false; | |
} | |
if (typeof Symbol("bar") !== "symbol") { | |
return false; | |
} | |
return hasSymbolSham(); | |
}; | |
} | |
}); | |
// node_modules/function-bind/implementation.js | |
var require_implementation = __commonJS({ | |
"node_modules/function-bind/implementation.js"(exports, module) { | |
"use strict"; | |
var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; | |
var slice = Array.prototype.slice; | |
var toStr = Object.prototype.toString; | |
var funcType = "[object Function]"; | |
module.exports = function bind(that) { | |
var target = this; | |
if (typeof target !== "function" || toStr.call(target) !== funcType) { | |
throw new TypeError(ERROR_MESSAGE + target); | |
} | |
var args = slice.call(arguments, 1); | |
var bound; | |
var binder = function() { | |
if (this instanceof bound) { | |
var result = target.apply( | |
this, | |
args.concat(slice.call(arguments)) | |
); | |
if (Object(result) === result) { | |
return result; | |
} | |
return this; | |
} else { | |
return target.apply( | |
that, | |
args.concat(slice.call(arguments)) | |
); | |
} | |
}; | |
var boundLength = Math.max(0, target.length - args.length); | |
var boundArgs = []; | |
for (var i = 0; i < boundLength; i++) { | |
boundArgs.push("$" + i); | |
} | |
bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); | |
if (target.prototype) { | |
var Empty = function Empty2() { | |
}; | |
Empty.prototype = target.prototype; | |
bound.prototype = new Empty(); | |
Empty.prototype = null; | |
} | |
return bound; | |
}; | |
} | |
}); | |
// node_modules/function-bind/index.js | |
var require_function_bind = __commonJS({ | |
"node_modules/function-bind/index.js"(exports, module) { | |
"use strict"; | |
var implementation = require_implementation(); | |
module.exports = Function.prototype.bind || implementation; | |
} | |
}); | |
// node_modules/has/src/index.js | |
var require_src = __commonJS({ | |
"node_modules/has/src/index.js"(exports, module) { | |
"use strict"; | |
var bind = require_function_bind(); | |
module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); | |
} | |
}); | |
// node_modules/get-intrinsic/index.js | |
var require_get_intrinsic = __commonJS({ | |
"node_modules/get-intrinsic/index.js"(exports, module) { | |
"use strict"; | |
var undefined2; | |
var $SyntaxError = SyntaxError; | |
var $Function = Function; | |
var $TypeError = TypeError; | |
var getEvalledConstructor = function(expressionSyntax) { | |
try { | |
return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); | |
} catch (e) { | |
} | |
}; | |
var $gOPD = Object.getOwnPropertyDescriptor; | |
if ($gOPD) { | |
try { | |
$gOPD({}, ""); | |
} catch (e) { | |
$gOPD = null; | |
} | |
} | |
var throwTypeError = function() { | |
throw new $TypeError(); | |
}; | |
var ThrowTypeError = $gOPD ? function() { | |
try { | |
arguments.callee; | |
return throwTypeError; | |
} catch (calleeThrows) { | |
try { | |
return $gOPD(arguments, "callee").get; | |
} catch (gOPDthrows) { | |
return throwTypeError; | |
} | |
} | |
}() : throwTypeError; | |
var hasSymbols = require_has_symbols()(); | |
var getProto = Object.getPrototypeOf || function(x) { | |
return x.__proto__; | |
}; | |
var needsEval = {}; | |
var TypedArray = typeof Uint8Array === "undefined" ? undefined2 : getProto(Uint8Array); | |
var INTRINSICS = { | |
"%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, | |
"%Array%": Array, | |
"%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, | |
"%ArrayIteratorPrototype%": hasSymbols ? getProto([][Symbol.iterator]()) : undefined2, | |
"%AsyncFromSyncIteratorPrototype%": undefined2, | |
"%AsyncFunction%": needsEval, | |
"%AsyncGenerator%": needsEval, | |
"%AsyncGeneratorFunction%": needsEval, | |
"%AsyncIteratorPrototype%": needsEval, | |
"%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, | |
"%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, | |
"%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, | |
"%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, | |
"%Boolean%": Boolean, | |
"%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, | |
"%Date%": Date, | |
"%decodeURI%": decodeURI, | |
"%decodeURIComponent%": decodeURIComponent, | |
"%encodeURI%": encodeURI, | |
"%encodeURIComponent%": encodeURIComponent, | |
"%Error%": Error, | |
"%eval%": eval, | |
"%EvalError%": EvalError, | |
"%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, | |
"%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, | |
"%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, | |
"%Function%": $Function, | |
"%GeneratorFunction%": needsEval, | |
"%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, | |
"%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, | |
"%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, | |
"%isFinite%": isFinite, | |
"%isNaN%": isNaN, | |
"%IteratorPrototype%": hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined2, | |
"%JSON%": typeof JSON === "object" ? JSON : undefined2, | |
"%Map%": typeof Map === "undefined" ? undefined2 : Map, | |
"%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), | |
"%Math%": Math, | |
"%Number%": Number, | |
"%Object%": Object, | |
"%parseFloat%": parseFloat, | |
"%parseInt%": parseInt, | |
"%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, | |
"%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, | |
"%RangeError%": RangeError, | |
"%ReferenceError%": ReferenceError, | |
"%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, | |
"%RegExp%": RegExp, | |
"%Set%": typeof Set === "undefined" ? undefined2 : Set, | |
"%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), | |
"%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, | |
"%String%": String, | |
"%StringIteratorPrototype%": hasSymbols ? getProto(""[Symbol.iterator]()) : undefined2, | |
"%Symbol%": hasSymbols ? Symbol : undefined2, | |
"%SyntaxError%": $SyntaxError, | |
"%ThrowTypeError%": ThrowTypeError, | |
"%TypedArray%": TypedArray, | |
"%TypeError%": $TypeError, | |
"%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, | |
"%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, | |
"%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, | |
"%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, | |
"%URIError%": URIError, | |
"%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, | |
"%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, | |
"%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet | |
}; | |
try { | |
null.error; | |
} catch (e) { | |
errorProto = getProto(getProto(e)); | |
INTRINSICS["%Error.prototype%"] = errorProto; | |
} | |
var errorProto; | |
var doEval = function doEval2(name) { | |
var value; | |
if (name === "%AsyncFunction%") { | |
value = getEvalledConstructor("async function () {}"); | |
} else if (name === "%GeneratorFunction%") { | |
value = getEvalledConstructor("function* () {}"); | |
} else if (name === "%AsyncGeneratorFunction%") { | |
value = getEvalledConstructor("async function* () {}"); | |
} else if (name === "%AsyncGenerator%") { | |
var fn = doEval2("%AsyncGeneratorFunction%"); | |
if (fn) { | |
value = fn.prototype; | |
} | |
} else if (name === "%AsyncIteratorPrototype%") { | |
var gen = doEval2("%AsyncGenerator%"); | |
if (gen) { | |
value = getProto(gen.prototype); | |
} | |
} | |
INTRINSICS[name] = value; | |
return value; | |
}; | |
var LEGACY_ALIASES = { | |
"%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], | |
"%ArrayPrototype%": ["Array", "prototype"], | |
"%ArrayProto_entries%": ["Array", "prototype", "entries"], | |
"%ArrayProto_forEach%": ["Array", "prototype", "forEach"], | |
"%ArrayProto_keys%": ["Array", "prototype", "keys"], | |
"%ArrayProto_values%": ["Array", "prototype", "values"], | |
"%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], | |
"%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], | |
"%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], | |
"%BooleanPrototype%": ["Boolean", "prototype"], | |
"%DataViewPrototype%": ["DataView", "prototype"], | |
"%DatePrototype%": ["Date", "prototype"], | |
"%ErrorPrototype%": ["Error", "prototype"], | |
"%EvalErrorPrototype%": ["EvalError", "prototype"], | |
"%Float32ArrayPrototype%": ["Float32Array", "prototype"], | |
"%Float64ArrayPrototype%": ["Float64Array", "prototype"], | |
"%FunctionPrototype%": ["Function", "prototype"], | |
"%Generator%": ["GeneratorFunction", "prototype"], | |
"%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], | |
"%Int8ArrayPrototype%": ["Int8Array", "prototype"], | |
"%Int16ArrayPrototype%": ["Int16Array", "prototype"], | |
"%Int32ArrayPrototype%": ["Int32Array", "prototype"], | |
"%JSONParse%": ["JSON", "parse"], | |
"%JSONStringify%": ["JSON", "stringify"], | |
"%MapPrototype%": ["Map", "prototype"], | |
"%NumberPrototype%": ["Number", "prototype"], | |
"%ObjectPrototype%": ["Object", "prototype"], | |
"%ObjProto_toString%": ["Object", "prototype", "toString"], | |
"%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], | |
"%PromisePrototype%": ["Promise", "prototype"], | |
"%PromiseProto_then%": ["Promise", "prototype", "then"], | |
"%Promise_all%": ["Promise", "all"], | |
"%Promise_reject%": ["Promise", "reject"], | |
"%Promise_resolve%": ["Promise", "resolve"], | |
"%RangeErrorPrototype%": ["RangeError", "prototype"], | |
"%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], | |
"%RegExpPrototype%": ["RegExp", "prototype"], | |
"%SetPrototype%": ["Set", "prototype"], | |
"%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], | |
"%StringPrototype%": ["String", "prototype"], | |
"%SymbolPrototype%": ["Symbol", "prototype"], | |
"%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], | |
"%TypedArrayPrototype%": ["TypedArray", "prototype"], | |
"%TypeErrorPrototype%": ["TypeError", "prototype"], | |
"%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], | |
"%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], | |
"%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], | |
"%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], | |
"%URIErrorPrototype%": ["URIError", "prototype"], | |
"%WeakMapPrototype%": ["WeakMap", "prototype"], | |
"%WeakSetPrototype%": ["WeakSet", "prototype"] | |
}; | |
var bind = require_function_bind(); | |
var hasOwn = require_src(); | |
var $concat = bind.call(Function.call, Array.prototype.concat); | |
var $spliceApply = bind.call(Function.apply, Array.prototype.splice); | |
var $replace = bind.call(Function.call, String.prototype.replace); | |
var $strSlice = bind.call(Function.call, String.prototype.slice); | |
var $exec = bind.call(Function.call, RegExp.prototype.exec); | |
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; | |
var reEscapeChar = /\\(\\)?/g; | |
var stringToPath = function stringToPath2(string) { | |
var first = $strSlice(string, 0, 1); | |
var last = $strSlice(string, -1); | |
if (first === "%" && last !== "%") { | |
throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); | |
} else if (last === "%" && first !== "%") { | |
throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); | |
} | |
var result = []; | |
$replace(string, rePropName, function(match, number, quote, subString) { | |
result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; | |
}); | |
return result; | |
}; | |
var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { | |
var intrinsicName = name; | |
var alias; | |
if (hasOwn(LEGACY_ALIASES, intrinsicName)) { | |
alias = LEGACY_ALIASES[intrinsicName]; | |
intrinsicName = "%" + alias[0] + "%"; | |
} | |
if (hasOwn(INTRINSICS, intrinsicName)) { | |
var value = INTRINSICS[intrinsicName]; | |
if (value === needsEval) { | |
value = doEval(intrinsicName); | |
} | |
if (typeof value === "undefined" && !allowMissing) { | |
throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); | |
} | |
return { | |
alias, | |
name: intrinsicName, | |
value | |
}; | |
} | |
throw new $SyntaxError("intrinsic " + name + " does not exist!"); | |
}; | |
module.exports = function GetIntrinsic(name, allowMissing) { | |
if (typeof name !== "string" || name.length === 0) { | |
throw new $TypeError("intrinsic name must be a non-empty string"); | |
} | |
if (arguments.length > 1 && typeof allowMissing !== "boolean") { | |
throw new $TypeError('"allowMissing" argument must be a boolean'); | |
} | |
if ($exec(/^%?[^%]*%?$/, name) === null) { | |
throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); | |
} | |
var parts = stringToPath(name); | |
var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; | |
var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); | |
var intrinsicRealName = intrinsic.name; | |
var value = intrinsic.value; | |
var skipFurtherCaching = false; | |
var alias = intrinsic.alias; | |
if (alias) { | |
intrinsicBaseName = alias[0]; | |
$spliceApply(parts, $concat([0, 1], alias)); | |
} | |
for (var i = 1, isOwn = true; i < parts.length; i += 1) { | |
var part = parts[i]; | |
var first = $strSlice(part, 0, 1); | |
var last = $strSlice(part, -1); | |
if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { | |
throw new $SyntaxError("property names with quotes must have matching quotes"); | |
} | |
if (part === "constructor" || !isOwn) { | |
skipFurtherCaching = true; | |
} | |
intrinsicBaseName += "." + part; | |
intrinsicRealName = "%" + intrinsicBaseName + "%"; | |
if (hasOwn(INTRINSICS, intrinsicRealName)) { | |
value = INTRINSICS[intrinsicRealName]; | |
} else if (value != null) { | |
if (!(part in value)) { | |
if (!allowMissing) { | |
throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); | |
} | |
return void 0; | |
} | |
if ($gOPD && i + 1 >= parts.length) { | |
var desc = $gOPD(value, part); | |
isOwn = !!desc; | |
if (isOwn && "get" in desc && !("originalValue" in desc.get)) { | |
value = desc.get; | |
} else { | |
value = value[part]; | |
} | |
} else { | |
isOwn = hasOwn(value, part); | |
value = value[part]; | |
} | |
if (isOwn && !skipFurtherCaching) { | |
INTRINSICS[intrinsicRealName] = value; | |
} | |
} | |
} | |
return value; | |
}; | |
} | |
}); | |
// node_modules/call-bind/index.js | |
var require_call_bind = __commonJS({ | |
"node_modules/call-bind/index.js"(exports, module) { | |
"use strict"; | |
var bind = require_function_bind(); | |
var GetIntrinsic = require_get_intrinsic(); | |
var $apply = GetIntrinsic("%Function.prototype.apply%"); | |
var $call = GetIntrinsic("%Function.prototype.call%"); | |
var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); | |
var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); | |
var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); | |
var $max = GetIntrinsic("%Math.max%"); | |
if ($defineProperty) { | |
try { | |
$defineProperty({}, "a", { value: 1 }); | |
} catch (e) { | |
$defineProperty = null; | |
} | |
} | |
module.exports = function callBind(originalFunction) { | |
var func = $reflectApply(bind, $call, arguments); | |
if ($gOPD && $defineProperty) { | |
var desc = $gOPD(func, "length"); | |
if (desc.configurable) { | |
$defineProperty( | |
func, | |
"length", | |
{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } | |
); | |
} | |
} | |
return func; | |
}; | |
var applyBind = function applyBind2() { | |
return $reflectApply(bind, $apply, arguments); | |
}; | |
if ($defineProperty) { | |
$defineProperty(module.exports, "apply", { value: applyBind }); | |
} else { | |
module.exports.apply = applyBind; | |
} | |
} | |
}); | |
// node_modules/call-bind/callBound.js | |
var require_callBound = __commonJS({ | |
"node_modules/call-bind/callBound.js"(exports, module) { | |
"use strict"; | |
var GetIntrinsic = require_get_intrinsic(); | |
var callBind = require_call_bind(); | |
var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf")); | |
module.exports = function callBoundIntrinsic(name, allowMissing) { | |
var intrinsic = GetIntrinsic(name, !!allowMissing); | |
if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { | |
return callBind(intrinsic); | |
} | |
return intrinsic; | |
}; | |
} | |
}); | |
// (disabled):node_modules/object-inspect/util.inspect | |
var require_util = __commonJS({ | |
"(disabled):node_modules/object-inspect/util.inspect"() { | |
} | |
}); | |
// node_modules/object-inspect/index.js | |
var require_object_inspect = __commonJS({ | |
"node_modules/object-inspect/index.js"(exports, module) { | |
var hasMap = typeof Map === "function" && Map.prototype; | |
var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; | |
var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; | |
var mapForEach = hasMap && Map.prototype.forEach; | |
var hasSet = typeof Set === "function" && Set.prototype; | |
var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; | |
var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; | |
var setForEach = hasSet && Set.prototype.forEach; | |
var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; | |
var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; | |
var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; | |
var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; | |
var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; | |
var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; | |
var booleanValueOf = Boolean.prototype.valueOf; | |
var objectToString = Object.prototype.toString; | |
var functionToString = Function.prototype.toString; | |
var $match = String.prototype.match; | |
var $slice = String.prototype.slice; | |
var $replace = String.prototype.replace; | |
var $toUpperCase = String.prototype.toUpperCase; | |
var $toLowerCase = String.prototype.toLowerCase; | |
var $test = RegExp.prototype.test; | |
var $concat = Array.prototype.concat; | |
var $join = Array.prototype.join; | |
var $arrSlice = Array.prototype.slice; | |
var $floor = Math.floor; | |
var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; | |
var gOPS = Object.getOwnPropertySymbols; | |
var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; | |
var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; | |
var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; | |
var isEnumerable = Object.prototype.propertyIsEnumerable; | |
var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { | |
return O.__proto__; | |
} : null); | |
function addNumericSeparator(num, str) { | |
if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) { | |
return str; | |
} | |
var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; | |
if (typeof num === "number") { | |
var int = num < 0 ? -$floor(-num) : $floor(num); | |
if (int !== num) { | |
var intStr = String(int); | |
var dec = $slice.call(str, intStr.length + 1); | |
return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); | |
} | |
} | |
return $replace.call(str, sepRegex, "$&_"); | |
} | |
var utilInspect = require_util(); | |
var inspectCustom = utilInspect.custom; | |
var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; | |
module.exports = function inspect_(obj, options, depth, seen) { | |
var opts = options || {}; | |
if (has(opts, "quoteStyle") && (opts.quoteStyle !== "single" && opts.quoteStyle !== "double")) { | |
throw new TypeError('option "quoteStyle" must be "single" or "double"'); | |
} | |
if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { | |
throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); | |
} | |
var customInspect = has(opts, "customInspect") ? opts.customInspect : true; | |
if (typeof customInspect !== "boolean" && customInspect !== "symbol") { | |
throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); | |
} | |
if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { | |
throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); | |
} | |
if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { | |
throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); | |
} | |
var numericSeparator = opts.numericSeparator; | |
if (typeof obj === "undefined") { | |
return "undefined"; | |
} | |
if (obj === null) { | |
return "null"; | |
} | |
if (typeof obj === "boolean") { | |
return obj ? "true" : "false"; | |
} | |
if (typeof obj === "string") { | |
return inspectString(obj, opts); | |
} | |
if (typeof obj === "number") { | |
if (obj === 0) { | |
return Infinity / obj > 0 ? "0" : "-0"; | |
} | |
var str = String(obj); | |
return numericSeparator ? addNumericSeparator(obj, str) : str; | |
} | |
if (typeof obj === "bigint") { | |
var bigIntStr = String(obj) + "n"; | |
return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; | |
} | |
var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; | |
if (typeof depth === "undefined") { | |
depth = 0; | |
} | |
if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { | |
return isArray(obj) ? "[Array]" : "[Object]"; | |
} | |
var indent = getIndent(opts, depth); | |
if (typeof seen === "undefined") { | |
seen = []; | |
} else if (indexOf(seen, obj) >= 0) { | |
return "[Circular]"; | |
} | |
function inspect(value, from, noIndent) { | |
if (from) { | |
seen = $arrSlice.call(seen); | |
seen.push(from); | |
} | |
if (noIndent) { | |
var newOpts = { | |
depth: opts.depth | |
}; | |
if (has(opts, "quoteStyle")) { | |
newOpts.quoteStyle = opts.quoteStyle; | |
} | |
return inspect_(value, newOpts, depth + 1, seen); | |
} | |
return inspect_(value, opts, depth + 1, seen); | |
} | |
if (typeof obj === "function" && !isRegExp(obj)) { | |
var name = nameOf(obj); | |
var keys = arrObjKeys(obj, inspect); | |
return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); | |
} | |
if (isSymbol(obj)) { | |
var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); | |
return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; | |
} | |
if (isElement(obj)) { | |
var s = "<" + $toLowerCase.call(String(obj.nodeName)); | |
var attrs = obj.attributes || []; | |
for (var i = 0; i < attrs.length; i++) { | |
s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); | |
} | |
s += ">"; | |
if (obj.childNodes && obj.childNodes.length) { | |
s += "..."; | |
} | |
s += "</" + $toLowerCase.call(String(obj.nodeName)) + ">"; | |
return s; | |
} | |
if (isArray(obj)) { | |
if (obj.length === 0) { | |
return "[]"; | |
} | |
var xs = arrObjKeys(obj, inspect); | |
if (indent && !singleLineValues(xs)) { | |
return "[" + indentedJoin(xs, indent) + "]"; | |
} | |
return "[ " + $join.call(xs, ", ") + " ]"; | |
} | |
if (isError(obj)) { | |
var parts = arrObjKeys(obj, inspect); | |
if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { | |
return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; | |
} | |
if (parts.length === 0) { | |
return "[" + String(obj) + "]"; | |
} | |
return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; | |
} | |
if (typeof obj === "object" && customInspect) { | |
if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { | |
return utilInspect(obj, { depth: maxDepth - depth }); | |
} else if (customInspect !== "symbol" && typeof obj.inspect === "function") { | |
return obj.inspect(); | |
} | |
} | |
if (isMap(obj)) { | |
var mapParts = []; | |
if (mapForEach) { | |
mapForEach.call(obj, function(value, key) { | |
mapParts.push(inspect(key, obj, true) + " => " + inspect(value, obj)); | |
}); | |
} | |
return collectionOf("Map", mapSize.call(obj), mapParts, indent); | |
} | |
if (isSet(obj)) { | |
var setParts = []; | |
if (setForEach) { | |
setForEach.call(obj, function(value) { | |
setParts.push(inspect(value, obj)); | |
}); | |
} | |
return collectionOf("Set", setSize.call(obj), setParts, indent); | |
} | |
if (isWeakMap(obj)) { | |
return weakCollectionOf("WeakMap"); | |
} | |
if (isWeakSet(obj)) { | |
return weakCollectionOf("WeakSet"); | |
} | |
if (isWeakRef(obj)) { | |
return weakCollectionOf("WeakRef"); | |
} | |
if (isNumber(obj)) { | |
return markBoxed(inspect(Number(obj))); | |
} | |
if (isBigInt(obj)) { | |
return markBoxed(inspect(bigIntValueOf.call(obj))); | |
} | |
if (isBoolean(obj)) { | |
return markBoxed(booleanValueOf.call(obj)); | |
} | |
if (isString(obj)) { | |
return markBoxed(inspect(String(obj))); | |
} | |
if (!isDate(obj) && !isRegExp(obj)) { | |
var ys = arrObjKeys(obj, inspect); | |
var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; | |
var protoTag = obj instanceof Object ? "" : "null prototype"; | |
var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; | |
var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; | |
var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); | |
if (ys.length === 0) { | |
return tag + "{}"; | |
} | |
if (indent) { | |
return tag + "{" + indentedJoin(ys, indent) + "}"; | |
} | |
return tag + "{ " + $join.call(ys, ", ") + " }"; | |
} | |
return String(obj); | |
}; | |
function wrapQuotes(s, defaultStyle, opts) { | |
var quoteChar = (opts.quoteStyle || defaultStyle) === "double" ? '"' : "'"; | |
return quoteChar + s + quoteChar; | |
} | |
function quote(s) { | |
return $replace.call(String(s), /"/g, """); | |
} | |
function isArray(obj) { | |
return toStr(obj) === "[object Array]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isDate(obj) { | |
return toStr(obj) === "[object Date]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isRegExp(obj) { | |
return toStr(obj) === "[object RegExp]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isError(obj) { | |
return toStr(obj) === "[object Error]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isString(obj) { | |
return toStr(obj) === "[object String]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isNumber(obj) { | |
return toStr(obj) === "[object Number]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isBoolean(obj) { | |
return toStr(obj) === "[object Boolean]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj)); | |
} | |
function isSymbol(obj) { | |
if (hasShammedSymbols) { | |
return obj && typeof obj === "object" && obj instanceof Symbol; | |
} | |
if (typeof obj === "symbol") { | |
return true; | |
} | |
if (!obj || typeof obj !== "object" || !symToString) { | |
return false; | |
} | |
try { | |
symToString.call(obj); | |
return true; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isBigInt(obj) { | |
if (!obj || typeof obj !== "object" || !bigIntValueOf) { | |
return false; | |
} | |
try { | |
bigIntValueOf.call(obj); | |
return true; | |
} catch (e) { | |
} | |
return false; | |
} | |
var hasOwn = Object.prototype.hasOwnProperty || function(key) { | |
return key in this; | |
}; | |
function has(obj, key) { | |
return hasOwn.call(obj, key); | |
} | |
function toStr(obj) { | |
return objectToString.call(obj); | |
} | |
function nameOf(f) { | |
if (f.name) { | |
return f.name; | |
} | |
var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); | |
if (m) { | |
return m[1]; | |
} | |
return null; | |
} | |
function indexOf(xs, x) { | |
if (xs.indexOf) { | |
return xs.indexOf(x); | |
} | |
for (var i = 0, l = xs.length; i < l; i++) { | |
if (xs[i] === x) { | |
return i; | |
} | |
} | |
return -1; | |
} | |
function isMap(x) { | |
if (!mapSize || !x || typeof x !== "object") { | |
return false; | |
} | |
try { | |
mapSize.call(x); | |
try { | |
setSize.call(x); | |
} catch (s) { | |
return true; | |
} | |
return x instanceof Map; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isWeakMap(x) { | |
if (!weakMapHas || !x || typeof x !== "object") { | |
return false; | |
} | |
try { | |
weakMapHas.call(x, weakMapHas); | |
try { | |
weakSetHas.call(x, weakSetHas); | |
} catch (s) { | |
return true; | |
} | |
return x instanceof WeakMap; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isWeakRef(x) { | |
if (!weakRefDeref || !x || typeof x !== "object") { | |
return false; | |
} | |
try { | |
weakRefDeref.call(x); | |
return true; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isSet(x) { | |
if (!setSize || !x || typeof x !== "object") { | |
return false; | |
} | |
try { | |
setSize.call(x); | |
try { | |
mapSize.call(x); | |
} catch (m) { | |
return true; | |
} | |
return x instanceof Set; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isWeakSet(x) { | |
if (!weakSetHas || !x || typeof x !== "object") { | |
return false; | |
} | |
try { | |
weakSetHas.call(x, weakSetHas); | |
try { | |
weakMapHas.call(x, weakMapHas); | |
} catch (s) { | |
return true; | |
} | |
return x instanceof WeakSet; | |
} catch (e) { | |
} | |
return false; | |
} | |
function isElement(x) { | |
if (!x || typeof x !== "object") { | |
return false; | |
} | |
if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { | |
return true; | |
} | |
return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; | |
} | |
function inspectString(str, opts) { | |
if (str.length > opts.maxStringLength) { | |
var remaining = str.length - opts.maxStringLength; | |
var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); | |
return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; | |
} | |
var s = $replace.call($replace.call(str, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, lowbyte); | |
return wrapQuotes(s, "single", opts); | |
} | |
function lowbyte(c) { | |
var n = c.charCodeAt(0); | |
var x = { | |
8: "b", | |
9: "t", | |
10: "n", | |
12: "f", | |
13: "r" | |
}[n]; | |
if (x) { | |
return "\\" + x; | |
} | |
return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); | |
} | |
function markBoxed(str) { | |
return "Object(" + str + ")"; | |
} | |
function weakCollectionOf(type) { | |
return type + " { ? }"; | |
} | |
function collectionOf(type, size, entries, indent) { | |
var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", "); | |
return type + " (" + size + ") {" + joinedEntries + "}"; | |
} | |
function singleLineValues(xs) { | |
for (var i = 0; i < xs.length; i++) { | |
if (indexOf(xs[i], "\n") >= 0) { | |
return false; | |
} | |
} | |
return true; | |
} | |
function getIndent(opts, depth) { | |
var baseIndent; | |
if (opts.indent === " ") { | |
baseIndent = " "; | |
} else if (typeof opts.indent === "number" && opts.indent > 0) { | |
baseIndent = $join.call(Array(opts.indent + 1), " "); | |
} else { | |
return null; | |
} | |
return { | |
base: baseIndent, | |
prev: $join.call(Array(depth + 1), baseIndent) | |
}; | |
} | |
function indentedJoin(xs, indent) { | |
if (xs.length === 0) { | |
return ""; | |
} | |
var lineJoiner = "\n" + indent.prev + indent.base; | |
return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev; | |
} | |
function arrObjKeys(obj, inspect) { | |
var isArr = isArray(obj); | |
var xs = []; | |
if (isArr) { | |
xs.length = obj.length; | |
for (var i = 0; i < obj.length; i++) { | |
xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; | |
} | |
} | |
var syms = typeof gOPS === "function" ? gOPS(obj) : []; | |
var symMap; | |
if (hasShammedSymbols) { | |
symMap = {}; | |
for (var k = 0; k < syms.length; k++) { | |
symMap["$" + syms[k]] = syms[k]; | |
} | |
} | |
for (var key in obj) { | |
if (!has(obj, key)) { | |
continue; | |
} | |
if (isArr && String(Number(key)) === key && key < obj.length) { | |
continue; | |
} | |
if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) { | |
continue; | |
} else if ($test.call(/[^\w$]/, key)) { | |
xs.push(inspect(key, obj) + ": " + inspect(obj[key], obj)); | |
} else { | |
xs.push(key + ": " + inspect(obj[key], obj)); | |
} | |
} | |
if (typeof gOPS === "function") { | |
for (var j = 0; j < syms.length; j++) { | |
if (isEnumerable.call(obj, syms[j])) { | |
xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); | |
} | |
} | |
} | |
return xs; | |
} | |
} | |
}); | |
// node_modules/side-channel/index.js | |
var require_side_channel = __commonJS({ | |
"node_modules/side-channel/index.js"(exports, module) { | |
"use strict"; | |
var GetIntrinsic = require_get_intrinsic(); | |
var callBound = require_callBound(); | |
var inspect = require_object_inspect(); | |
var $TypeError = GetIntrinsic("%TypeError%"); | |
var $WeakMap = GetIntrinsic("%WeakMap%", true); | |
var $Map = GetIntrinsic("%Map%", true); | |
var $weakMapGet = callBound("WeakMap.prototype.get", true); | |
var $weakMapSet = callBound("WeakMap.prototype.set", true); | |
var $weakMapHas = callBound("WeakMap.prototype.has", true); | |
var $mapGet = callBound("Map.prototype.get", true); | |
var $mapSet = callBound("Map.prototype.set", true); | |
var $mapHas = callBound("Map.prototype.has", true); | |
var listGetNode = function(list, key) { | |
for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { | |
if (curr.key === key) { | |
prev.next = curr.next; | |
curr.next = list.next; | |
list.next = curr; | |
return curr; | |
} | |
} | |
}; | |
var listGet = function(objects, key) { | |
var node = listGetNode(objects, key); | |
return node && node.value; | |
}; | |
var listSet = function(objects, key, value) { | |
var node = listGetNode(objects, key); | |
if (node) { | |
node.value = value; | |
} else { | |
objects.next = { | |
key, | |
next: objects.next, | |
value | |
}; | |
} | |
}; | |
var listHas = function(objects, key) { | |
return !!listGetNode(objects, key); | |
}; | |
module.exports = function getSideChannel() { | |
var $wm; | |
var $m; | |
var $o; | |
var channel = { | |
assert: function(key) { | |
if (!channel.has(key)) { | |
throw new $TypeError("Side channel does not contain " + inspect(key)); | |
} | |
}, | |
get: function(key) { | |
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { | |
if ($wm) { | |
return $weakMapGet($wm, key); | |
} | |
} else if ($Map) { | |
if ($m) { | |
return $mapGet($m, key); | |
} | |
} else { | |
if ($o) { | |
return listGet($o, key); | |
} | |
} | |
}, | |
has: function(key) { | |
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { | |
if ($wm) { | |
return $weakMapHas($wm, key); | |
} | |
} else if ($Map) { | |
if ($m) { | |
return $mapHas($m, key); | |
} | |
} else { | |
if ($o) { | |
return listHas($o, key); | |
} | |
} | |
return false; | |
}, | |
set: function(key, value) { | |
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { | |
if (!$wm) { | |
$wm = new $WeakMap(); | |
} | |
$weakMapSet($wm, key, value); | |
} else if ($Map) { | |
if (!$m) { | |
$m = new $Map(); | |
} | |
$mapSet($m, key, value); | |
} else { | |
if (!$o) { | |
$o = { key: {}, next: null }; | |
} | |
listSet($o, key, value); | |
} | |
} | |
}; | |
return channel; | |
}; | |
} | |
}); | |
// node_modules/qs/lib/formats.js | |
var require_formats = __commonJS({ | |
"node_modules/qs/lib/formats.js"(exports, module) { | |
"use strict"; | |
var replace = String.prototype.replace; | |
var percentTwenties = /%20/g; | |
var Format = { | |
RFC1738: "RFC1738", | |
RFC3986: "RFC3986" | |
}; | |
module.exports = { | |
"default": Format.RFC3986, | |
formatters: { | |
RFC1738: function(value) { | |
return replace.call(value, percentTwenties, "+"); | |
}, | |
RFC3986: function(value) { | |
return String(value); | |
} | |
}, | |
RFC1738: Format.RFC1738, | |
RFC3986: Format.RFC3986 | |
}; | |
} | |
}); | |
// node_modules/qs/lib/utils.js | |
var require_utils = __commonJS({ | |
"node_modules/qs/lib/utils.js"(exports, module) { | |
"use strict"; | |
var formats = require_formats(); | |
var has = Object.prototype.hasOwnProperty; | |
var isArray = Array.isArray; | |
var hexTable = function() { | |
var array = []; | |
for (var i = 0; i < 256; ++i) { | |
array.push("%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase()); | |
} | |
return array; | |
}(); | |
var compactQueue = function compactQueue2(queue) { | |
while (queue.length > 1) { | |
var item = queue.pop(); | |
var obj = item.obj[item.prop]; | |
if (isArray(obj)) { | |
var compacted = []; | |
for (var j = 0; j < obj.length; ++j) { | |
if (typeof obj[j] !== "undefined") { | |
compacted.push(obj[j]); | |
} | |
} | |
item.obj[item.prop] = compacted; | |
} | |
} | |
}; | |
var arrayToObject = function arrayToObject2(source, options) { | |
var obj = options && options.plainObjects ? /* @__PURE__ */ Object.create(null) : {}; | |
for (var i = 0; i < source.length; ++i) { | |
if (typeof source[i] !== "undefined") { | |
obj[i] = source[i]; | |
} | |
} | |
return obj; | |
}; | |
var merge = function merge2(target, source, options) { | |
if (!source) { | |
return target; | |
} | |
if (typeof source !== "object") { | |
if (isArray(target)) { | |
target.push(source); | |
} else if (target && typeof target === "object") { | |
if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { | |
target[source] = true; | |
} | |
} else { | |
return [target, source]; | |
} | |
return target; | |
} | |
if (!target || typeof target !== "object") { | |
return [target].concat(source); | |
} | |
var mergeTarget = target; | |
if (isArray(target) && !isArray(source)) { | |
mergeTarget = arrayToObject(target, options); | |
} | |
if (isArray(target) && isArray(source)) { | |
source.forEach(function(item, i) { | |
if (has.call(target, i)) { | |
var targetItem = target[i]; | |
if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { | |
target[i] = merge2(targetItem, item, options); | |
} else { | |
target.push(item); | |
} | |
} else { | |
target[i] = item; | |
} | |
}); | |
return target; | |
} | |
return Object.keys(source).reduce(function(acc, key) { | |
var value = source[key]; | |
if (has.call(acc, key)) { | |
acc[key] = merge2(acc[key], value, options); | |
} else { | |
acc[key] = value; | |
} | |
return acc; | |
}, mergeTarget); | |
}; | |
var assign = function assignSingleSource(target, source) { | |
return Object.keys(source).reduce(function(acc, key) { | |
acc[key] = source[key]; | |
return acc; | |
}, target); | |
}; | |
var decode = function(str, decoder, charset) { | |
var strWithoutPlus = str.replace(/\+/g, " "); | |
if (charset === "iso-8859-1") { | |
return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); | |
} | |
try { | |
return decodeURIComponent(strWithoutPlus); | |
} catch (e) { | |
return strWithoutPlus; | |
} | |
}; | |
var encode = function encode2(str, defaultEncoder, charset, kind, format) { | |
if (str.length === 0) { | |
return str; | |
} | |
var string = str; | |
if (typeof str === "symbol") { | |
string = Symbol.prototype.toString.call(str); | |
} else if (typeof str !== "string") { | |
string = String(str); | |
} | |
if (charset === "iso-8859-1") { | |
return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) { | |
return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; | |
}); | |
} | |
var out = ""; | |
for (var i = 0; i < string.length; ++i) { | |
var c = string.charCodeAt(i); | |
if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { | |
out += string.charAt(i); | |
continue; | |
} | |
if (c < 128) { | |
out = out + hexTable[c]; | |
continue; | |
} | |
if (c < 2048) { | |
out = out + (hexTable[192 | c >> 6] + hexTable[128 | c & 63]); | |
continue; | |
} | |
if (c < 55296 || c >= 57344) { | |
out = out + (hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]); | |
continue; | |
} | |
i += 1; | |
c = 65536 + ((c & 1023) << 10 | string.charCodeAt(i) & 1023); | |
out += hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; | |
} | |
return out; | |
}; | |
var compact = function compact2(value) { | |
var queue = [{ obj: { o: value }, prop: "o" }]; | |
var refs = []; | |
for (var i = 0; i < queue.length; ++i) { | |
var item = queue[i]; | |
var obj = item.obj[item.prop]; | |
var keys = Object.keys(obj); | |
for (var j = 0; j < keys.length; ++j) { | |
var key = keys[j]; | |
var val = obj[key]; | |
if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) { | |
queue.push({ obj, prop: key }); | |
refs.push(val); | |
} | |
} | |
} | |
compactQueue(queue); | |
return value; | |
}; | |
var isRegExp = function isRegExp2(obj) { | |
return Object.prototype.toString.call(obj) === "[object RegExp]"; | |
}; | |
var isBuffer = function isBuffer2(obj) { | |
if (!obj || typeof obj !== "object") { | |
return false; | |
} | |
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); | |
}; | |
var combine = function combine2(a, b) { | |
return [].concat(a, b); | |
}; | |
var maybeMap = function maybeMap2(val, fn) { | |
if (isArray(val)) { | |
var mapped = []; | |
for (var i = 0; i < val.length; i += 1) { | |
mapped.push(fn(val[i])); | |
} | |
return mapped; | |
} | |
return fn(val); | |
}; | |
module.exports = { | |
arrayToObject, | |
assign, | |
combine, | |
compact, | |
decode, | |
encode, | |
isBuffer, | |
isRegExp, | |
maybeMap, | |
merge | |
}; | |
} | |
}); | |
// node_modules/qs/lib/stringify.js | |
var require_stringify = __commonJS({ | |
"node_modules/qs/lib/stringify.js"(exports, module) { | |
"use strict"; | |
var getSideChannel = require_side_channel(); | |
var utils = require_utils(); | |
var formats = require_formats(); | |
var has = Object.prototype.hasOwnProperty; | |
var arrayPrefixGenerators = { | |
brackets: function brackets(prefix) { | |
return prefix + "[]"; | |
}, | |
comma: "comma", | |
indices: function indices(prefix, key) { | |
return prefix + "[" + key + "]"; | |
}, | |
repeat: function repeat(prefix) { | |
return prefix; | |
} | |
}; | |
var isArray = Array.isArray; | |
var push = Array.prototype.push; | |
var pushToArray = function(arr, valueOrArray) { | |
push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); | |
}; | |
var toISO = Date.prototype.toISOString; | |
var defaultFormat = formats["default"]; | |
var defaults = { | |
addQueryPrefix: false, | |
allowDots: false, | |
charset: "utf-8", | |
charsetSentinel: false, | |
delimiter: "&", | |
encode: true, | |
encoder: utils.encode, | |
encodeValuesOnly: false, | |
format: defaultFormat, | |
formatter: formats.formatters[defaultFormat], | |
indices: false, | |
serializeDate: function serializeDate(date) { | |
return toISO.call(date); | |
}, | |
skipNulls: false, | |
strictNullHandling: false | |
}; | |
var isNonNullishPrimitive = function isNonNullishPrimitive2(v) { | |
return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; | |
}; | |
var sentinel = {}; | |
var stringify = function stringify2(object, prefix, generateArrayPrefix, commaRoundTrip, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) { | |
var obj = object; | |
var tmpSc = sideChannel; | |
var step = 0; | |
var findFlag = false; | |
while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { | |
var pos = tmpSc.get(object); | |
step += 1; | |
if (typeof pos !== "undefined") { | |
if (pos === step) { | |
throw new RangeError("Cyclic object value"); | |
} else { | |
findFlag = true; | |
} | |
} | |
if (typeof tmpSc.get(sentinel) === "undefined") { | |
step = 0; | |
} | |
} | |
if (typeof filter === "function") { | |
obj = filter(prefix, obj); | |
} else if (obj instanceof Date) { | |
obj = serializeDate(obj); | |
} else if (generateArrayPrefix === "comma" && isArray(obj)) { | |
obj = utils.maybeMap(obj, function(value2) { | |
if (value2 instanceof Date) { | |
return serializeDate(value2); | |
} | |
return value2; | |
}); | |
} | |
if (obj === null) { | |
if (strictNullHandling) { | |
return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix; | |
} | |
obj = ""; | |
} | |
if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { | |
if (encoder) { | |
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, "key", format); | |
return [formatter(keyValue) + "=" + formatter(encoder(obj, defaults.encoder, charset, "value", format))]; | |
} | |
return [formatter(prefix) + "=" + formatter(String(obj))]; | |
} | |
var values = []; | |
if (typeof obj === "undefined") { | |
return values; | |
} | |
var objKeys; | |
if (generateArrayPrefix === "comma" && isArray(obj)) { | |
if (encodeValuesOnly && encoder) { | |
obj = utils.maybeMap(obj, encoder); | |
} | |
objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }]; | |
} else if (isArray(filter)) { | |
objKeys = filter; | |
} else { | |
var keys = Object.keys(obj); | |
objKeys = sort ? keys.sort(sort) : keys; | |
} | |
var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + "[]" : prefix; | |
for (var j = 0; j < objKeys.length; ++j) { | |
var key = objKeys[j]; | |
var value = typeof key === "object" && typeof key.value !== "undefined" ? key.value : obj[key]; | |
if (skipNulls && value === null) { | |
continue; | |
} | |
var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + key : "[" + key + "]"); | |
sideChannel.set(object, step); | |
var valueSideChannel = getSideChannel(); | |
valueSideChannel.set(sentinel, sideChannel); | |
pushToArray(values, stringify2( | |
value, | |
keyPrefix, | |
generateArrayPrefix, | |
commaRoundTrip, | |
strictNullHandling, | |
skipNulls, | |
generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder, | |
filter, | |
sort, | |
allowDots, | |
serializeDate, | |
format, | |
formatter, | |
encodeValuesOnly, | |
charset, | |
valueSideChannel | |
)); | |
} | |
return values; | |
}; | |
var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) { | |
if (!opts) { | |
return defaults; | |
} | |
if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { | |
throw new TypeError("Encoder has to be a function."); | |
} | |
var charset = opts.charset || defaults.charset; | |
if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { | |
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); | |
} | |
var format = formats["default"]; | |
if (typeof opts.format !== "undefined") { | |
if (!has.call(formats.formatters, opts.format)) { | |
throw new TypeError("Unknown format option provided."); | |
} | |
format = opts.format; | |
} | |
var formatter = formats.formatters[format]; | |
var filter = defaults.filter; | |
if (typeof opts.filter === "function" || isArray(opts.filter)) { | |
filter = opts.filter; | |
} | |
return { | |
addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, | |
allowDots: typeof opts.allowDots === "undefined" ? defaults.allowDots : !!opts.allowDots, | |
charset, | |
charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, | |
delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, | |
encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, | |
encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, | |
encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, | |
filter, | |
format, | |
formatter, | |
serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, | |
skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, | |
sort: typeof opts.sort === "function" ? opts.sort : null, | |
strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling | |
}; | |
}; | |
module.exports = function(object, opts) { | |
var obj = object; | |
var options = normalizeStringifyOptions(opts); | |
var objKeys; | |
var filter; | |
if (typeof options.filter === "function") { | |
filter = options.filter; | |
obj = filter("", obj); | |
} else if (isArray(options.filter)) { | |
filter = options.filter; | |
objKeys = filter; | |
} | |
var keys = []; | |
if (typeof obj !== "object" || obj === null) { | |
return ""; | |
} | |
var arrayFormat; | |
if (opts && opts.arrayFormat in arrayPrefixGenerators) { | |
arrayFormat = opts.arrayFormat; | |
} else if (opts && "indices" in opts) { | |
arrayFormat = opts.indices ? "indices" : "repeat"; | |
} else { | |
arrayFormat = "indices"; | |
} | |
var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; | |
if (opts && "commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { | |
throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); | |
} | |
var commaRoundTrip = generateArrayPrefix === "comma" && opts && opts.commaRoundTrip; | |
if (!objKeys) { | |
objKeys = Object.keys(obj); | |
} | |
if (options.sort) { | |
objKeys.sort(options.sort); | |
} | |
var sideChannel = getSideChannel(); | |
for (var i = 0; i < objKeys.length; ++i) { | |
var key = objKeys[i]; | |
if (options.skipNulls && obj[key] === null) { | |
continue; | |
} | |
pushToArray(keys, stringify( | |
obj[key], | |
key, | |
generateArrayPrefix, | |
commaRoundTrip, | |
options.strictNullHandling, | |
options.skipNulls, | |
options.encode ? options.encoder : null, | |
options.filter, | |
options.sort, | |
options.allowDots, | |
options.serializeDate, | |
options.format, | |
options.formatter, | |
options.encodeValuesOnly, | |
options.charset, | |
sideChannel | |
)); | |
} | |
var joined = keys.join(options.delimiter); | |
var prefix = options.addQueryPrefix === true ? "?" : ""; | |
if (options.charsetSentinel) { | |
if (options.charset === "iso-8859-1") { | |
prefix += "utf8=%26%2310003%3B&"; | |
} else { | |
prefix += "utf8=%E2%9C%93&"; | |
} | |
} | |
return joined.length > 0 ? prefix + joined : ""; | |
}; | |
} | |
}); | |
// node_modules/qs/lib/parse.js | |
var require_parse = __commonJS({ | |
"node_modules/qs/lib/parse.js"(exports, module) { | |
"use strict"; | |
var utils = require_utils(); | |
var has = Object.prototype.hasOwnProperty; | |
var isArray = Array.isArray; | |
var defaults = { | |
allowDots: false, | |
allowPrototypes: false, | |
allowSparse: false, | |
arrayLimit: 20, | |
charset: "utf-8", | |
charsetSentinel: false, | |
comma: false, | |
decoder: utils.decode, | |
delimiter: "&", | |
depth: 5, | |
ignoreQueryPrefix: false, | |
interpretNumericEntities: false, | |
parameterLimit: 1e3, | |
parseArrays: true, | |
plainObjects: false, | |
strictNullHandling: false | |
}; | |
var interpretNumericEntities = function(str) { | |
return str.replace(/&#(\d+);/g, function($0, numberStr) { | |
return String.fromCharCode(parseInt(numberStr, 10)); | |
}); | |
}; | |
var parseArrayValue = function(val, options) { | |
if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { | |
return val.split(","); | |
} | |
return val; | |
}; | |
var isoSentinel = "utf8=%26%2310003%3B"; | |
var charsetSentinel = "utf8=%E2%9C%93"; | |
var parseValues = function parseQueryStringValues(str, options) { | |
var obj = {}; | |
var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; | |
var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; | |
var parts = cleanStr.split(options.delimiter, limit); | |
var skipIndex = -1; | |
var i; | |
var charset = options.charset; | |
if (options.charsetSentinel) { | |
for (i = 0; i < parts.length; ++i) { | |
if (parts[i].indexOf("utf8=") === 0) { | |
if (parts[i] === charsetSentinel) { | |
charset = "utf-8"; | |
} else if (parts[i] === isoSentinel) { | |
charset = "iso-8859-1"; | |
} | |
skipIndex = i; | |
i = parts.length; | |
} | |
} | |
} | |
for (i = 0; i < parts.length; ++i) { | |
if (i === skipIndex) { | |
continue; | |
} | |
var part = parts[i]; | |
var bracketEqualsPos = part.indexOf("]="); | |
var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; | |
var key, val; | |
if (pos === -1) { | |
key = options.decoder(part, defaults.decoder, charset, "key"); | |
val = options.strictNullHandling ? null : ""; | |
} else { | |
key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); | |
val = utils.maybeMap( | |
parseArrayValue(part.slice(pos + 1), options), | |
function(encodedVal) { | |
return options.decoder(encodedVal, defaults.decoder, charset, "value"); | |
} | |
); | |
} | |
if (val && options.interpretNumericEntities && charset === "iso-8859-1") { | |
val = interpretNumericEntities(val); | |
} | |
if (part.indexOf("[]=") > -1) { | |
val = isArray(val) ? [val] : val; | |
} | |
if (has.call(obj, key)) { | |
obj[key] = utils.combine(obj[key], val); | |
} else { | |
obj[key] = val; | |
} | |
} | |
return obj; | |
}; | |
var parseObject = function(chain, val, options, valuesParsed) { | |
var leaf = valuesParsed ? val : parseArrayValue(val, options); | |
for (var i = chain.length - 1; i >= 0; --i) { | |
var obj; | |
var root = chain[i]; | |
if (root === "[]" && options.parseArrays) { | |
obj = [].concat(leaf); | |
} else { | |
obj = options.plainObjects ? /* @__PURE__ */ Object.create(null) : {}; | |
var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; | |
var index2 = parseInt(cleanRoot, 10); | |
if (!options.parseArrays && cleanRoot === "") { | |
obj = { 0: leaf }; | |
} else if (!isNaN(index2) && root !== cleanRoot && String(index2) === cleanRoot && index2 >= 0 && (options.parseArrays && index2 <= options.arrayLimit)) { | |
obj = []; | |
obj[index2] = leaf; | |
} else if (cleanRoot !== "__proto__") { | |
obj[cleanRoot] = leaf; | |
} | |
} | |
leaf = obj; | |
} | |
return leaf; | |
}; | |
var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { | |
if (!givenKey) { | |
return; | |
} | |
var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey; | |
var brackets = /(\[[^[\]]*])/; | |
var child = /(\[[^[\]]*])/g; | |
var segment = options.depth > 0 && brackets.exec(key); | |
var parent = segment ? key.slice(0, segment.index) : key; | |
var keys = []; | |
if (parent) { | |
if (!options.plainObjects && has.call(Object.prototype, parent)) { | |
if (!options.allowPrototypes) { | |
return; | |
} | |
} | |
keys.push(parent); | |
} | |
var i = 0; | |
while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { | |
i += 1; | |
if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { | |
if (!options.allowPrototypes) { | |
return; | |
} | |
} | |
keys.push(segment[1]); | |
} | |
if (segment) { | |
keys.push("[" + key.slice(segment.index) + "]"); | |
} | |
return parseObject(keys, val, options, valuesParsed); | |
}; | |
var normalizeParseOptions = function normalizeParseOptions2(opts) { | |
if (!opts) { | |
return defaults; | |
} | |
if (opts.decoder !== null && opts.decoder !== void 0 && typeof opts.decoder !== "function") { | |
throw new TypeError("Decoder has to be a function."); | |
} | |
if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { | |
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); | |
} | |
var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; | |
return { | |
allowDots: typeof opts.allowDots === "undefined" ? defaults.allowDots : !!opts.allowDots, | |
allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, | |
allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, | |
arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, | |
charset, | |
charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, | |
comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, | |
decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, | |
delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, | |
depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, | |
ignoreQueryPrefix: opts.ignoreQueryPrefix === true, | |
interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, | |
parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, | |
parseArrays: opts.parseArrays !== false, | |
plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, | |
strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling | |
}; | |
}; | |
module.exports = function(str, opts) { | |
var options = normalizeParseOptions(opts); | |
if (str === "" || str === null || typeof str === "undefined") { | |
return options.plainObjects ? /* @__PURE__ */ Object.create(null) : {}; | |
} | |
var tempObj = typeof str === "string" ? parseValues(str, options) : str; | |
var obj = options.plainObjects ? /* @__PURE__ */ Object.create(null) : {}; | |
var keys = Object.keys(tempObj); | |
for (var i = 0; i < keys.length; ++i) { | |
var key = keys[i]; | |
var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); | |
obj = utils.merge(obj, newObj, options); | |
} | |
if (options.allowSparse === true) { | |
return obj; | |
} | |
return utils.compact(obj); | |
}; | |
} | |
}); | |
// node_modules/qs/lib/index.js | |
var require_lib2 = __commonJS({ | |
"node_modules/qs/lib/index.js"(exports, module) { | |
"use strict"; | |
var stringify = require_stringify(); | |
var parse = require_parse(); | |
var formats = require_formats(); | |
module.exports = { | |
formats, | |
parse, | |
stringify | |
}; | |
} | |
}); | |
// src/index.js | |
var import_hono6 = __toESM(require_dist()); | |
var import_cors = __toESM(require_cors()); | |
// src/routes/index.js | |
var import_hono = __toESM(require_dist()); | |
// package.json | |
var package_default = { | |
private: true, | |
name: "imdb-api", | |
version: "1.0.3", | |
description: "Serverless IMDB API powered by Cloudflare Worker", | |
main: "src/index.js", | |
scripts: { | |
dev: "wrangler dev src/index.js --port 3000", | |
publish: "wrangler deploy src/index.js", | |
test: "jest", | |
start: "wrangler dev src/index.js --port 3000", | |
bump: "node scripts/bump-version.js" | |
}, | |
author: "tuhinpal <[email protected]>", | |
license: "Apache-2.0", | |
devDependencies: { | |
axios: "^0.27.2", | |
jest: "^28.1.0", | |
wrangler: "^3.3.0" | |
}, | |
dependencies: { | |
"dom-parser": "^0.1.6", | |
hono: "^1.4.1", | |
"html-entities": "^2.3.3", | |
qs: "^6.11.1" | |
}, | |
directories: { | |
test: "tests" | |
}, | |
repository: { | |
type: "git", | |
url: "git+https://github.com/tuhinpal/imdb-api.git" | |
}, | |
keywords: [ | |
"imdb", | |
"imdb-api", | |
"movie-list", | |
"cloudflare-worker", | |
"cloudflare-workers" | |
], | |
bugs: { | |
url: "https://github.com/tuhinpal/imdb-api/issues" | |
}, | |
homepage: "https://github.com/tuhinpal/imdb-api#readme" | |
}; | |
// src/routes/index.js | |
var index = new import_hono.Hono(); | |
index.get("/", async (c) => { | |
return c.json({ | |
status: "Running", | |
name: package_default.name, | |
description: package_default.description, | |
version: package_default.version, | |
repository: package_default.homepage, | |
author: package_default.author, | |
license: package_default.license, | |
postman: "https://www.postman.com/tuhin-pal/workspace/imdb-api/collection/12162111-12f08f8e-a76b-4cf4-a7b9-17cb9f95dd82?action=share&creator=12162111", | |
postman_collection_json: "https://www.getpostman.com/collections/c261b9abc6b2a4b5f1c8" | |
}); | |
}); | |
var routes_default = index; | |
// src/routes/reviews.js | |
var import_hono2 = __toESM(require_dist()); | |
var import_dom_parser = __toESM(require_dom_parser()); | |
var import_html_entities = __toESM(require_lib()); | |
// src/helpers/apiRequestRawHtml.js | |
async function apiRequestRawHtml(url) { | |
let data = await fetch(url, { | |
headers: { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36", | |
accept: "text/html", | |
"accept-language": "en-US" | |
} | |
}); | |
let text = await data.text(); | |
return text; | |
} | |
async function apiRequestJson(url) { | |
let data = await fetch(url, { | |
headers: { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36", | |
accept: "text/html", | |
"accept-language": "en-US" | |
} | |
}); | |
let text = await data.json(); | |
return text; | |
} | |
// src/routes/reviews.js | |
var reviews = new import_hono2.Hono(); | |
reviews.get("/:id", async (c) => { | |
try { | |
const id = c.req.param("id"); | |
let option = optionsMapper[0]; | |
try { | |
let getOption = optionsMapper.find( | |
(option2) => option2.name === c.req.query("option") | |
); | |
if (getOption) | |
option = getOption; | |
} catch (_) { | |
} | |
let sortOrder = c.req.query("sortOrder") === "asc" ? "asc" : "desc"; | |
let nextKey = c.req.query("nextKey"); | |
let reviews2 = []; | |
let parser = new import_dom_parser.default(); | |
let rawHtml = await apiRequestRawHtml( | |
`https://www.imdb.com/title/${id}/reviews/_ajax?sort=${option.key}&dir=${sortOrder}${nextKey ? `&paginationKey=${nextKey}` : ""}` | |
); | |
let dom = parser.parseFromString(rawHtml); | |
let item = dom.getElementsByClassName("imdb-user-review"); | |
item.forEach((node) => { | |
try { | |
let review = {}; | |
try { | |
let reviewId = node.getAttribute("data-review-id"); | |
review.id = reviewId; | |
} catch (_) { | |
review.id = null; | |
} | |
try { | |
let author = node.getElementsByClassName("display-name-link")[0]; | |
review.author = (0, import_html_entities.decode)(author.textContent.trim(), { | |
level: "html5" | |
}); | |
review.authorUrl = "https://www.imdb.com" + author.getElementsByTagName("a")[0].getAttribute("href"); | |
} catch (_) { | |
if (!review.author) | |
review.author = "Anonymous"; | |
if (!review.authorUrl) | |
review.authorUrl = null; | |
} | |
try { | |
review.user_api_path = "/user/" + review.authorUrl.match(/\/user\/(.*)\//)[1]; | |
} catch (error) { | |
review.user_api_path = null; | |
} | |
try { | |
let reviewDate = node.getElementsByClassName("review-date")[0]; | |
reviewDate = reviewDate.textContent.trim(); | |
review.date = new Date(reviewDate).toISOString(); | |
} catch (error) { | |
review.date = null; | |
} | |
try { | |
let stars = node.getElementsByClassName("ipl-ratings-bar")[0].textContent; | |
let match = stars.match(/\d+/g); | |
review.stars = parseInt(match[0]); | |
} catch (_) { | |
review.stars = 0; | |
} | |
try { | |
let heading = node.getElementsByClassName("title")[0]; | |
review.heading = (0, import_html_entities.decode)(heading.textContent.trim(), { | |
level: "html5" | |
}); | |
} catch (_) { | |
review.heading = null; | |
} | |
try { | |
let content = node.getElementsByClassName("text")[0]; | |
review.content = (0, import_html_entities.decode)(content.textContent.trim(), { | |
level: "html5" | |
}); | |
} catch (_) { | |
review.content = null; | |
} | |
try { | |
let helpfulNess = node.getElementsByClassName("actions")[0].textContent.trim(); | |
let match = helpfulNess.match(/\d+/g); | |
review.helpfulNess = { | |
votes: parseInt(match[1]), | |
votedAsHelpful: parseInt(match[0]), | |
votedAsHelpfulPercentage: Math.round(parseInt(match[0]) / parseInt(match[1]) * 100) || 0 | |
}; | |
} catch (_) { | |
review.helpfulNess = { | |
votes: 0, | |
votedAsHelpful: 0, | |
votedAsHelpfulPercentage: 0 | |
}; | |
} | |
review.reviewLink = `https://www.imdb.com/review/${review.id}`; | |
reviews2.push(review); | |
} catch (__) { | |
} | |
}); | |
let next = null; | |
try { | |
let morePage = dom.getElementsByClassName("load-more-data")[0]; | |
next = morePage.getAttribute("data-key"); | |
next = `/reviews/${id}?option=${option.name}&sortOrder=${sortOrder}&nextKey=${next}`; | |
} catch (_) { | |
} | |
let result = { | |
id, | |
imdb: `https://www.imdb.com/title/${id}`, | |
option: option.name, | |
sortOrder, | |
availableOptions: optionsMapper.map((option2) => option2.name), | |
availableSortOrders: ["asc", "desc"], | |
reviews: reviews2, | |
next_api_path: next | |
}; | |
return c.json(result); | |
} catch (error) { | |
c.status(500); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
}); | |
var reviews_default = reviews; | |
var optionsMapper = [ | |
{ | |
key: "helpfulnessScore", | |
name: "helpfulness" | |
}, | |
{ | |
key: "submissionDate", | |
name: "date" | |
}, | |
{ | |
key: "totalVotes", | |
name: "votes" | |
}, | |
{ | |
key: "userRating", | |
name: "rating" | |
} | |
]; | |
// src/routes/title.js | |
var import_hono3 = __toESM(require_dist()); | |
// src/helpers/seriesFetcher.js | |
var import_dom_parser2 = __toESM(require_dom_parser()); | |
async function seriesFetcher(id) { | |
try { | |
const firstSeason = await getSeason({ id, seasonId: 1 }); | |
return { | |
all_seasons: firstSeason.all_seasons, | |
seasons: [ | |
{ | |
...firstSeason, | |
all_seasons: void 0 | |
} | |
] | |
}; | |
} catch (error) { | |
return { | |
all_seasons: [], | |
seasons: [] | |
}; | |
} | |
} | |
async function getSeason({ id, seasonId }) { | |
const html = await apiRequestRawHtml( | |
`https://www.imdb.com/title/${id}/episodes?season=${seasonId}` | |
); | |
let parser = new import_dom_parser2.default(); | |
let dom = parser.parseFromString(html); | |
const nextData = dom.getElementsByAttribute("id", "__NEXT_DATA__"); | |
const json = JSON.parse(nextData[0].textContent); | |
const episodes = json.props.pageProps.contentData.section.episodes.items; | |
const seasons = json.props.pageProps.contentData.section.seasons; | |
return { | |
name: json.props.pageProps.contentData.entityMetadata.titleText.text, | |
episodes: Object.values(episodes).map((e, i) => { | |
return { | |
idx: i + 1, | |
no: e.episode, | |
title: e.titleText, | |
image: e.image.url, | |
image_large: e.image.url, | |
image_caption: e.image.caption, | |
plot: e.plot, | |
publishedDate: new Date( | |
e.releaseDate.year, | |
e.releaseDate.month - 1, | |
e.releaseDate.day | |
).toISOString(), | |
rating: { | |
count: e.voteCount, | |
star: e.aggregateRating | |
} | |
}; | |
}), | |
all_seasons: seasons.map((s) => ({ | |
id: s.value, | |
name: `Season ${s.value}`, | |
api_path: `/title/${id}/season/${s.value}` | |
})) | |
}; | |
} | |
// src/helpers/getTitle.js | |
var import_dom_parser3 = __toESM(require_dom_parser()); | |
async function getTitle(id) { | |
const parser = new import_dom_parser3.default(); | |
const html = await apiRequestRawHtml(`https://www.imdb.com/title/${id}`); | |
const dom = parser.parseFromString(html); | |
const nextData = dom.getElementsByAttribute("id", "__NEXT_DATA__"); | |
const json = JSON.parse(nextData[0].textContent); | |
const props = json.props.pageProps; | |
const getCredits = (lookFor, v) => { | |
const result = props.aboveTheFoldData.principalCredits.find( | |
(e) => e?.category?.id === lookFor | |
); | |
return result ? result.credits.map((e) => { | |
if (v === "2") | |
return { | |
id: e.name.id, | |
name: e.name.nameText.text | |
}; | |
return e.name.nameText.text; | |
}) : []; | |
}; | |
return { | |
id, | |
review_api_path: `/reviews/${id}`, | |
imdb: `https://www.imdb.com/title/${id}`, | |
contentType: props.aboveTheFoldData.titleType.id, | |
contentRating: props.aboveTheFoldData?.certificate?.rating ?? "N/A", | |
isSeries: props.aboveTheFoldData.titleType.isSeries, | |
productionStatus: props.aboveTheFoldData.productionStatus.currentProductionStage.id, | |
isReleased: props.aboveTheFoldData.productionStatus.currentProductionStage.id === "released", | |
title: props.aboveTheFoldData.titleText.text, | |
image: props.aboveTheFoldData.primaryImage.url, | |
images: props.mainColumnData.titleMainImages.edges.filter((e) => e.__typename === "ImageEdge").map((e) => e.node.url), | |
plot: props.aboveTheFoldData.plot.plotText.plainText, | |
runtime: props.aboveTheFoldData.runtime?.displayableProperty?.value?.plainText ?? "", | |
runtimeSeconds: props.aboveTheFoldData.runtime?.seconds ?? 0, | |
rating: { | |
count: props.aboveTheFoldData.ratingsSummary?.voteCount ?? 0, | |
star: props.aboveTheFoldData.ratingsSummary?.aggregateRating ?? 0 | |
}, | |
award: { | |
wins: props.mainColumnData.wins?.total ?? 0, | |
nominations: props.mainColumnData.nominations?.total ?? 0 | |
}, | |
genre: props.aboveTheFoldData.genres.genres.map((e) => e.id), | |
releaseDetailed: { | |
date: new Date( | |
props.aboveTheFoldData.releaseDate.year, | |
props.aboveTheFoldData.releaseDate.month - 1, | |
props.aboveTheFoldData.releaseDate.day | |
).toISOString(), | |
day: props.aboveTheFoldData.releaseDate.day, | |
month: props.aboveTheFoldData.releaseDate.month, | |
year: props.aboveTheFoldData.releaseDate.year, | |
releaseLocation: { | |
country: props.mainColumnData.releaseDate?.country?.text, | |
cca2: props.mainColumnData.releaseDate?.country?.id | |
}, | |
originLocations: props.mainColumnData.countriesOfOrigin.countries.map( | |
(e) => ({ | |
country: e.text, | |
cca2: e.id | |
}) | |
) | |
}, | |
year: props.aboveTheFoldData.releaseDate.year, | |
spokenLanguages: props.mainColumnData.spokenLanguages.spokenLanguages.map( | |
(e) => ({ | |
language: e.text, | |
id: e.id | |
}) | |
), | |
filmingLocations: props.mainColumnData.filmingLocations.edges.map( | |
(e) => e.node.text | |
), | |
actors: getCredits("cast"), | |
actors_v2: getCredits("cast", "2"), | |
creators: getCredits("creator"), | |
creators_v2: getCredits("creator", "2"), | |
directors: getCredits("director"), | |
directors_v2: getCredits("director", "2"), | |
writers: getCredits("writer"), | |
writers_v2: getCredits("writer", "2"), | |
top_credits: props.aboveTheFoldData.principalCredits.map((e) => ({ | |
id: e.category.id, | |
name: e.category.text, | |
credits: e.credits.map((e2) => e2.name.nameText.text) | |
})), | |
...props.aboveTheFoldData.titleType.isSeries ? await seriesFetcher(id) : {} | |
}; | |
} | |
// src/routes/title.js | |
var title = new import_hono3.Hono(); | |
title.get("/:id", async (c) => { | |
const id = c.req.param("id"); | |
try { | |
const result = await getTitle(id); | |
return c.json(result); | |
} catch (error) { | |
c.status(500); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
}); | |
title.get("/:id/banner", async (c) => { | |
const id = c.req.param("id"); | |
let data = []; | |
try { | |
const result = await getTitle(id); | |
data.push({ "test": result["image"] }) | |
// headers: { Location: url.href } | |
c.status(302) | |
c.res.headers.append("Location", `${result["images"][1]}`); | |
return c.json(data); | |
} catch (error) { | |
c.status(500); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
}); | |
title.get("/:id/cover", async (c) => { | |
const id = c.req.param("id"); | |
let data = []; | |
try { | |
const result = await getTitle(id); | |
data.push({ "test": result["image"] }) | |
// headers: { Location: url.href } | |
c.status(301) | |
c.res.headers.append("Location", `${result["image"]}`); | |
return c.json(data); | |
} catch (error) { | |
c.status(500); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
}); | |
title.get("/:id/season/:seasonId", async (c) => { | |
const id = c.req.param("id"); | |
const seasonId = c.req.param("seasonId"); | |
try { | |
const result = await getSeason({ id, seasonId }); | |
const response = Object.assign( | |
{ | |
id, | |
title_api_path: `/title/${id}`, | |
imdb: `https://www.imdb.com/title/${id}/episodes?season=${seasonId}`, | |
season_id: seasonId | |
}, | |
result | |
); | |
return c.json(response); | |
} catch (error) { | |
c.status(500); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
}); | |
var title_default = title; | |
// config.js | |
var config_default = { | |
cacheDisabled: false | |
}; | |
// src/helpers/cache.js | |
async function cache(c, next) { | |
const key = c.req.url; | |
const cache2 = await caches.default; | |
const response = await cache2.match(key); | |
function getCacheTTL() { | |
try { | |
let url = key.toString().toLowerCase(); | |
if (url.includes("/reviews")) | |
return 60 * 60 * 24; | |
if (url.includes("/title")) | |
return 60 * 60 * 24; | |
if (url.includes("/search")) | |
return 60 * 60 * 24 * 2; | |
} catch (_) { | |
} | |
return 86400; | |
} | |
if (!response) { | |
await next(); | |
if (c.res.status === 200 && !config_default.cacheDisabled) { | |
c.res.headers.append("Cache-Control", `public, max-age=${getCacheTTL()}`); | |
await cache2.put(key, c.res.clone()); | |
} | |
return; | |
} else { | |
for (let [key2, value] of response.headers.entries()) { | |
c.res.headers.set(key2, value); | |
} | |
return c.json(await response.json()); | |
} | |
} | |
// src/routes/search.js | |
var import_hono4 = __toESM(require_dist()); | |
var search = new import_hono4.Hono(); | |
search.get("/", async (c) => { | |
try { | |
let query = c.req.query("query"); | |
if (!query) | |
throw new Error("Query param is required"); | |
let data = await apiRequestJson( | |
`https://v3.sg.media-imdb.com/suggestion/x/${query}.json?includeVideos=0` | |
); | |
let response = { | |
query | |
}; | |
let titles = []; | |
data.d.forEach((node) => { | |
try { | |
if (!node.qid) | |
return; | |
if (!["movie"].includes(node.qid)) | |
return; | |
let imageObj = { | |
image: null, | |
image_large: null | |
}; | |
if (node.i) { | |
imageObj.image_large = node.i.imageUrl; | |
try { | |
let width = Math.floor(396 * node.i.width / node.i.height); | |
imageObj.image = node.i.imageUrl.replace( | |
/[.]_.*_[.]/, | |
`._V1_UY396_CR6,0,${width},396_AL_.` | |
); | |
} catch (_) { | |
imageObj.image = imageObj.image_large; | |
} | |
} | |
titles.push({ | |
id: node.id, | |
title: node.l, | |
year: node.y, | |
type: node.qid, | |
...imageObj, | |
api_path: `/title/${node.id}`, | |
imdb: `https://www.imdb.com/title/${node.id}` | |
}); | |
} catch (_) { | |
console.log(_); | |
} | |
}); | |
response.message = `Found ${titles.length} titles`; | |
response.results = titles; | |
return c.json(response); | |
} catch (error) { | |
c.status(500); | |
let errorMessage = error.message; | |
if (error.message.includes("Too many")) | |
errorMessage = "Too many requests error from IMDB, please try again later"; | |
return c.json({ | |
query: null, | |
results: [], | |
message: errorMessage | |
}); | |
} | |
}); | |
var search_default = search; | |
// src/routes/user/index.js | |
var import_hono5 = __toESM(require_dist()); | |
// src/routes/user/info.js | |
var import_dom_parser4 = __toESM(require_dom_parser()); | |
async function userInfo(c) { | |
let errorStatus = 500; | |
try { | |
const userId = c.req.param("id"); | |
const response = await fetch(`https://www.imdb.com/user/${userId}`, { | |
headers: { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36", | |
accept: "text/html", | |
"accept-language": "en-US" | |
} | |
}); | |
if (!response.ok) { | |
errorStatus = response.status; | |
throw new Error( | |
errorStatus === 404 ? "Seems like user is not exixts." : "Error fetching user info." | |
); | |
} | |
const rawHtml = await response.text(); | |
const parser = new import_dom_parser4.default(); | |
const dom = parser.parseFromString(rawHtml); | |
let data = {}; | |
try { | |
const name = rawHtml.match(/<h1>(.*)<\/h1>/)[1]; | |
data.name = name || null; | |
} catch (__) { | |
data.name = null; | |
} | |
try { | |
const created = rawHtml.match( | |
/<div class="timestamp">IMDb member since (.*)<\/div>/ | |
)[1]; | |
data.member_since = created || null; | |
} catch (__) { | |
data.created = null; | |
} | |
try { | |
let image = dom.getElementById("avatar"); | |
const imageSrc = image.getAttribute("src"); | |
if (imageSrc) { | |
data.image = imageSrc.replace("._V1_SY100_SX100_", ""); | |
} else { | |
data.image = null; | |
} | |
} catch (__) { | |
data.image = null; | |
} | |
try { | |
let badges = dom.getElementsByClassName("badges")[0]; | |
let mappedBadges = badges.childNodes.map((node) => { | |
try { | |
return { | |
name: node.getElementsByClassName("name")[0].textContent, | |
value: node.getElementsByClassName("value")[0].textContent | |
}; | |
} catch (__) { | |
} | |
}).filter(Boolean); | |
data.badges = mappedBadges; | |
} catch (_) { | |
data.badges = []; | |
} | |
const result = Object.assign( | |
{ | |
id: userId, | |
imdb: `https://www.imdb.com/user/${userId}`, | |
ratings_api_path: `/user/${userId}/ratings` | |
}, | |
data | |
); | |
return c.json(result); | |
} catch (error) { | |
c.status(errorStatus); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
} | |
// src/routes/user/rating.js | |
var import_dom_parser5 = __toESM(require_dom_parser()); | |
var import_qs = __toESM(require_lib2()); | |
var SORT_OPTIONS = { | |
most_recent: "date_added,desc", | |
oldest: "date_added,asc", | |
top_rated: "your_rating,desc", | |
worst_rated: "your_rating,asc" | |
}; | |
async function userRating(c) { | |
let errorStatus = 500; | |
try { | |
const userId = c.req.param("id"); | |
const sort = SORT_OPTIONS[c.req.query("sort") || ""] || Object.values(SORT_OPTIONS)[0]; | |
const ratingFilter = c.req.query("ratingFilter") || null; | |
const query = import_qs.default.stringify({ | |
sort, | |
ratingFilter: ratingFilter || void 0 | |
}); | |
const constructedUrl = `https://www.imdb.com/user/${userId}/ratings?${query}`; | |
const response = await fetch(constructedUrl, { | |
headers: { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36", | |
accept: "text/html", | |
"accept-language": "en-US" | |
} | |
}); | |
if (!response.ok) { | |
errorStatus = response.status; | |
throw new Error( | |
errorStatus === 404 ? "Seems like user rating is not exixts." : "Error fetching user rating." | |
); | |
} | |
const rawHtml = await response.text(); | |
const parser = new import_dom_parser5.default(); | |
const dom = parser.parseFromString(rawHtml); | |
let total_ratings = 0; | |
let total_filtered_ratings = 0; | |
let all_ratings = []; | |
try { | |
const totalRatings = rawHtml.match(/span> [(]of (\d+)[)] titles/)[1]; | |
total_ratings = parseInt(totalRatings); | |
} catch (_) { | |
} | |
try { | |
const totalFilteredRatings = dom.getElementById( | |
"lister-header-current-size" | |
).textContent; | |
total_filtered_ratings = parseInt(totalFilteredRatings); | |
} catch (_) { | |
} | |
try { | |
const listNode = dom.getElementById("ratings-container"); | |
const lists = listNode.getElementsByClassName("mode-detail").slice(0, 100); | |
for (const node of lists) { | |
const parsed = parseContent(node); | |
if (parsed) | |
all_ratings.push(parsed); | |
} | |
} catch (_) { | |
} | |
const allReviews = await parseReviews(userId); | |
all_ratings = all_ratings.map((rating) => { | |
let review = allReviews.find((review2) => review2.title_id === rating.id); | |
if (review) | |
delete review.title_id; | |
return { | |
...rating, | |
review: review || null | |
}; | |
}); | |
const result = { | |
id: userId, | |
imdb: constructedUrl, | |
user_api_path: `/user/${userId}`, | |
allSortOptions: Object.keys(SORT_OPTIONS), | |
allRatingFilters: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"], | |
total_user_ratings: total_ratings, | |
total_filtered_ratings, | |
ratings: all_ratings | |
}; | |
return c.json(result); | |
} catch (error) { | |
c.status(errorStatus); | |
return c.json({ | |
message: error.message | |
}); | |
} | |
} | |
async function parseReviews(userId) { | |
try { | |
let data = []; | |
const rawHtml = await apiRequestRawHtml( | |
`https://www.imdb.com/user/${userId}/reviews` | |
); | |
const parser = new import_dom_parser5.default(); | |
const dom = parser.parseFromString(rawHtml); | |
const allLists = dom.getElementsByClassName("lister-item"); | |
for (const node of allLists) { | |
try { | |
const id = node.getAttribute("data-review-id"); | |
const imdb = node.getAttribute("data-vote-url"); | |
const titleId = imdb.match(/title\/(.*)\/review/)[1]; | |
const reviewContent = node.getElementsByClassName("show-more__control")[0]; | |
const reviewTitle = node.getElementsByClassName("title")[0]; | |
let review_date = node.getElementsByClassName("review-date")[0].textContent.trim(); | |
review_date = new Date(review_date).toISOString(); | |
data.push({ | |
title_id: titleId, | |
id, | |
date: review_date, | |
heading: reviewTitle.textContent.trim(), | |
content: reviewContent.textContent.trim(), | |
reviewLink: `https://www.imdb.com/review/${id}` | |
}); | |
} catch (_) { | |
console.error(`Reviews error:`, _); | |
} | |
} | |
return data; | |
} catch (error) { | |
console.error(`Reviews error:`, error); | |
return []; | |
} | |
} | |
function parseContent(node) { | |
try { | |
let object = {}; | |
const nodeInnerHtml = node.innerHTML; | |
const titleNode = node.getElementsByClassName("lister-item-header")[0]; | |
const title2 = titleNode.getElementsByTagName("a")[0]; | |
const titleUrl = title2.getAttribute("href"); | |
const titleId = titleUrl.match(/title\/(.*)\//)[1]; | |
object.id = titleId; | |
object.imdb = `https://www.imdb.com/title/${titleId}`; | |
object.api_path = `/title/${titleId}`; | |
object.review_api_path = `/reviews/${titleId}`; | |
object.title = title2.textContent.trim(); | |
const userRatingNode = node.getElementsByClassName( | |
"ipl-rating-star--other-user" | |
)[0]; | |
const userRating2 = userRatingNode.getElementsByClassName( | |
"ipl-rating-star__rating" | |
)[0]; | |
object.userRating = parseInt(userRating2.textContent.trim()); | |
try { | |
const ratedOn = nodeInnerHtml.match(/>Rated on (.*)<[\/]p>/)[1]; | |
object.date = new Date(ratedOn).toISOString(); | |
} catch (error) { | |
object.date = null; | |
} | |
try { | |
const plot = nodeInnerHtml.match(/<p class(?:=""|)>\s(.*)<[\/]p>/)[1]; | |
object.plot = plot.trim(); | |
} catch (error) { | |
object.plot = null; | |
} | |
try { | |
const image = node.getElementsByClassName("loadlate")[0]; | |
object.image = image.getAttribute("loadlate"); | |
object.image_large = object.image.replace(/._.*_/, ""); | |
} catch (error) { | |
object.image = null; | |
object.image_large = null; | |
} | |
try { | |
const genre = node.getElementsByClassName("genre")[0].textContent; | |
object.genre = genre.split(",").map((g) => g.trim()); | |
} catch (_) { | |
object.genre = ["Error"]; | |
} | |
try { | |
const allUserRating = node.getElementsByClassName( | |
"ipl-rating-star__rating" | |
)[0]; | |
let votes = -1; | |
try { | |
votes = node.getElementsByName("nv")[0].getAttribute("data-value"); | |
} catch (__) { | |
} | |
object.rating = { | |
star: parseFloat(allUserRating.textContent.trim()), | |
count: parseInt(votes) | |
}; | |
} catch (error) { | |
object.rating = { | |
count: -1, | |
star: -1 | |
}; | |
} | |
try { | |
object.contentRating = node.getElementsByClassName("certificate")[0].textContent; | |
} catch (_) { | |
object.contentRating = null; | |
} | |
try { | |
object.runtime = node.getElementsByClassName("runtime")[0].textContent; | |
object.runtimeSeconds = parseRuntimeIntoSeconds(object.runtime); | |
} catch (_) { | |
object.runtime = null; | |
object.runtimeSeconds = -1; | |
} | |
return object; | |
} catch (error) { | |
console.log(error); | |
return null; | |
} | |
} | |
function parseRuntimeIntoSeconds(runtime) { | |
try { | |
let seconds = 0; | |
const hrMatch = runtime.match(/(\d+)\shr/); | |
if (hrMatch) { | |
seconds += parseInt(hrMatch[1]) * 60 * 60; | |
} | |
const minMatch = runtime.match(/(\d+)\smin/); | |
if (minMatch) { | |
seconds += parseInt(minMatch[1]) * 60; | |
} | |
return Math.floor(seconds); | |
} catch (error) { | |
return -1; | |
} | |
} | |
// src/routes/user/index.js | |
var userRoutes = new import_hono5.Hono(); | |
userRoutes.get("/:id", userInfo); | |
userRoutes.get("/:id/ratings", userRating); | |
var user_default = userRoutes; | |
// src/index.js | |
var app = new import_hono6.Hono(); | |
app.use("*", (0, import_cors.cors)()); | |
app.use("*", cache); | |
app.route("/search", search_default); | |
app.route("/title", title_default); | |
app.route("/reviews", reviews_default); | |
app.route("/user", user_default); | |
app.route("/", routes_default); | |
app.fire(); | |
})(); | |
//# sourceMappingURL=index.js.map |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment