datasquirel/dist/index.js
2025-01-10 20:16:48 +01:00

42559 lines
1.5 MiB

import { createRequire } from "node:module";
var __create = Object.create;
var __getProtoOf = Object.getPrototypeOf;
var __defProp = Object.defineProperty;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __toESM = (mod, isNodeMode, target) => {
target = mod != null ? __create(__getProtoOf(mod)) : {};
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
for (let key of __getOwnPropNames(mod))
if (!__hasOwnProp.call(to, key))
__defProp(to, key, {
get: () => mod[key],
enumerable: true
});
return to;
};
var __moduleCache = /* @__PURE__ */ new WeakMap;
var __toCommonJS = (from) => {
var entry = __moduleCache.get(from), desc;
if (entry)
return entry;
entry = __defProp({}, "__esModule", { value: true });
if (from && typeof from === "object" || typeof from === "function")
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
}));
__moduleCache.set(from, entry);
return entry;
};
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, {
get: all[name],
enumerable: true,
configurable: true,
set: (newValue) => all[name] = () => newValue
});
};
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
var __require = /* @__PURE__ */ createRequire(import.meta.url);
// package-shared/utils/grab-host-names.ts
import https from "https";
import http from "http";
function grabHostNames() {
const scheme = process.env.DSQL_HTTP_SCHEME;
const localHost = process.env.DSQL_LOCAL_HOST;
const localHostPort = process.env.DSQL_LOCAL_HOST_PORT;
const remoteHost = process.env.DSQL_API_REMOTE_HOST?.match(/.*\..*/) ? process.env.DSQL_API_REMOTE_HOST : undefined;
const remoteHostPort = process.env.DSQL_API_REMOTE_HOST_PORT?.match(/./) ? process.env.DSQL_API_REMOTE_HOST_PORT : undefined;
return {
host: remoteHost || localHost || "datasquirel.com",
port: remoteHostPort || localHostPort || 443,
scheme: scheme?.match(/^http$/i) ? http : https,
user_id: String(process.env.DSQL_API_USER_ID || 0)
};
}
var init_grab_host_names = () => {
};
// node_modules/lodash/lodash.js
var require_lodash = __commonJS((exports, module) => {
(function() {
var undefined2;
var VERSION = "4.17.21";
var LARGE_ARRAY_SIZE = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, NAN = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["bind", WRAP_BIND_FLAG],
["bindKey", WRAP_BIND_KEY_FLAG],
["curry", WRAP_CURRY_FLAG],
["curryRight", WRAP_CURRY_RIGHT_FLAG],
["flip", WRAP_FLIP_FLAG],
["partial", WRAP_PARTIAL_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
var reTrimStart = /^\s+/;
var reWhitespace = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
var reEscapeChar = /\\(\\)?/g;
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
var reFlags = /\w*$/;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsOctal = /^0o[0-7]+$/i;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
rsUpper + "+" + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var contextProps = [
"Array",
"Buffer",
"DataView",
"Date",
"Error",
"Float32Array",
"Float64Array",
"Function",
"Int8Array",
"Int16Array",
"Int32Array",
"Map",
"Math",
"Object",
"Promise",
"RegExp",
"Set",
"String",
"Symbol",
"TypeError",
"Uint8Array",
"Uint8ClampedArray",
"Uint16Array",
"Uint32Array",
"WeakMap",
"_",
"clearTimeout",
"isFinite",
"parseInt",
"setTimeout"
];
var templateCounter = -1;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
var deburredLetters = {
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\xC7": "C",
"\xE7": "c",
"\xD0": "D",
"\xF0": "d",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xD1": "N",
"\xF1": "n",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\xDD": "Y",
"\xFD": "y",
"\xFF": "y",
"\xC6": "Ae",
"\xE6": "ae",
"\xDE": "Th",
"\xFE": "th",
"\xDF": "ss",
"\u0100": "A",
"\u0102": "A",
"\u0104": "A",
"\u0101": "a",
"\u0103": "a",
"\u0105": "a",
"\u0106": "C",
"\u0108": "C",
"\u010A": "C",
"\u010C": "C",
"\u0107": "c",
"\u0109": "c",
"\u010B": "c",
"\u010D": "c",
"\u010E": "D",
"\u0110": "D",
"\u010F": "d",
"\u0111": "d",
"\u0112": "E",
"\u0114": "E",
"\u0116": "E",
"\u0118": "E",
"\u011A": "E",
"\u0113": "e",
"\u0115": "e",
"\u0117": "e",
"\u0119": "e",
"\u011B": "e",
"\u011C": "G",
"\u011E": "G",
"\u0120": "G",
"\u0122": "G",
"\u011D": "g",
"\u011F": "g",
"\u0121": "g",
"\u0123": "g",
"\u0124": "H",
"\u0126": "H",
"\u0125": "h",
"\u0127": "h",
"\u0128": "I",
"\u012A": "I",
"\u012C": "I",
"\u012E": "I",
"\u0130": "I",
"\u0129": "i",
"\u012B": "i",
"\u012D": "i",
"\u012F": "i",
"\u0131": "i",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u0138": "k",
"\u0139": "L",
"\u013B": "L",
"\u013D": "L",
"\u013F": "L",
"\u0141": "L",
"\u013A": "l",
"\u013C": "l",
"\u013E": "l",
"\u0140": "l",
"\u0142": "l",
"\u0143": "N",
"\u0145": "N",
"\u0147": "N",
"\u014A": "N",
"\u0144": "n",
"\u0146": "n",
"\u0148": "n",
"\u014B": "n",
"\u014C": "O",
"\u014E": "O",
"\u0150": "O",
"\u014D": "o",
"\u014F": "o",
"\u0151": "o",
"\u0154": "R",
"\u0156": "R",
"\u0158": "R",
"\u0155": "r",
"\u0157": "r",
"\u0159": "r",
"\u015A": "S",
"\u015C": "S",
"\u015E": "S",
"\u0160": "S",
"\u015B": "s",
"\u015D": "s",
"\u015F": "s",
"\u0161": "s",
"\u0162": "T",
"\u0164": "T",
"\u0166": "T",
"\u0163": "t",
"\u0165": "t",
"\u0167": "t",
"\u0168": "U",
"\u016A": "U",
"\u016C": "U",
"\u016E": "U",
"\u0170": "U",
"\u0172": "U",
"\u0169": "u",
"\u016B": "u",
"\u016D": "u",
"\u016F": "u",
"\u0171": "u",
"\u0173": "u",
"\u0174": "W",
"\u0175": "w",
"\u0176": "Y",
"\u0177": "y",
"\u0178": "Y",
"\u0179": "Z",
"\u017B": "Z",
"\u017D": "Z",
"\u017A": "z",
"\u017C": "z",
"\u017E": "z",
"\u0132": "IJ",
"\u0133": "ij",
"\u0152": "Oe",
"\u0153": "oe",
"\u0149": "'n",
"\u017F": "s"
};
var htmlEscapes = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': "&quot;",
"'": "&#39;"
};
var htmlUnescapes = {
"&amp;": "&",
"&lt;": "<",
"&gt;": ">",
"&quot;": '"',
"&#39;": "'"
};
var stringEscapes = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
};
var freeParseFloat = parseFloat, freeParseInt = parseInt;
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal.process;
var nodeUtil = function() {
try {
var types = freeModule && freeModule.require && freeModule.require("util").types;
if (types) {
return types;
}
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e) {
}
}();
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function arrayAggregator(array, setter, iteratee, accumulator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
var value = array[index];
setter(accumulator, value, iteratee(value), array);
}
return accumulator;
}
function arrayEach(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
function arrayEachRight(array, iteratee) {
var length = array == null ? 0 : array.length;
while (length--) {
if (iteratee(array[length], length, array) === false) {
break;
}
}
return array;
}
function arrayEvery(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (!predicate(array[index], index, array)) {
return false;
}
}
return true;
}
function arrayFilter(array, predicate) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
function arrayIncludes(array, value) {
var length = array == null ? 0 : array.length;
return !!length && baseIndexOf(array, value, 0) > -1;
}
function arrayIncludesWith(array, value, comparator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (comparator(value, array[index])) {
return true;
}
}
return false;
}
function arrayMap(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length, result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
function arrayPush(array, values) {
var index = -1, length = values.length, offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1, length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[++index];
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array);
}
return accumulator;
}
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
var length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[--length];
}
while (length--) {
accumulator = iteratee(accumulator, array[length], length, array);
}
return accumulator;
}
function arraySome(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
var asciiSize = baseProperty("length");
function asciiToArray(string) {
return string.split("");
}
function asciiWords(string) {
return string.match(reAsciiWord) || [];
}
function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection2) {
if (predicate(value, key, collection2)) {
result = key;
return false;
}
});
return result;
}
function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index-- : ++index < length) {
if (predicate(array[index], index, array)) {
return index;
}
}
return -1;
}
function baseIndexOf(array, value, fromIndex) {
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
}
function baseIndexOfWith(array, value, fromIndex, comparator) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (comparator(array[index], value)) {
return index;
}
}
return -1;
}
function baseIsNaN(value) {
return value !== value;
}
function baseMean(array, iteratee) {
var length = array == null ? 0 : array.length;
return length ? baseSum(array, iteratee) / length : NAN;
}
function baseProperty(key) {
return function(object) {
return object == null ? undefined2 : object[key];
};
}
function basePropertyOf(object) {
return function(key) {
return object == null ? undefined2 : object[key];
};
}
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
eachFunc(collection, function(value, index, collection2) {
accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);
});
return accumulator;
}
function baseSortBy(array, comparer) {
var length = array.length;
array.sort(comparer);
while (length--) {
array[length] = array[length].value;
}
return array;
}
function baseSum(array, iteratee) {
var result, index = -1, length = array.length;
while (++index < length) {
var current = iteratee(array[index]);
if (current !== undefined2) {
result = result === undefined2 ? current : result + current;
}
}
return result;
}
function baseTimes(n, iteratee) {
var index = -1, result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
function baseToPairs(object, props) {
return arrayMap(props, function(key) {
return [key, object[key]];
});
}
function baseTrim(string) {
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
function baseValues(object, props) {
return arrayMap(props, function(key) {
return object[key];
});
}
function cacheHas(cache, key) {
return cache.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
var index = -1, length = strSymbols.length;
while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function charsEndIndex(strSymbols, chrSymbols) {
var index = strSymbols.length;
while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function countHolders(array, placeholder) {
var length = array.length, result = 0;
while (length--) {
if (array[length] === placeholder) {
++result;
}
}
return result;
}
var deburrLetter = basePropertyOf(deburredLetters);
var escapeHtmlChar = basePropertyOf(htmlEscapes);
function escapeStringChar(chr) {
return "\\" + stringEscapes[chr];
}
function getValue(object, key) {
return object == null ? undefined2 : object[key];
}
function hasUnicode(string) {
return reHasUnicode.test(string);
}
function hasUnicodeWord(string) {
return reHasUnicodeWord.test(string);
}
function iteratorToArray(iterator) {
var data, result = [];
while (!(data = iterator.next()).done) {
result.push(data.value);
}
return result;
}
function mapToArray(map) {
var index = -1, result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
function replaceHolders(array, placeholder) {
var index = -1, length = array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (value === placeholder || value === PLACEHOLDER) {
array[index] = PLACEHOLDER;
result[resIndex++] = index;
}
}
return result;
}
function setToArray(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
function setToPairs(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = [value, value];
});
return result;
}
function strictIndexOf(array, value, fromIndex) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
function strictLastIndexOf(array, value, fromIndex) {
var index = fromIndex + 1;
while (index--) {
if (array[index] === value) {
return index;
}
}
return index;
}
function stringSize(string) {
return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
}
function stringToArray(string) {
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
}
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {
}
return index;
}
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
function unicodeSize(string) {
var result = reUnicode.lastIndex = 0;
while (reUnicode.test(string)) {
++result;
}
return result;
}
function unicodeToArray(string) {
return string.match(reUnicode) || [];
}
function unicodeWords(string) {
return string.match(reUnicodeWord) || [];
}
var runInContext = function runInContext(context) {
context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
var { Array: Array2, Date: Date2, Error: Error2, Function: Function2, Math: Math2, Object: Object2, RegExp: RegExp2, String: String2, TypeError: TypeError2 } = context;
var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
var coreJsData = context["__core-js_shared__"];
var funcToString = funcProto.toString;
var hasOwnProperty = objectProto.hasOwnProperty;
var idCounter = 0;
var maskSrcKey = function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
var nativeObjectToString = objectProto.toString;
var objectCtorString = funcToString.call(Object2);
var oldDash = root._;
var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
var defineProperty = function() {
try {
var func = getNative(Object2, "defineProperty");
func({}, "", {});
return func;
} catch (e) {
}
}();
var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
var { ceil: nativeCeil, floor: nativeFloor } = Math2, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
var metaMap = WeakMap2 && new WeakMap2;
var realNames = {};
var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2;
function lodash(value) {
if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
if (value instanceof LodashWrapper) {
return value;
}
if (hasOwnProperty.call(value, "__wrapped__")) {
return wrapperClone(value);
}
}
return new LodashWrapper(value);
}
var baseCreate = function() {
function object() {
}
return function(proto) {
if (!isObject(proto)) {
return {};
}
if (objectCreate) {
return objectCreate(proto);
}
object.prototype = proto;
var result2 = new object;
object.prototype = undefined2;
return result2;
};
}();
function baseLodash() {
}
function LodashWrapper(value, chainAll) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__chain__ = !!chainAll;
this.__index__ = 0;
this.__values__ = undefined2;
}
lodash.templateSettings = {
escape: reEscape,
evaluate: reEvaluate,
interpolate: reInterpolate,
variable: "",
imports: {
_: lodash
}
};
lodash.prototype = baseLodash.prototype;
lodash.prototype.constructor = lodash;
LodashWrapper.prototype = baseCreate(baseLodash.prototype);
LodashWrapper.prototype.constructor = LodashWrapper;
function LazyWrapper(value) {
this.__wrapped__ = value;
this.__actions__ = [];
this.__dir__ = 1;
this.__filtered__ = false;
this.__iteratees__ = [];
this.__takeCount__ = MAX_ARRAY_LENGTH;
this.__views__ = [];
}
function lazyClone() {
var result2 = new LazyWrapper(this.__wrapped__);
result2.__actions__ = copyArray(this.__actions__);
result2.__dir__ = this.__dir__;
result2.__filtered__ = this.__filtered__;
result2.__iteratees__ = copyArray(this.__iteratees__);
result2.__takeCount__ = this.__takeCount__;
result2.__views__ = copyArray(this.__views__);
return result2;
}
function lazyReverse() {
if (this.__filtered__) {
var result2 = new LazyWrapper(this);
result2.__dir__ = -1;
result2.__filtered__ = true;
} else {
result2 = this.clone();
result2.__dir__ *= -1;
}
return result2;
}
function lazyValue() {
var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
if (!isArr || !isRight && arrLength == length && takeCount == length) {
return baseWrapperValue(array, this.__actions__);
}
var result2 = [];
outer:
while (length-- && resIndex < takeCount) {
index += dir;
var iterIndex = -1, value = array[index];
while (++iterIndex < iterLength) {
var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value);
if (type == LAZY_MAP_FLAG) {
value = computed;
} else if (!computed) {
if (type == LAZY_FILTER_FLAG) {
continue outer;
} else {
break outer;
}
}
}
result2[resIndex++] = value;
}
return result2;
}
LazyWrapper.prototype = baseCreate(baseLodash.prototype);
LazyWrapper.prototype.constructor = LazyWrapper;
function Hash(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
this.size = 0;
}
function hashDelete(key) {
var result2 = this.has(key) && delete this.__data__[key];
this.size -= result2 ? 1 : 0;
return result2;
}
function hashGet(key) {
var data = this.__data__;
if (nativeCreate) {
var result2 = data[key];
return result2 === HASH_UNDEFINED ? undefined2 : result2;
}
return hasOwnProperty.call(data, key) ? data[key] : undefined2;
}
function hashHas(key) {
var data = this.__data__;
return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key);
}
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value;
return this;
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function ListCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
function listCacheDelete(key) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
--this.size;
return true;
}
function listCacheGet(key) {
var data = this.__data__, index = assocIndexOf(data, key);
return index < 0 ? undefined2 : data[index][1];
}
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet(key, value) {
var data = this.__data__, index = assocIndexOf(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
function MapCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
function mapCacheClear() {
this.size = 0;
this.__data__ = {
hash: new Hash,
map: new (Map2 || ListCache),
string: new Hash
};
}
function mapCacheDelete(key) {
var result2 = getMapData(this, key)["delete"](key);
this.size -= result2 ? 1 : 0;
return result2;
}
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
var data = getMapData(this, key), size2 = data.size;
data.set(key, value);
this.size += data.size == size2 ? 0 : 1;
return this;
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
function SetCache(values2) {
var index = -1, length = values2 == null ? 0 : values2.length;
this.__data__ = new MapCache;
while (++index < length) {
this.add(values2[index]);
}
}
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
function setCacheHas(value) {
return this.__data__.has(value);
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function Stack(entries) {
var data = this.__data__ = new ListCache(entries);
this.size = data.size;
}
function stackClear() {
this.__data__ = new ListCache;
this.size = 0;
}
function stackDelete(key) {
var data = this.__data__, result2 = data["delete"](key);
this.size = data.size;
return result2;
}
function stackGet(key) {
return this.__data__.get(key);
}
function stackHas(key) {
return this.__data__.has(key);
}
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof ListCache) {
var pairs = data.__data__;
if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function arrayLikeKeys(value, inherited) {
var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
result2.push(key);
}
}
return result2;
}
function arraySample(array) {
var length = array.length;
return length ? array[baseRandom(0, length - 1)] : undefined2;
}
function arraySampleSize(array, n) {
return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
}
function arrayShuffle(array) {
return shuffleSelf(copyArray(array));
}
function assignMergeValue(object, key, value) {
if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}
function baseAggregator(collection, setter, iteratee2, accumulator) {
baseEach(collection, function(value, key, collection2) {
setter(accumulator, value, iteratee2(value), collection2);
});
return accumulator;
}
function baseAssign(object, source) {
return object && copyObject(source, keys(source), object);
}
function baseAssignIn(object, source) {
return object && copyObject(source, keysIn(source), object);
}
function baseAssignValue(object, key, value) {
if (key == "__proto__" && defineProperty) {
defineProperty(object, key, {
configurable: true,
enumerable: true,
value,
writable: true
});
} else {
object[key] = value;
}
}
function baseAt(object, paths) {
var index = -1, length = paths.length, result2 = Array2(length), skip = object == null;
while (++index < length) {
result2[index] = skip ? undefined2 : get(object, paths[index]);
}
return result2;
}
function baseClamp(number, lower, upper) {
if (number === number) {
if (upper !== undefined2) {
number = number <= upper ? number : upper;
}
if (lower !== undefined2) {
number = number >= lower ? number : lower;
}
}
return number;
}
function baseClone(value, bitmask, customizer, key, object, stack) {
var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
if (customizer) {
result2 = object ? customizer(value, key, object, stack) : customizer(value);
}
if (result2 !== undefined2) {
return result2;
}
if (!isObject(value)) {
return value;
}
var isArr = isArray(value);
if (isArr) {
result2 = initCloneArray(value);
if (!isDeep) {
return copyArray(value, result2);
}
} else {
var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
if (isBuffer(value)) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag || tag == argsTag || isFunc && !object) {
result2 = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
}
} else {
if (!cloneableTags[tag]) {
return object ? value : {};
}
result2 = initCloneByTag(value, tag, isDeep);
}
}
stack || (stack = new Stack);
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result2);
if (isSet(value)) {
value.forEach(function(subValue) {
result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap(value)) {
value.forEach(function(subValue, key2) {
result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
var props = isArr ? undefined2 : keysFunc(value);
arrayEach(props || value, function(subValue, key2) {
if (props) {
key2 = subValue;
subValue = value[key2];
}
assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
return result2;
}
function baseConforms(source) {
var props = keys(source);
return function(object) {
return baseConformsTo(object, source, props);
};
}
function baseConformsTo(object, source, props) {
var length = props.length;
if (object == null) {
return !length;
}
object = Object2(object);
while (length--) {
var key = props[length], predicate = source[key], value = object[key];
if (value === undefined2 && !(key in object) || !predicate(value)) {
return false;
}
}
return true;
}
function baseDelay(func, wait, args) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return setTimeout2(function() {
func.apply(undefined2, args);
}, wait);
}
function baseDifference(array, values2, iteratee2, comparator) {
var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length;
if (!length) {
return result2;
}
if (iteratee2) {
values2 = arrayMap(values2, baseUnary(iteratee2));
}
if (comparator) {
includes2 = arrayIncludesWith;
isCommon = false;
} else if (values2.length >= LARGE_ARRAY_SIZE) {
includes2 = cacheHas;
isCommon = false;
values2 = new SetCache(values2);
}
outer:
while (++index < length) {
var value = array[index], computed = iteratee2 == null ? value : iteratee2(value);
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var valuesIndex = valuesLength;
while (valuesIndex--) {
if (values2[valuesIndex] === computed) {
continue outer;
}
}
result2.push(value);
} else if (!includes2(values2, computed, comparator)) {
result2.push(value);
}
}
return result2;
}
var baseEach = createBaseEach(baseForOwn);
var baseEachRight = createBaseEach(baseForOwnRight, true);
function baseEvery(collection, predicate) {
var result2 = true;
baseEach(collection, function(value, index, collection2) {
result2 = !!predicate(value, index, collection2);
return result2;
});
return result2;
}
function baseExtremum(array, iteratee2, comparator) {
var index = -1, length = array.length;
while (++index < length) {
var value = array[index], current = iteratee2(value);
if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) {
var computed = current, result2 = value;
}
}
return result2;
}
function baseFill(array, value, start, end) {
var length = array.length;
start = toInteger(start);
if (start < 0) {
start = -start > length ? 0 : length + start;
}
end = end === undefined2 || end > length ? length : toInteger(end);
if (end < 0) {
end += length;
}
end = start > end ? 0 : toLength(end);
while (start < end) {
array[start++] = value;
}
return array;
}
function baseFilter(collection, predicate) {
var result2 = [];
baseEach(collection, function(value, index, collection2) {
if (predicate(value, index, collection2)) {
result2.push(value);
}
});
return result2;
}
function baseFlatten(array, depth, predicate, isStrict, result2) {
var index = -1, length = array.length;
predicate || (predicate = isFlattenable);
result2 || (result2 = []);
while (++index < length) {
var value = array[index];
if (depth > 0 && predicate(value)) {
if (depth > 1) {
baseFlatten(value, depth - 1, predicate, isStrict, result2);
} else {
arrayPush(result2, value);
}
} else if (!isStrict) {
result2[result2.length] = value;
}
}
return result2;
}
var baseFor = createBaseFor();
var baseForRight = createBaseFor(true);
function baseForOwn(object, iteratee2) {
return object && baseFor(object, iteratee2, keys);
}
function baseForOwnRight(object, iteratee2) {
return object && baseForRight(object, iteratee2, keys);
}
function baseFunctions(object, props) {
return arrayFilter(props, function(key) {
return isFunction(object[key]);
});
}
function baseGet(object, path) {
path = castPath(path, object);
var index = 0, length = path.length;
while (object != null && index < length) {
object = object[toKey(path[index++])];
}
return index && index == length ? object : undefined2;
}
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result2 = keysFunc(object);
return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object));
}
function baseGetTag(value) {
if (value == null) {
return value === undefined2 ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);
}
function baseGt(value, other) {
return value > other;
}
function baseHas(object, key) {
return object != null && hasOwnProperty.call(object, key);
}
function baseHasIn(object, key) {
return object != null && key in Object2(object);
}
function baseInRange(number, start, end) {
return number >= nativeMin(start, end) && number < nativeMax(start, end);
}
function baseIntersection(arrays, iteratee2, comparator) {
var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
while (othIndex--) {
var array = arrays[othIndex];
if (othIndex && iteratee2) {
array = arrayMap(array, baseUnary(iteratee2));
}
maxLength = nativeMin(array.length, maxLength);
caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2;
}
array = arrays[0];
var index = -1, seen = caches[0];
outer:
while (++index < length && result2.length < maxLength) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
var cache = caches[othIndex];
if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
if (seen) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseInverter(object, setter, iteratee2, accumulator) {
baseForOwn(object, function(value, key, object2) {
setter(accumulator, iteratee2(value), key, object2);
});
return accumulator;
}
function baseInvoke(object, path, args) {
path = castPath(path, object);
object = parent(object, path);
var func = object == null ? object : object[toKey(last(path))];
return func == null ? undefined2 : apply(func, object, args);
}
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag;
}
function baseIsArrayBuffer(value) {
return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
}
function baseIsDate(value) {
return isObjectLike(value) && baseGetTag(value) == dateTag;
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
if (isSameTag && isBuffer(object)) {
if (!isBuffer(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack);
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack);
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack);
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsMap(value) {
return isObjectLike(value) && getTag(value) == mapTag;
}
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length, length = index, noCustomizer = !customizer;
if (object == null) {
return !length;
}
object = Object2(object);
while (index--) {
var data = matchData[index];
if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
return false;
}
}
while (++index < length) {
data = matchData[index];
var key = data[0], objValue = object[key], srcValue = data[1];
if (noCustomizer && data[2]) {
if (objValue === undefined2 && !(key in object)) {
return false;
}
} else {
var stack = new Stack;
if (customizer) {
var result2 = customizer(objValue, srcValue, key, object, source, stack);
}
if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
return false;
}
}
}
return true;
}
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
function baseIsRegExp(value) {
return isObjectLike(value) && baseGetTag(value) == regexpTag;
}
function baseIsSet(value) {
return isObjectLike(value) && getTag(value) == setTag;
}
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseIteratee(value) {
if (typeof value == "function") {
return value;
}
if (value == null) {
return identity;
}
if (typeof value == "object") {
return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
}
return property(value);
}
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result2 = [];
for (var key in Object2(object)) {
if (hasOwnProperty.call(object, key) && key != "constructor") {
result2.push(key);
}
}
return result2;
}
function baseKeysIn(object) {
if (!isObject(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object), result2 = [];
for (var key in object) {
if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
result2.push(key);
}
}
return result2;
}
function baseLt(value, other) {
return value < other;
}
function baseMap(collection, iteratee2) {
var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value, key, collection2) {
result2[++index] = iteratee2(value, key, collection2);
});
return result2;
}
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
};
}
function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
return function(object) {
var objValue = get(object, path);
return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
function baseMerge(object, source, srcIndex, customizer, stack) {
if (object === source) {
return;
}
baseFor(source, function(srcValue, key) {
stack || (stack = new Stack);
if (isObject(srcValue)) {
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} else {
var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2;
if (newValue === undefined2) {
newValue = srcValue;
}
assignMergeValue(object, key, newValue);
}
}, keysIn);
}
function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
if (stacked) {
assignMergeValue(object, key, stacked);
return;
}
var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2;
var isCommon = newValue === undefined2;
if (isCommon) {
var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray(objValue)) {
newValue = objValue;
} else if (isArrayLikeObject(objValue)) {
newValue = copyArray(objValue);
} else if (isBuff) {
isCommon = false;
newValue = cloneBuffer(srcValue, true);
} else if (isTyped) {
isCommon = false;
newValue = cloneTypedArray(srcValue, true);
} else {
newValue = [];
}
} else if (isPlainObject(srcValue) || isArguments(srcValue)) {
newValue = objValue;
if (isArguments(objValue)) {
newValue = toPlainObject(objValue);
} else if (!isObject(objValue) || isFunction(objValue)) {
newValue = initCloneObject(srcValue);
}
} else {
isCommon = false;
}
}
if (isCommon) {
stack.set(srcValue, newValue);
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
stack["delete"](srcValue);
}
assignMergeValue(object, key, newValue);
}
function baseNth(array, n) {
var length = array.length;
if (!length) {
return;
}
n += n < 0 ? length : 0;
return isIndex(n, length) ? array[n] : undefined2;
}
function baseOrderBy(collection, iteratees, orders) {
if (iteratees.length) {
iteratees = arrayMap(iteratees, function(iteratee2) {
if (isArray(iteratee2)) {
return function(value) {
return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
};
}
return iteratee2;
});
} else {
iteratees = [identity];
}
var index = -1;
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
var result2 = baseMap(collection, function(value, key, collection2) {
var criteria = arrayMap(iteratees, function(iteratee2) {
return iteratee2(value);
});
return { criteria, index: ++index, value };
});
return baseSortBy(result2, function(object, other) {
return compareMultiple(object, other, orders);
});
}
function basePick(object, paths) {
return basePickBy(object, paths, function(value, path) {
return hasIn(object, path);
});
}
function basePickBy(object, paths, predicate) {
var index = -1, length = paths.length, result2 = {};
while (++index < length) {
var path = paths[index], value = baseGet(object, path);
if (predicate(value, path)) {
baseSet(result2, castPath(path, object), value);
}
}
return result2;
}
function basePropertyDeep(path) {
return function(object) {
return baseGet(object, path);
};
}
function basePullAll(array, values2, iteratee2, comparator) {
var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array;
if (array === values2) {
values2 = copyArray(values2);
}
if (iteratee2) {
seen = arrayMap(array, baseUnary(iteratee2));
}
while (++index < length) {
var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;
while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {
if (seen !== array) {
splice.call(seen, fromIndex, 1);
}
splice.call(array, fromIndex, 1);
}
}
return array;
}
function basePullAt(array, indexes) {
var length = array ? indexes.length : 0, lastIndex = length - 1;
while (length--) {
var index = indexes[length];
if (length == lastIndex || index !== previous) {
var previous = index;
if (isIndex(index)) {
splice.call(array, index, 1);
} else {
baseUnset(array, index);
}
}
}
return array;
}
function baseRandom(lower, upper) {
return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
}
function baseRange(start, end, step, fromRight) {
var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length);
while (length--) {
result2[fromRight ? length : ++index] = start;
start += step;
}
return result2;
}
function baseRepeat(string, n) {
var result2 = "";
if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
return result2;
}
do {
if (n % 2) {
result2 += string;
}
n = nativeFloor(n / 2);
if (n) {
string += string;
}
} while (n);
return result2;
}
function baseRest(func, start) {
return setToString(overRest(func, start, identity), func + "");
}
function baseSample(collection) {
return arraySample(values(collection));
}
function baseSampleSize(collection, n) {
var array = values(collection);
return shuffleSelf(array, baseClamp(n, 0, array.length));
}
function baseSet(object, path, value, customizer) {
if (!isObject(object)) {
return object;
}
path = castPath(path, object);
var index = -1, length = path.length, lastIndex = length - 1, nested = object;
while (nested != null && ++index < length) {
var key = toKey(path[index]), newValue = value;
if (key === "__proto__" || key === "constructor" || key === "prototype") {
return object;
}
if (index != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined2;
if (newValue === undefined2) {
newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
}
var baseSetData = !metaMap ? identity : function(func, data) {
metaMap.set(func, data);
return func;
};
var baseSetToString = !defineProperty ? identity : function(func, string) {
return defineProperty(func, "toString", {
configurable: true,
enumerable: false,
value: constant(string),
writable: true
});
};
function baseShuffle(collection) {
return shuffleSelf(values(collection));
}
function baseSlice(array, start, end) {
var index = -1, length = array.length;
if (start < 0) {
start = -start > length ? 0 : length + start;
}
end = end > length ? length : end;
if (end < 0) {
end += length;
}
length = start > end ? 0 : end - start >>> 0;
start >>>= 0;
var result2 = Array2(length);
while (++index < length) {
result2[index] = array[index + start];
}
return result2;
}
function baseSome(collection, predicate) {
var result2;
baseEach(collection, function(value, index, collection2) {
result2 = predicate(value, index, collection2);
return !result2;
});
return !!result2;
}
function baseSortedIndex(array, value, retHighest) {
var low = 0, high = array == null ? low : array.length;
if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
while (low < high) {
var mid = low + high >>> 1, computed = array[mid];
if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
low = mid + 1;
} else {
high = mid;
}
}
return high;
}
return baseSortedIndexBy(array, value, identity, retHighest);
}
function baseSortedIndexBy(array, value, iteratee2, retHighest) {
var low = 0, high = array == null ? 0 : array.length;
if (high === 0) {
return 0;
}
value = iteratee2(value);
var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2;
while (low < high) {
var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
if (valIsNaN) {
var setLow = retHighest || othIsReflexive;
} else if (valIsUndefined) {
setLow = othIsReflexive && (retHighest || othIsDefined);
} else if (valIsNull) {
setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
} else if (valIsSymbol) {
setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
} else if (othIsNull || othIsSymbol) {
setLow = false;
} else {
setLow = retHighest ? computed <= value : computed < value;
}
if (setLow) {
low = mid + 1;
} else {
high = mid;
}
}
return nativeMin(high, MAX_ARRAY_INDEX);
}
function baseSortedUniq(array, iteratee2) {
var index = -1, length = array.length, resIndex = 0, result2 = [];
while (++index < length) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
if (!index || !eq(computed, seen)) {
var seen = computed;
result2[resIndex++] = value === 0 ? 0 : value;
}
}
return result2;
}
function baseToNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
return +value;
}
function baseToString(value) {
if (typeof value == "string") {
return value;
}
if (isArray(value)) {
return arrayMap(value, baseToString) + "";
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : "";
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function baseUniq(array, iteratee2, comparator) {
var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2;
if (comparator) {
isCommon = false;
includes2 = arrayIncludesWith;
} else if (length >= LARGE_ARRAY_SIZE) {
var set2 = iteratee2 ? null : createSet(array);
if (set2) {
return setToArray(set2);
}
isCommon = false;
includes2 = cacheHas;
seen = new SetCache;
} else {
seen = iteratee2 ? [] : result2;
}
outer:
while (++index < length) {
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed === computed) {
var seenIndex = seen.length;
while (seenIndex--) {
if (seen[seenIndex] === computed) {
continue outer;
}
}
if (iteratee2) {
seen.push(computed);
}
result2.push(value);
} else if (!includes2(seen, computed, comparator)) {
if (seen !== result2) {
seen.push(computed);
}
result2.push(value);
}
}
return result2;
}
function baseUnset(object, path) {
path = castPath(path, object);
object = parent(object, path);
return object == null || delete object[toKey(last(path))];
}
function baseUpdate(object, path, updater, customizer) {
return baseSet(object, path, updater(baseGet(object, path)), customizer);
}
function baseWhile(array, predicate, isDrop, fromRight) {
var length = array.length, index = fromRight ? length : -1;
while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {
}
return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
}
function baseWrapperValue(value, actions) {
var result2 = value;
if (result2 instanceof LazyWrapper) {
result2 = result2.value();
}
return arrayReduce(actions, function(result3, action) {
return action.func.apply(action.thisArg, arrayPush([result3], action.args));
}, result2);
}
function baseXor(arrays, iteratee2, comparator) {
var length = arrays.length;
if (length < 2) {
return length ? baseUniq(arrays[0]) : [];
}
var index = -1, result2 = Array2(length);
while (++index < length) {
var array = arrays[index], othIndex = -1;
while (++othIndex < length) {
if (othIndex != index) {
result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator);
}
}
}
return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);
}
function baseZipObject(props, values2, assignFunc) {
var index = -1, length = props.length, valsLength = values2.length, result2 = {};
while (++index < length) {
var value = index < valsLength ? values2[index] : undefined2;
assignFunc(result2, props[index], value);
}
return result2;
}
function castArrayLikeObject(value) {
return isArrayLikeObject(value) ? value : [];
}
function castFunction(value) {
return typeof value == "function" ? value : identity;
}
function castPath(value, object) {
if (isArray(value)) {
return value;
}
return isKey(value, object) ? [value] : stringToPath(toString(value));
}
var castRest = baseRest;
function castSlice(array, start, end) {
var length = array.length;
end = end === undefined2 ? length : end;
return !start && end >= length ? array : baseSlice(array, start, end);
}
var clearTimeout2 = ctxClearTimeout || function(id) {
return root.clearTimeout(id);
};
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
buffer.copy(result2);
return result2;
}
function cloneArrayBuffer(arrayBuffer) {
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
return result2;
}
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
function cloneRegExp(regexp) {
var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
result2.lastIndex = regexp.lastIndex;
return result2;
}
function cloneSymbol(symbol) {
return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
}
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
function compareAscending(value, other) {
if (value !== other) {
var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
return 1;
}
if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
return -1;
}
}
return 0;
}
function compareMultiple(object, other, orders) {
var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
while (++index < length) {
var result2 = compareAscending(objCriteria[index], othCriteria[index]);
if (result2) {
if (index >= ordersLength) {
return result2;
}
var order = orders[index];
return result2 * (order == "desc" ? -1 : 1);
}
}
return object.index - other.index;
}
function composeArgs(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
while (++leftIndex < leftLength) {
result2[leftIndex] = partials[leftIndex];
}
while (++argsIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[holders[argsIndex]] = args[argsIndex];
}
}
while (rangeLength--) {
result2[leftIndex++] = args[argsIndex++];
}
return result2;
}
function composeArgsRight(args, partials, holders, isCurried) {
var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
while (++argsIndex < rangeLength) {
result2[argsIndex] = args[argsIndex];
}
var offset = argsIndex;
while (++rightIndex < rightLength) {
result2[offset + rightIndex] = partials[rightIndex];
}
while (++holdersIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[offset + holders[holdersIndex]] = args[argsIndex++];
}
}
return result2;
}
function copyArray(source, array) {
var index = -1, length = source.length;
array || (array = Array2(length));
while (++index < length) {
array[index] = source[index];
}
return array;
}
function copyObject(source, props, object, customizer) {
var isNew = !object;
object || (object = {});
var index = -1, length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2;
if (newValue === undefined2) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object, key, newValue);
} else {
assignValue(object, key, newValue);
}
}
return object;
}
function copySymbols(source, object) {
return copyObject(source, getSymbols(source), object);
}
function copySymbolsIn(source, object) {
return copyObject(source, getSymbolsIn(source), object);
}
function createAggregator(setter, initializer) {
return function(collection, iteratee2) {
var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
};
}
function createAssigner(assigner) {
return baseRest(function(object, sources) {
var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2;
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? undefined2 : customizer;
length = 1;
}
object = Object2(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee2) {
if (collection == null) {
return collection;
}
if (!isArrayLike(collection)) {
return eachFunc(collection, iteratee2);
}
var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);
while (fromRight ? index-- : ++index < length) {
if (iteratee2(iterable[index], index, iterable) === false) {
break;
}
}
return collection;
};
}
function createBaseFor(fromRight) {
return function(object, iteratee2, keysFunc) {
var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee2(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
function createBind(func, bitmask, thisArg) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return fn.apply(isBind ? thisArg : this, arguments);
}
return wrapper;
}
function createCaseFirst(methodName) {
return function(string) {
string = toString(string);
var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2;
var chr = strSymbols ? strSymbols[0] : string.charAt(0);
var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
return chr[methodName]() + trailing;
};
}
function createCompounder(callback) {
return function(string) {
return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
};
}
function createCtor(Ctor) {
return function() {
var args = arguments;
switch (args.length) {
case 0:
return new Ctor;
case 1:
return new Ctor(args[0]);
case 2:
return new Ctor(args[0], args[1]);
case 3:
return new Ctor(args[0], args[1], args[2]);
case 4:
return new Ctor(args[0], args[1], args[2], args[3]);
case 5:
return new Ctor(args[0], args[1], args[2], args[3], args[4]);
case 6:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
case 7:
return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
}
var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
return isObject(result2) ? result2 : thisBinding;
};
}
function createCurry(func, bitmask, arity) {
var Ctor = createCtor(func);
function wrapper() {
var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper);
while (index--) {
args[index] = arguments[index];
}
var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
length -= holders.length;
if (length < arity) {
return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined2, args, holders, undefined2, undefined2, arity - length);
}
var fn = this && this !== root && this instanceof wrapper ? Ctor : func;
return apply(fn, this, args);
}
return wrapper;
}
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object2(collection);
if (!isArrayLike(collection)) {
var iteratee2 = getIteratee(predicate, 3);
collection = keys(collection);
predicate = function(key) {
return iteratee2(iterable[key], key, iterable);
};
}
var index = findIndexFunc(collection, predicate, fromIndex);
return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2;
};
}
function createFlow(fromRight) {
return flatRest(function(funcs) {
var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;
if (fromRight) {
funcs.reverse();
}
while (index--) {
var func = funcs[index];
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (prereq && !wrapper && getFuncName(func) == "wrapper") {
var wrapper = new LodashWrapper([], true);
}
}
index = wrapper ? index : length;
while (++index < length) {
func = funcs[index];
var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2;
if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
} else {
wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
}
}
return function() {
var args = arguments, value = args[0];
if (wrapper && args.length == 1 && isArray(value)) {
return wrapper.plant(value).value();
}
var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value;
while (++index2 < length) {
result2 = funcs[index2].call(this, result2);
}
return result2;
};
});
}
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func);
function wrapper() {
var length = arguments.length, args = Array2(length), index = length;
while (index--) {
args[index] = arguments[index];
}
if (isCurried) {
var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
}
if (partials) {
args = composeArgs(args, partials, holders, isCurried);
}
if (partialsRight) {
args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
}
length -= holdersCount;
if (isCurried && length < arity) {
var newHolders = replaceHolders(args, placeholder);
return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary2, arity - length);
}
var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
length = args.length;
if (argPos) {
args = reorder(args, argPos);
} else if (isFlip && length > 1) {
args.reverse();
}
if (isAry && ary2 < length) {
args.length = ary2;
}
if (this && this !== root && this instanceof wrapper) {
fn = Ctor || createCtor(fn);
}
return fn.apply(thisBinding, args);
}
return wrapper;
}
function createInverter(setter, toIteratee) {
return function(object, iteratee2) {
return baseInverter(object, setter, toIteratee(iteratee2), {});
};
}
function createMathOperation(operator, defaultValue) {
return function(value, other) {
var result2;
if (value === undefined2 && other === undefined2) {
return defaultValue;
}
if (value !== undefined2) {
result2 = value;
}
if (other !== undefined2) {
if (result2 === undefined2) {
return other;
}
if (typeof value == "string" || typeof other == "string") {
value = baseToString(value);
other = baseToString(other);
} else {
value = baseToNumber(value);
other = baseToNumber(other);
}
result2 = operator(value, other);
}
return result2;
};
}
function createOver(arrayFunc) {
return flatRest(function(iteratees) {
iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
return baseRest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee2) {
return apply(iteratee2, thisArg, args);
});
});
});
}
function createPadding(length, chars) {
chars = chars === undefined2 ? " " : baseToString(chars);
var charsLength = chars.length;
if (charsLength < 2) {
return charsLength ? baseRepeat(chars, length) : chars;
}
var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length);
}
function createPartial(func, bitmask, thisArg, partials) {
var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
function wrapper() {
var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;
while (++leftIndex < leftLength) {
args[leftIndex] = partials[leftIndex];
}
while (argsLength--) {
args[leftIndex++] = arguments[++argsIndex];
}
return apply(fn, isBind ? thisArg : this, args);
}
return wrapper;
}
function createRange(fromRight) {
return function(start, end, step) {
if (step && typeof step != "number" && isIterateeCall(start, end, step)) {
end = step = undefined2;
}
start = toFinite(start);
if (end === undefined2) {
end = start;
start = 0;
} else {
end = toFinite(end);
}
step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step);
return baseRange(start, end, step, fromRight);
};
}
function createRelationalOperation(operator) {
return function(value, other) {
if (!(typeof value == "string" && typeof other == "string")) {
value = toNumber(value);
other = toNumber(other);
}
return operator(value, other);
};
}
function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials;
bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
}
var newData = [
func,
bitmask,
thisArg,
newPartials,
newHolders,
newPartialsRight,
newHoldersRight,
argPos,
ary2,
arity
];
var result2 = wrapFunc.apply(undefined2, newData);
if (isLaziable(func)) {
setData(result2, newData);
}
result2.placeholder = placeholder;
return setWrapToString(result2, func, bitmask);
}
function createRound(methodName) {
var func = Math2[methodName];
return function(number, precision) {
number = toNumber(number);
precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
if (precision && nativeIsFinite(number)) {
var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
pair = (toString(value) + "e").split("e");
return +(pair[0] + "e" + (+pair[1] - precision));
}
return func(number);
};
}
var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values2) {
return new Set2(values2);
};
function createToPairs(keysFunc) {
return function(object) {
var tag = getTag(object);
if (tag == mapTag) {
return mapToArray(object);
}
if (tag == setTag) {
return setToPairs(object);
}
return baseToPairs(object, keysFunc(object));
};
}
function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
if (!isBindKey && typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var length = partials ? partials.length : 0;
if (!length) {
bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
partials = holders = undefined2;
}
ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0);
arity = arity === undefined2 ? arity : toInteger(arity);
length -= holders ? holders.length : 0;
if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
var partialsRight = partials, holdersRight = holders;
partials = holders = undefined2;
}
var data = isBindKey ? undefined2 : getData(func);
var newData = [
func,
bitmask,
thisArg,
partials,
holders,
partialsRight,
holdersRight,
argPos,
ary2,
arity
];
if (data) {
mergeData(newData, data);
}
func = newData[0];
bitmask = newData[1];
thisArg = newData[2];
partials = newData[3];
holders = newData[4];
arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
}
if (!bitmask || bitmask == WRAP_BIND_FLAG) {
var result2 = createBind(func, bitmask, thisArg);
} else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
result2 = createCurry(func, bitmask, arity);
} else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
result2 = createPartial(func, bitmask, thisArg, partials);
} else {
result2 = createHybrid.apply(undefined2, newData);
}
var setter = data ? baseSetData : setData;
return setWrapToString(setter(result2, newData), func, bitmask);
}
function customDefaultsAssignIn(objValue, srcValue, key, object) {
if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
return srcValue;
}
return objValue;
}
function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
if (isObject(objValue) && isObject(srcValue)) {
stack.set(srcValue, objValue);
baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack);
stack["delete"](srcValue);
}
return objValue;
}
function customOmitClone(value) {
return isPlainObject(value) ? undefined2 : value;
}
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
var arrStacked = stack.get(array);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array;
}
var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache : undefined2;
stack.set(array, other);
stack.set(other, array);
while (++index < arrLength) {
var arrValue = array[index], othValue = other[index];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined2) {
if (compared) {
continue;
}
result2 = false;
break;
}
if (seen) {
if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result2 = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result2 = false;
break;
}
}
stack["delete"](array);
stack["delete"](other);
return result2;
}
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
return eq(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag:
return object == other + "";
case mapTag:
var convert = mapToArray;
case setTag:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
convert || (convert = setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
stack.set(object, other);
var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object);
return result2;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
var objStacked = stack.get(object);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object;
}
var result2 = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key], othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
}
if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result2 = false;
break;
}
skipCtor || (skipCtor = key == "constructor");
}
if (result2 && !skipCtor) {
var objCtor = object.constructor, othCtor = other.constructor;
if (objCtor != othCtor && (("constructor" in object) && ("constructor" in other)) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
result2 = false;
}
}
stack["delete"](object);
stack["delete"](other);
return result2;
}
function flatRest(func) {
return setToString(overRest(func, undefined2, flatten), func + "");
}
function getAllKeys(object) {
return baseGetAllKeys(object, keys, getSymbols);
}
function getAllKeysIn(object) {
return baseGetAllKeys(object, keysIn, getSymbolsIn);
}
var getData = !metaMap ? noop : function(func) {
return metaMap.get(func);
};
function getFuncName(func) {
var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0;
while (length--) {
var data = array[length], otherFunc = data.func;
if (otherFunc == null || otherFunc == func) {
return data.name;
}
}
return result2;
}
function getHolder(func) {
var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func;
return object.placeholder;
}
function getIteratee() {
var result2 = lodash.iteratee || iteratee;
result2 = result2 === iteratee ? baseIteratee : result2;
return arguments.length ? result2(arguments[0], arguments[1]) : result2;
}
function getMapData(map2, key) {
var data = map2.__data__;
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
}
function getMatchData(object) {
var result2 = keys(object), length = result2.length;
while (length--) {
var key = result2[length], value = object[key];
result2[length] = [key, value, isStrictComparable(value)];
}
return result2;
}
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined2;
}
function getRawTag(value) {
var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
try {
value[symToStringTag] = undefined2;
var unmasked = true;
} catch (e) {
}
var result2 = nativeObjectToString.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag] = tag;
} else {
delete value[symToStringTag];
}
}
return result2;
}
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
if (object == null) {
return [];
}
object = Object2(object);
return arrayFilter(nativeGetSymbols(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
var result2 = [];
while (object) {
arrayPush(result2, getSymbols(object));
object = getPrototype(object);
}
return result2;
};
var getTag = baseGetTag;
if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2) != setTag || WeakMap2 && getTag(new WeakMap2) != weakMapTag) {
getTag = function(value) {
var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag;
case mapCtorString:
return mapTag;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag;
case weakMapCtorString:
return weakMapTag;
}
}
return result2;
};
}
function getView(start, end, transforms) {
var index = -1, length = transforms.length;
while (++index < length) {
var data = transforms[index], size2 = data.size;
switch (data.type) {
case "drop":
start += size2;
break;
case "dropRight":
end -= size2;
break;
case "take":
end = nativeMin(end, start + size2);
break;
case "takeRight":
start = nativeMax(start, end - size2);
break;
}
}
return { start, end };
}
function getWrapDetails(source) {
var match = source.match(reWrapDetails);
return match ? match[1].split(reSplitDetails) : [];
}
function hasPath(object, path, hasFunc) {
path = castPath(path, object);
var index = -1, length = path.length, result2 = false;
while (++index < length) {
var key = toKey(path[index]);
if (!(result2 = object != null && hasFunc(object, key))) {
break;
}
object = object[key];
}
if (result2 || ++index != length) {
return result2;
}
length = object == null ? 0 : object.length;
return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
}
function initCloneArray(array) {
var length = array.length, result2 = new array.constructor(length);
if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
result2.index = array.index;
result2.input = array.input;
}
return result2;
}
function initCloneObject(object) {
return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
}
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag:
return cloneArrayBuffer(object);
case boolTag:
case dateTag:
return new Ctor(+object);
case dataViewTag:
return cloneDataView(object, isDeep);
case float32Tag:
case float64Tag:
case int8Tag:
case int16Tag:
case int32Tag:
case uint8Tag:
case uint8ClampedTag:
case uint16Tag:
case uint32Tag:
return cloneTypedArray(object, isDeep);
case mapTag:
return new Ctor;
case numberTag:
case stringTag:
return new Ctor(object);
case regexpTag:
return cloneRegExp(object);
case setTag:
return new Ctor;
case symbolTag:
return cloneSymbol(object);
}
}
function insertWrapDetails(source, details) {
var length = details.length;
if (!length) {
return source;
}
var lastIndex = length - 1;
details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex];
details = details.join(length > 2 ? ", " : " ");
return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
}
function isFlattenable(value) {
return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
}
function isIndex(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function isIterateeCall(value, index, object) {
if (!isObject(object)) {
return false;
}
var type = typeof index;
if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && (index in object)) {
return eq(object[index], value);
}
return false;
}
function isKey(value, object) {
if (isArray(value)) {
return false;
}
var type = typeof value;
if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
}
function isKeyable(value) {
var type = typeof value;
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
}
function isLaziable(func) {
var funcName = getFuncName(func), other = lodash[funcName];
if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
return false;
}
if (func === other) {
return true;
}
var data = getData(other);
return !!data && func === data[0];
}
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
var isMaskable = coreJsData ? isFunction : stubFalse;
function isPrototype(value) {
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
return value === proto;
}
function isStrictComparable(value) {
return value === value && !isObject(value);
}
function matchesStrictComparable(key, srcValue) {
return function(object) {
if (object == null) {
return false;
}
return object[key] === srcValue && (srcValue !== undefined2 || (key in Object2(object)));
};
}
function memoizeCapped(func) {
var result2 = memoize(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result2.cache;
return result2;
}
function mergeData(data, source) {
var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
if (!(isCommon || isCombo)) {
return data;
}
if (srcBitmask & WRAP_BIND_FLAG) {
data[2] = source[2];
newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
}
var value = source[3];
if (value) {
var partials = data[3];
data[3] = partials ? composeArgs(partials, value, source[4]) : value;
data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
}
value = source[5];
if (value) {
partials = data[5];
data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
}
value = source[7];
if (value) {
data[7] = value;
}
if (srcBitmask & WRAP_ARY_FLAG) {
data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
}
if (data[9] == null) {
data[9] = source[9];
}
data[0] = source[0];
data[1] = newBitmask;
return data;
}
function nativeKeysIn(object) {
var result2 = [];
if (object != null) {
for (var key in Object2(object)) {
result2.push(key);
}
}
return result2;
}
function objectToString(value) {
return nativeObjectToString.call(value);
}
function overRest(func, start, transform2) {
start = nativeMax(start === undefined2 ? func.length - 1 : start, 0);
return function() {
var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array2(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform2(array);
return apply(func, this, otherArgs);
};
}
function parent(object, path) {
return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
}
function reorder(array, indexes) {
var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
while (length--) {
var index = indexes[length];
array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2;
}
return array;
}
function safeGet(object, key) {
if (key === "constructor" && typeof object[key] === "function") {
return;
}
if (key == "__proto__") {
return;
}
return object[key];
}
var setData = shortOut(baseSetData);
var setTimeout2 = ctxSetTimeout || function(func, wait) {
return root.setTimeout(func, wait);
};
var setToString = shortOut(baseSetToString);
function setWrapToString(wrapper, reference, bitmask) {
var source = reference + "";
return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
}
function shortOut(func) {
var count = 0, lastCalled = 0;
return function() {
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(undefined2, arguments);
};
}
function shuffleSelf(array, size2) {
var index = -1, length = array.length, lastIndex = length - 1;
size2 = size2 === undefined2 ? length : size2;
while (++index < size2) {
var rand = baseRandom(index, lastIndex), value = array[rand];
array[rand] = array[index];
array[index] = value;
}
array.length = size2;
return array;
}
var stringToPath = memoizeCapped(function(string) {
var result2 = [];
if (string.charCodeAt(0) === 46) {
result2.push("");
}
string.replace(rePropName, function(match, number, quote, subString) {
result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
});
return result2;
});
function toKey(value) {
if (typeof value == "string" || isSymbol(value)) {
return value;
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
}
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e) {
}
try {
return func + "";
} catch (e) {
}
}
return "";
}
function updateWrapDetails(details, bitmask) {
arrayEach(wrapFlags, function(pair) {
var value = "_." + pair[0];
if (bitmask & pair[1] && !arrayIncludes(details, value)) {
details.push(value);
}
});
return details.sort();
}
function wrapperClone(wrapper) {
if (wrapper instanceof LazyWrapper) {
return wrapper.clone();
}
var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
result2.__actions__ = copyArray(wrapper.__actions__);
result2.__index__ = wrapper.__index__;
result2.__values__ = wrapper.__values__;
return result2;
}
function chunk(array, size2, guard) {
if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) {
size2 = 1;
} else {
size2 = nativeMax(toInteger(size2), 0);
}
var length = array == null ? 0 : array.length;
if (!length || size2 < 1) {
return [];
}
var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2));
while (index < length) {
result2[resIndex++] = baseSlice(array, index, index += size2);
}
return result2;
}
function compact(array) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = [];
while (++index < length) {
var value = array[index];
if (value) {
result2[resIndex++] = value;
}
}
return result2;
}
function concat() {
var length = arguments.length;
if (!length) {
return [];
}
var args = Array2(length - 1), array = arguments[0], index = length;
while (index--) {
args[index - 1] = arguments[index];
}
return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
}
var difference = baseRest(function(array, values2) {
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
});
var differenceBy = baseRest(function(array, values2) {
var iteratee2 = last(values2);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
});
var differenceWith = baseRest(function(array, values2) {
var comparator = last(values2);
if (isArrayLikeObject(comparator)) {
comparator = undefined2;
}
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : [];
});
function drop(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
return baseSlice(array, n < 0 ? 0 : n, length);
}
function dropRight(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
n = length - n;
return baseSlice(array, 0, n < 0 ? 0 : n);
}
function dropRightWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
}
function dropWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
}
function fill(array, value, start, end) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
if (start && typeof start != "number" && isIterateeCall(array, value, start)) {
start = 0;
end = length;
}
return baseFill(array, value, start, end);
}
function findIndex(array, predicate, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = fromIndex == null ? 0 : toInteger(fromIndex);
if (index < 0) {
index = nativeMax(length + index, 0);
}
return baseFindIndex(array, getIteratee(predicate, 3), index);
}
function findLastIndex(array, predicate, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = length - 1;
if (fromIndex !== undefined2) {
index = toInteger(fromIndex);
index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
}
return baseFindIndex(array, getIteratee(predicate, 3), index, true);
}
function flatten(array) {
var length = array == null ? 0 : array.length;
return length ? baseFlatten(array, 1) : [];
}
function flattenDeep(array) {
var length = array == null ? 0 : array.length;
return length ? baseFlatten(array, INFINITY) : [];
}
function flattenDepth(array, depth) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
depth = depth === undefined2 ? 1 : toInteger(depth);
return baseFlatten(array, depth);
}
function fromPairs(pairs) {
var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};
while (++index < length) {
var pair = pairs[index];
result2[pair[0]] = pair[1];
}
return result2;
}
function head(array) {
return array && array.length ? array[0] : undefined2;
}
function indexOf(array, value, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = fromIndex == null ? 0 : toInteger(fromIndex);
if (index < 0) {
index = nativeMax(length + index, 0);
}
return baseIndexOf(array, value, index);
}
function initial(array) {
var length = array == null ? 0 : array.length;
return length ? baseSlice(array, 0, -1) : [];
}
var intersection = baseRest(function(arrays) {
var mapped = arrayMap(arrays, castArrayLikeObject);
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
});
var intersectionBy = baseRest(function(arrays) {
var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
if (iteratee2 === last(mapped)) {
iteratee2 = undefined2;
} else {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
});
var intersectionWith = baseRest(function(arrays) {
var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
comparator = typeof comparator == "function" ? comparator : undefined2;
if (comparator) {
mapped.pop();
}
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
});
function join(array, separator) {
return array == null ? "" : nativeJoin.call(array, separator);
}
function last(array) {
var length = array == null ? 0 : array.length;
return length ? array[length - 1] : undefined2;
}
function lastIndexOf(array, value, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = length;
if (fromIndex !== undefined2) {
index = toInteger(fromIndex);
index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
}
return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);
}
function nth(array, n) {
return array && array.length ? baseNth(array, toInteger(n)) : undefined2;
}
var pull = baseRest(pullAll);
function pullAll(array, values2) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
}
function pullAllBy(array, values2, iteratee2) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
}
function pullAllWith(array, values2, comparator) {
return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array;
}
var pullAt = flatRest(function(array, indexes) {
var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
basePullAt(array, arrayMap(indexes, function(index) {
return isIndex(index, length) ? +index : index;
}).sort(compareAscending));
return result2;
});
function remove(array, predicate) {
var result2 = [];
if (!(array && array.length)) {
return result2;
}
var index = -1, indexes = [], length = array.length;
predicate = getIteratee(predicate, 3);
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result2.push(value);
indexes.push(index);
}
}
basePullAt(array, indexes);
return result2;
}
function reverse(array) {
return array == null ? array : nativeReverse.call(array);
}
function slice(array, start, end) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
if (end && typeof end != "number" && isIterateeCall(array, start, end)) {
start = 0;
end = length;
} else {
start = start == null ? 0 : toInteger(start);
end = end === undefined2 ? length : toInteger(end);
}
return baseSlice(array, start, end);
}
function sortedIndex(array, value) {
return baseSortedIndex(array, value);
}
function sortedIndexBy(array, value, iteratee2) {
return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
}
function sortedIndexOf(array, value) {
var length = array == null ? 0 : array.length;
if (length) {
var index = baseSortedIndex(array, value);
if (index < length && eq(array[index], value)) {
return index;
}
}
return -1;
}
function sortedLastIndex(array, value) {
return baseSortedIndex(array, value, true);
}
function sortedLastIndexBy(array, value, iteratee2) {
return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
}
function sortedLastIndexOf(array, value) {
var length = array == null ? 0 : array.length;
if (length) {
var index = baseSortedIndex(array, value, true) - 1;
if (eq(array[index], value)) {
return index;
}
}
return -1;
}
function sortedUniq(array) {
return array && array.length ? baseSortedUniq(array) : [];
}
function sortedUniqBy(array, iteratee2) {
return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
}
function tail(array) {
var length = array == null ? 0 : array.length;
return length ? baseSlice(array, 1, length) : [];
}
function take(array, n, guard) {
if (!(array && array.length)) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
return baseSlice(array, 0, n < 0 ? 0 : n);
}
function takeRight(array, n, guard) {
var length = array == null ? 0 : array.length;
if (!length) {
return [];
}
n = guard || n === undefined2 ? 1 : toInteger(n);
n = length - n;
return baseSlice(array, n < 0 ? 0 : n, length);
}
function takeRightWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
}
function takeWhile(array, predicate) {
return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
}
var union = baseRest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
});
var unionBy = baseRest(function(arrays) {
var iteratee2 = last(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
});
var unionWith = baseRest(function(arrays) {
var comparator = last(arrays);
comparator = typeof comparator == "function" ? comparator : undefined2;
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator);
});
function uniq(array) {
return array && array.length ? baseUniq(array) : [];
}
function uniqBy(array, iteratee2) {
return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
}
function uniqWith(array, comparator) {
comparator = typeof comparator == "function" ? comparator : undefined2;
return array && array.length ? baseUniq(array, undefined2, comparator) : [];
}
function unzip(array) {
if (!(array && array.length)) {
return [];
}
var length = 0;
array = arrayFilter(array, function(group) {
if (isArrayLikeObject(group)) {
length = nativeMax(group.length, length);
return true;
}
});
return baseTimes(length, function(index) {
return arrayMap(array, baseProperty(index));
});
}
function unzipWith(array, iteratee2) {
if (!(array && array.length)) {
return [];
}
var result2 = unzip(array);
if (iteratee2 == null) {
return result2;
}
return arrayMap(result2, function(group) {
return apply(iteratee2, undefined2, group);
});
}
var without = baseRest(function(array, values2) {
return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
});
var xor = baseRest(function(arrays) {
return baseXor(arrayFilter(arrays, isArrayLikeObject));
});
var xorBy = baseRest(function(arrays) {
var iteratee2 = last(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
});
var xorWith = baseRest(function(arrays) {
var comparator = last(arrays);
comparator = typeof comparator == "function" ? comparator : undefined2;
return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator);
});
var zip = baseRest(unzip);
function zipObject(props, values2) {
return baseZipObject(props || [], values2 || [], assignValue);
}
function zipObjectDeep(props, values2) {
return baseZipObject(props || [], values2 || [], baseSet);
}
var zipWith = baseRest(function(arrays) {
var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2;
iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2;
return unzipWith(arrays, iteratee2);
});
function chain(value) {
var result2 = lodash(value);
result2.__chain__ = true;
return result2;
}
function tap(value, interceptor) {
interceptor(value);
return value;
}
function thru(value, interceptor) {
return interceptor(value);
}
var wrapperAt = flatRest(function(paths) {
var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
return baseAt(object, paths);
};
if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {
return this.thru(interceptor);
}
value = value.slice(start, +start + (length ? 1 : 0));
value.__actions__.push({
func: thru,
args: [interceptor],
thisArg: undefined2
});
return new LodashWrapper(value, this.__chain__).thru(function(array) {
if (length && !array.length) {
array.push(undefined2);
}
return array;
});
});
function wrapperChain() {
return chain(this);
}
function wrapperCommit() {
return new LodashWrapper(this.value(), this.__chain__);
}
function wrapperNext() {
if (this.__values__ === undefined2) {
this.__values__ = toArray(this.value());
}
var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++];
return { done, value };
}
function wrapperToIterator() {
return this;
}
function wrapperPlant(value) {
var result2, parent2 = this;
while (parent2 instanceof baseLodash) {
var clone2 = wrapperClone(parent2);
clone2.__index__ = 0;
clone2.__values__ = undefined2;
if (result2) {
previous.__wrapped__ = clone2;
} else {
result2 = clone2;
}
var previous = clone2;
parent2 = parent2.__wrapped__;
}
previous.__wrapped__ = value;
return result2;
}
function wrapperReverse() {
var value = this.__wrapped__;
if (value instanceof LazyWrapper) {
var wrapped = value;
if (this.__actions__.length) {
wrapped = new LazyWrapper(this);
}
wrapped = wrapped.reverse();
wrapped.__actions__.push({
func: thru,
args: [reverse],
thisArg: undefined2
});
return new LodashWrapper(wrapped, this.__chain__);
}
return this.thru(reverse);
}
function wrapperValue() {
return baseWrapperValue(this.__wrapped__, this.__actions__);
}
var countBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
++result2[key];
} else {
baseAssignValue(result2, key, 1);
}
});
function every(collection, predicate, guard) {
var func = isArray(collection) ? arrayEvery : baseEvery;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined2;
}
return func(collection, getIteratee(predicate, 3));
}
function filter(collection, predicate) {
var func = isArray(collection) ? arrayFilter : baseFilter;
return func(collection, getIteratee(predicate, 3));
}
var find = createFind(findIndex);
var findLast = createFind(findLastIndex);
function flatMap(collection, iteratee2) {
return baseFlatten(map(collection, iteratee2), 1);
}
function flatMapDeep(collection, iteratee2) {
return baseFlatten(map(collection, iteratee2), INFINITY);
}
function flatMapDepth(collection, iteratee2, depth) {
depth = depth === undefined2 ? 1 : toInteger(depth);
return baseFlatten(map(collection, iteratee2), depth);
}
function forEach(collection, iteratee2) {
var func = isArray(collection) ? arrayEach : baseEach;
return func(collection, getIteratee(iteratee2, 3));
}
function forEachRight(collection, iteratee2) {
var func = isArray(collection) ? arrayEachRight : baseEachRight;
return func(collection, getIteratee(iteratee2, 3));
}
var groupBy = createAggregator(function(result2, value, key) {
if (hasOwnProperty.call(result2, key)) {
result2[key].push(value);
} else {
baseAssignValue(result2, key, [value]);
}
});
function includes(collection, value, fromIndex, guard) {
collection = isArrayLike(collection) ? collection : values(collection);
fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
var length = collection.length;
if (fromIndex < 0) {
fromIndex = nativeMax(length + fromIndex, 0);
}
return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
}
var invokeMap = baseRest(function(collection, path, args) {
var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value) {
result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
});
return result2;
});
var keyBy = createAggregator(function(result2, value, key) {
baseAssignValue(result2, key, value);
});
function map(collection, iteratee2) {
var func = isArray(collection) ? arrayMap : baseMap;
return func(collection, getIteratee(iteratee2, 3));
}
function orderBy(collection, iteratees, orders, guard) {
if (collection == null) {
return [];
}
if (!isArray(iteratees)) {
iteratees = iteratees == null ? [] : [iteratees];
}
orders = guard ? undefined2 : orders;
if (!isArray(orders)) {
orders = orders == null ? [] : [orders];
}
return baseOrderBy(collection, iteratees, orders);
}
var partition = createAggregator(function(result2, value, key) {
result2[key ? 0 : 1].push(value);
}, function() {
return [[], []];
});
function reduce(collection, iteratee2, accumulator) {
var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
}
function reduceRight(collection, iteratee2, accumulator) {
var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
}
function reject(collection, predicate) {
var func = isArray(collection) ? arrayFilter : baseFilter;
return func(collection, negate(getIteratee(predicate, 3)));
}
function sample(collection) {
var func = isArray(collection) ? arraySample : baseSample;
return func(collection);
}
function sampleSize(collection, n, guard) {
if (guard ? isIterateeCall(collection, n, guard) : n === undefined2) {
n = 1;
} else {
n = toInteger(n);
}
var func = isArray(collection) ? arraySampleSize : baseSampleSize;
return func(collection, n);
}
function shuffle(collection) {
var func = isArray(collection) ? arrayShuffle : baseShuffle;
return func(collection);
}
function size(collection) {
if (collection == null) {
return 0;
}
if (isArrayLike(collection)) {
return isString(collection) ? stringSize(collection) : collection.length;
}
var tag = getTag(collection);
if (tag == mapTag || tag == setTag) {
return collection.size;
}
return baseKeys(collection).length;
}
function some(collection, predicate, guard) {
var func = isArray(collection) ? arraySome : baseSome;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined2;
}
return func(collection, getIteratee(predicate, 3));
}
var sortBy = baseRest(function(collection, iteratees) {
if (collection == null) {
return [];
}
var length = iteratees.length;
if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
iteratees = [];
} else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
iteratees = [iteratees[0]];
}
return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
});
var now = ctxNow || function() {
return root.Date.now();
};
function after(n, func) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n = toInteger(n);
return function() {
if (--n < 1) {
return func.apply(this, arguments);
}
};
}
function ary(func, n, guard) {
n = guard ? undefined2 : n;
n = func && n == null ? func.length : n;
return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n);
}
function before(n, func) {
var result2;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
n = toInteger(n);
return function() {
if (--n > 0) {
result2 = func.apply(this, arguments);
}
if (n <= 1) {
func = undefined2;
}
return result2;
};
}
var bind = baseRest(function(func, thisArg, partials) {
var bitmask = WRAP_BIND_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bind));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(func, bitmask, thisArg, partials, holders);
});
var bindKey = baseRest(function(object, key, partials) {
var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bindKey));
bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(key, bitmask, object, partials, holders);
});
function curry(func, arity, guard) {
arity = guard ? undefined2 : arity;
var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
result2.placeholder = curry.placeholder;
return result2;
}
function curryRight(func, arity, guard) {
arity = guard ? undefined2 : arity;
var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
result2.placeholder = curryRight.placeholder;
return result2;
}
function debounce(func, wait, options) {
var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
wait = toNumber(wait) || 0;
if (isObject(options)) {
leading = !!options.leading;
maxing = "maxWait" in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
function invokeFunc(time) {
var args = lastArgs, thisArg = lastThis;
lastArgs = lastThis = undefined2;
lastInvokeTime = time;
result2 = func.apply(thisArg, args);
return result2;
}
function leadingEdge(time) {
lastInvokeTime = time;
timerId = setTimeout2(timerExpired, wait);
return leading ? invokeFunc(time) : result2;
}
function remainingWait(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
}
function shouldInvoke(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time = now();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
timerId = setTimeout2(timerExpired, remainingWait(time));
}
function trailingEdge(time) {
timerId = undefined2;
if (trailing && lastArgs) {
return invokeFunc(time);
}
lastArgs = lastThis = undefined2;
return result2;
}
function cancel() {
if (timerId !== undefined2) {
clearTimeout2(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined2;
}
function flush() {
return timerId === undefined2 ? result2 : trailingEdge(now());
}
function debounced() {
var time = now(), isInvoking = shouldInvoke(time);
lastArgs = arguments;
lastThis = this;
lastCallTime = time;
if (isInvoking) {
if (timerId === undefined2) {
return leadingEdge(lastCallTime);
}
if (maxing) {
clearTimeout2(timerId);
timerId = setTimeout2(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === undefined2) {
timerId = setTimeout2(timerExpired, wait);
}
return result2;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
var defer = baseRest(function(func, args) {
return baseDelay(func, 1, args);
});
var delay = baseRest(function(func, wait, args) {
return baseDelay(func, toNumber(wait) || 0, args);
});
function flip(func) {
return createWrap(func, WRAP_FLIP_FLAG);
}
function memoize(func, resolver) {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result2 = func.apply(this, args);
memoized.cache = cache.set(key, result2) || cache;
return result2;
};
memoized.cache = new (memoize.Cache || MapCache);
return memoized;
}
memoize.Cache = MapCache;
function negate(predicate) {
if (typeof predicate != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return function() {
var args = arguments;
switch (args.length) {
case 0:
return !predicate.call(this);
case 1:
return !predicate.call(this, args[0]);
case 2:
return !predicate.call(this, args[0], args[1]);
case 3:
return !predicate.call(this, args[0], args[1], args[2]);
}
return !predicate.apply(this, args);
};
}
function once(func) {
return before(2, func);
}
var overArgs = castRest(function(func, transforms) {
transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
var funcsLength = transforms.length;
return baseRest(function(args) {
var index = -1, length = nativeMin(args.length, funcsLength);
while (++index < length) {
args[index] = transforms[index].call(this, args[index]);
}
return apply(func, this, args);
});
});
var partial = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partial));
return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders);
});
var partialRight = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partialRight));
return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders);
});
var rearg = flatRest(function(func, indexes) {
return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes);
});
function rest(func, start) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start = start === undefined2 ? start : toInteger(start);
return baseRest(func, start);
}
function spread(func, start) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
start = start == null ? 0 : nativeMax(toInteger(start), 0);
return baseRest(function(args) {
var array = args[start], otherArgs = castSlice(args, 0, start);
if (array) {
arrayPush(otherArgs, array);
}
return apply(func, this, otherArgs);
});
}
function throttle(func, wait, options) {
var leading = true, trailing = true;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
if (isObject(options)) {
leading = "leading" in options ? !!options.leading : leading;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
return debounce(func, wait, {
leading,
maxWait: wait,
trailing
});
}
function unary(func) {
return ary(func, 1);
}
function wrap(value, wrapper) {
return partial(castFunction(wrapper), value);
}
function castArray() {
if (!arguments.length) {
return [];
}
var value = arguments[0];
return isArray(value) ? value : [value];
}
function clone(value) {
return baseClone(value, CLONE_SYMBOLS_FLAG);
}
function cloneWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
}
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
function cloneDeepWith(value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
}
function conformsTo(object, source) {
return source == null || baseConformsTo(object, source, keys(source));
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var gt = createRelationalOperation(baseGt);
var gte = createRelationalOperation(function(value, other) {
return value >= other;
});
var isArguments = baseIsArguments(function() {
return arguments;
}()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
};
var isArray = Array2.isArray;
var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike(value);
}
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
var isBuffer = nativeIsBuffer || stubFalse;
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
function isElement(value) {
return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
}
function isEmpty(value) {
if (value == null) {
return true;
}
if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
return !value.length;
}
var tag = getTag(value);
if (tag == mapTag || tag == setTag) {
return !value.size;
}
if (isPrototype(value)) {
return !baseKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty.call(value, key)) {
return false;
}
}
return true;
}
function isEqual(value, other) {
return baseIsEqual(value, other);
}
function isEqualWith(value, other, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
var result2 = customizer ? customizer(value, other) : undefined2;
return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2;
}
function isError(value) {
if (!isObjectLike(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
}
function isFinite2(value) {
return typeof value == "number" && nativeIsFinite(value);
}
function isFunction(value) {
if (!isObject(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}
function isInteger(value) {
return typeof value == "number" && value == toInteger(value);
}
function isLength(value) {
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isObject(value) {
var type = typeof value;
return value != null && (type == "object" || type == "function");
}
function isObjectLike(value) {
return value != null && typeof value == "object";
}
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
function isMatch(object, source) {
return object === source || baseIsMatch(object, source, getMatchData(source));
}
function isMatchWith(object, source, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return baseIsMatch(object, source, getMatchData(source), customizer);
}
function isNaN2(value) {
return isNumber(value) && value != +value;
}
function isNative(value) {
if (isMaskable(value)) {
throw new Error2(CORE_ERROR_TEXT);
}
return baseIsNative(value);
}
function isNull(value) {
return value === null;
}
function isNil(value) {
return value == null;
}
function isNumber(value) {
return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
}
function isPlainObject(value) {
if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
return false;
}
var proto = getPrototype(value);
if (proto === null) {
return true;
}
var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
}
var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
function isSafeInteger(value) {
return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
}
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
function isString(value) {
return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
}
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
function isUndefined(value) {
return value === undefined2;
}
function isWeakMap(value) {
return isObjectLike(value) && getTag(value) == weakMapTag;
}
function isWeakSet(value) {
return isObjectLike(value) && baseGetTag(value) == weakSetTag;
}
var lt = createRelationalOperation(baseLt);
var lte = createRelationalOperation(function(value, other) {
return value <= other;
});
function toArray(value) {
if (!value) {
return [];
}
if (isArrayLike(value)) {
return isString(value) ? stringToArray(value) : copyArray(value);
}
if (symIterator && value[symIterator]) {
return iteratorToArray(value[symIterator]());
}
var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
return func(value);
}
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = value < 0 ? -1 : 1;
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
function toInteger(value) {
var result2 = toFinite(value), remainder = result2 % 1;
return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
}
function toLength(value) {
return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
}
function toNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject(value)) {
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
value = isObject(other) ? other + "" : other;
}
if (typeof value != "string") {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
function toPlainObject(value) {
return copyObject(value, keysIn(value));
}
function toSafeInteger(value) {
return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
}
function toString(value) {
return value == null ? "" : baseToString(value);
}
var assign = createAssigner(function(object, source) {
if (isPrototype(source) || isArrayLike(source)) {
copyObject(source, keys(source), object);
return;
}
for (var key in source) {
if (hasOwnProperty.call(source, key)) {
assignValue(object, key, source[key]);
}
}
});
var assignIn = createAssigner(function(object, source) {
copyObject(source, keysIn(source), object);
});
var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
copyObject(source, keysIn(source), object, customizer);
});
var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
copyObject(source, keys(source), object, customizer);
});
var at = flatRest(baseAt);
function create(prototype, properties) {
var result2 = baseCreate(prototype);
return properties == null ? result2 : baseAssign(result2, properties);
}
var defaults = baseRest(function(object, sources) {
object = Object2(object);
var index = -1;
var length = sources.length;
var guard = length > 2 ? sources[2] : undefined2;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
length = 1;
}
while (++index < length) {
var source = sources[index];
var props = keysIn(source);
var propsIndex = -1;
var propsLength = props.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object[key];
if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
object[key] = source[key];
}
}
}
return object;
});
var defaultsDeep = baseRest(function(args) {
args.push(undefined2, customDefaultsMerge);
return apply(mergeWith, undefined2, args);
});
function findKey(object, predicate) {
return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
}
function findLastKey(object, predicate) {
return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
}
function forIn(object, iteratee2) {
return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
}
function forInRight(object, iteratee2) {
return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
}
function forOwn(object, iteratee2) {
return object && baseForOwn(object, getIteratee(iteratee2, 3));
}
function forOwnRight(object, iteratee2) {
return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
}
function functions(object) {
return object == null ? [] : baseFunctions(object, keys(object));
}
function functionsIn(object) {
return object == null ? [] : baseFunctions(object, keysIn(object));
}
function get(object, path, defaultValue) {
var result2 = object == null ? undefined2 : baseGet(object, path);
return result2 === undefined2 ? defaultValue : result2;
}
function has(object, path) {
return object != null && hasPath(object, path, baseHas);
}
function hasIn(object, path) {
return object != null && hasPath(object, path, baseHasIn);
}
var invert = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
result2[value] = key;
}, constant(identity));
var invertBy = createInverter(function(result2, value, key) {
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString.call(value);
}
if (hasOwnProperty.call(result2, value)) {
result2[value].push(key);
} else {
result2[value] = [key];
}
}, getIteratee);
var invoke = baseRest(baseInvoke);
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
function keysIn(object) {
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
function mapKeys(object, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object, function(value, key, object2) {
baseAssignValue(result2, iteratee2(value, key, object2), value);
});
return result2;
}
function mapValues(object, iteratee2) {
var result2 = {};
iteratee2 = getIteratee(iteratee2, 3);
baseForOwn(object, function(value, key, object2) {
baseAssignValue(result2, key, iteratee2(value, key, object2));
});
return result2;
}
var merge = createAssigner(function(object, source, srcIndex) {
baseMerge(object, source, srcIndex);
});
var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
baseMerge(object, source, srcIndex, customizer);
});
var omit = flatRest(function(object, paths) {
var result2 = {};
if (object == null) {
return result2;
}
var isDeep = false;
paths = arrayMap(paths, function(path) {
path = castPath(path, object);
isDeep || (isDeep = path.length > 1);
return path;
});
copyObject(object, getAllKeysIn(object), result2);
if (isDeep) {
result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
}
var length = paths.length;
while (length--) {
baseUnset(result2, paths[length]);
}
return result2;
});
function omitBy(object, predicate) {
return pickBy(object, negate(getIteratee(predicate)));
}
var pick = flatRest(function(object, paths) {
return object == null ? {} : basePick(object, paths);
});
function pickBy(object, predicate) {
if (object == null) {
return {};
}
var props = arrayMap(getAllKeysIn(object), function(prop) {
return [prop];
});
predicate = getIteratee(predicate);
return basePickBy(object, props, function(value, path) {
return predicate(value, path[0]);
});
}
function result(object, path, defaultValue) {
path = castPath(path, object);
var index = -1, length = path.length;
if (!length) {
length = 1;
object = undefined2;
}
while (++index < length) {
var value = object == null ? undefined2 : object[toKey(path[index])];
if (value === undefined2) {
index = length;
value = defaultValue;
}
object = isFunction(value) ? value.call(object) : value;
}
return object;
}
function set(object, path, value) {
return object == null ? object : baseSet(object, path, value);
}
function setWith(object, path, value, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return object == null ? object : baseSet(object, path, value, customizer);
}
var toPairs = createToPairs(keys);
var toPairsIn = createToPairs(keysIn);
function transform(object, iteratee2, accumulator) {
var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
iteratee2 = getIteratee(iteratee2, 4);
if (accumulator == null) {
var Ctor = object && object.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor : [];
} else if (isObject(object)) {
accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
} else {
accumulator = {};
}
}
(isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) {
return iteratee2(accumulator, value, index, object2);
});
return accumulator;
}
function unset(object, path) {
return object == null ? true : baseUnset(object, path);
}
function update(object, path, updater) {
return object == null ? object : baseUpdate(object, path, castFunction(updater));
}
function updateWith(object, path, updater, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
}
function values(object) {
return object == null ? [] : baseValues(object, keys(object));
}
function valuesIn(object) {
return object == null ? [] : baseValues(object, keysIn(object));
}
function clamp(number, lower, upper) {
if (upper === undefined2) {
upper = lower;
lower = undefined2;
}
if (upper !== undefined2) {
upper = toNumber(upper);
upper = upper === upper ? upper : 0;
}
if (lower !== undefined2) {
lower = toNumber(lower);
lower = lower === lower ? lower : 0;
}
return baseClamp(toNumber(number), lower, upper);
}
function inRange(number, start, end) {
start = toFinite(start);
if (end === undefined2) {
end = start;
start = 0;
} else {
end = toFinite(end);
}
number = toNumber(number);
return baseInRange(number, start, end);
}
function random(lower, upper, floating) {
if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
upper = floating = undefined2;
}
if (floating === undefined2) {
if (typeof upper == "boolean") {
floating = upper;
upper = undefined2;
} else if (typeof lower == "boolean") {
floating = lower;
lower = undefined2;
}
}
if (lower === undefined2 && upper === undefined2) {
lower = 0;
upper = 1;
} else {
lower = toFinite(lower);
if (upper === undefined2) {
upper = lower;
lower = 0;
} else {
upper = toFinite(upper);
}
}
if (lower > upper) {
var temp = lower;
lower = upper;
upper = temp;
}
if (floating || lower % 1 || upper % 1) {
var rand = nativeRandom();
return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
}
return baseRandom(lower, upper);
}
var camelCase = createCompounder(function(result2, word, index) {
word = word.toLowerCase();
return result2 + (index ? capitalize(word) : word);
});
function capitalize(string) {
return upperFirst(toString(string).toLowerCase());
}
function deburr(string) {
string = toString(string);
return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
}
function endsWith(string, target, position) {
string = toString(string);
target = baseToString(target);
var length = string.length;
position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length);
var end = position;
position -= target.length;
return position >= 0 && string.slice(position, end) == target;
}
function escape(string) {
string = toString(string);
return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
}
function escapeRegExp(string) {
string = toString(string);
return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
}
var kebabCase = createCompounder(function(result2, word, index) {
return result2 + (index ? "-" : "") + word.toLowerCase();
});
var lowerCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + word.toLowerCase();
});
var lowerFirst = createCaseFirst("toLowerCase");
function pad(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
if (!length || strLength >= length) {
return string;
}
var mid = (length - strLength) / 2;
return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);
}
function padEnd(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
return length && strLength < length ? string + createPadding(length - strLength, chars) : string;
}
function padStart(string, length, chars) {
string = toString(string);
length = toInteger(length);
var strLength = length ? stringSize(string) : 0;
return length && strLength < length ? createPadding(length - strLength, chars) + string : string;
}
function parseInt2(string, radix, guard) {
if (guard || radix == null) {
radix = 0;
} else if (radix) {
radix = +radix;
}
return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0);
}
function repeat(string, n, guard) {
if (guard ? isIterateeCall(string, n, guard) : n === undefined2) {
n = 1;
} else {
n = toInteger(n);
}
return baseRepeat(toString(string), n);
}
function replace() {
var args = arguments, string = toString(args[0]);
return args.length < 3 ? string : string.replace(args[1], args[2]);
}
var snakeCase = createCompounder(function(result2, word, index) {
return result2 + (index ? "_" : "") + word.toLowerCase();
});
function split(string, separator, limit) {
if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
separator = limit = undefined2;
}
limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0;
if (!limit) {
return [];
}
string = toString(string);
if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) {
separator = baseToString(separator);
if (!separator && hasUnicode(string)) {
return castSlice(stringToArray(string), 0, limit);
}
}
return string.split(separator, limit);
}
var startCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + upperFirst(word);
});
function startsWith(string, target, position) {
string = toString(string);
position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
target = baseToString(target);
return string.slice(position, position + target.length) == target;
}
function template(string, options, guard) {
var settings = lodash.templateSettings;
if (guard && isIterateeCall(string, options, guard)) {
options = undefined2;
}
string = toString(string);
options = assignInWith({}, options, settings, customDefaultsAssignIn);
var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '";
var reDelimiters = RegExp2((options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g");
var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
interpolateValue || (interpolateValue = esTemplateValue);
source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
if (escapeValue) {
isEscaping = true;
source += "' +\n__e(" + escapeValue + ") +\n'";
}
if (evaluateValue) {
isEvaluating = true;
source += "';\n" + evaluateValue + ";\n__p += '";
}
if (interpolateValue) {
source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
}
index = offset + match.length;
return match;
});
source += "';\n";
var variable = hasOwnProperty.call(options, "variable") && options.variable;
if (!variable) {
source = "with (obj) {\n" + source + "\n}\n";
} else if (reForbiddenIdentifierChars.test(variable)) {
throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
}
source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\n" + "function print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
var result2 = attempt(function() {
return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues);
});
result2.source = source;
if (isError(result2)) {
throw result2;
}
return result2;
}
function toLower(value) {
return toString(value).toLowerCase();
}
function toUpper(value) {
return toString(value).toUpperCase();
}
function trim(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return baseTrim(string);
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;
return castSlice(strSymbols, start, end).join("");
}
function trimEnd(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return string.slice(0, trimmedEndIndex(string) + 1);
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
return castSlice(strSymbols, 0, end).join("");
}
function trimStart(string, chars, guard) {
string = toString(string);
if (string && (guard || chars === undefined2)) {
return string.replace(reTrimStart, "");
}
if (!string || !(chars = baseToString(chars))) {
return string;
}
var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars));
return castSlice(strSymbols, start).join("");
}
function truncate(string, options) {
var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
if (isObject(options)) {
var separator = "separator" in options ? options.separator : separator;
length = "length" in options ? toInteger(options.length) : length;
omission = "omission" in options ? baseToString(options.omission) : omission;
}
string = toString(string);
var strLength = string.length;
if (hasUnicode(string)) {
var strSymbols = stringToArray(string);
strLength = strSymbols.length;
}
if (length >= strLength) {
return string;
}
var end = length - stringSize(omission);
if (end < 1) {
return omission;
}
var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end);
if (separator === undefined2) {
return result2 + omission;
}
if (strSymbols) {
end += result2.length - end;
}
if (isRegExp(separator)) {
if (string.slice(end).search(separator)) {
var match, substring = result2;
if (!separator.global) {
separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g");
}
separator.lastIndex = 0;
while (match = separator.exec(substring)) {
var newEnd = match.index;
}
result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd);
}
} else if (string.indexOf(baseToString(separator), end) != end) {
var index = result2.lastIndexOf(separator);
if (index > -1) {
result2 = result2.slice(0, index);
}
}
return result2 + omission;
}
function unescape2(string) {
string = toString(string);
return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
}
var upperCase = createCompounder(function(result2, word, index) {
return result2 + (index ? " " : "") + word.toUpperCase();
});
var upperFirst = createCaseFirst("toUpperCase");
function words(string, pattern, guard) {
string = toString(string);
pattern = guard ? undefined2 : pattern;
if (pattern === undefined2) {
return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
}
return string.match(pattern) || [];
}
var attempt = baseRest(function(func, args) {
try {
return apply(func, undefined2, args);
} catch (e) {
return isError(e) ? e : new Error2(e);
}
});
var bindAll = flatRest(function(object, methodNames) {
arrayEach(methodNames, function(key) {
key = toKey(key);
baseAssignValue(object, key, bind(object[key], object));
});
return object;
});
function cond(pairs) {
var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
pairs = !length ? [] : arrayMap(pairs, function(pair) {
if (typeof pair[1] != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
return [toIteratee(pair[0]), pair[1]];
});
return baseRest(function(args) {
var index = -1;
while (++index < length) {
var pair = pairs[index];
if (apply(pair[0], this, args)) {
return apply(pair[1], this, args);
}
}
});
}
function conforms(source) {
return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
}
function constant(value) {
return function() {
return value;
};
}
function defaultTo(value, defaultValue) {
return value == null || value !== value ? defaultValue : value;
}
var flow = createFlow();
var flowRight = createFlow(true);
function identity(value) {
return value;
}
function iteratee(func) {
return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
}
function matches(source) {
return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
}
function matchesProperty(path, srcValue) {
return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
}
var method = baseRest(function(path, args) {
return function(object) {
return baseInvoke(object, path, args);
};
});
var methodOf = baseRest(function(object, args) {
return function(path) {
return baseInvoke(object, path, args);
};
});
function mixin(object, source, options) {
var props = keys(source), methodNames = baseFunctions(source, props);
if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {
options = source;
source = object;
object = this;
methodNames = baseFunctions(source, keys(source));
}
var chain2 = !(isObject(options) && ("chain" in options)) || !!options.chain, isFunc = isFunction(object);
arrayEach(methodNames, function(methodName) {
var func = source[methodName];
object[methodName] = func;
if (isFunc) {
object.prototype[methodName] = function() {
var chainAll = this.__chain__;
if (chain2 || chainAll) {
var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
actions.push({ func, args: arguments, thisArg: object });
result2.__chain__ = chainAll;
return result2;
}
return func.apply(object, arrayPush([this.value()], arguments));
};
}
});
return object;
}
function noConflict() {
if (root._ === this) {
root._ = oldDash;
}
return this;
}
function noop() {
}
function nthArg(n) {
n = toInteger(n);
return baseRest(function(args) {
return baseNth(args, n);
});
}
var over = createOver(arrayMap);
var overEvery = createOver(arrayEvery);
var overSome = createOver(arraySome);
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
function propertyOf(object) {
return function(path) {
return object == null ? undefined2 : baseGet(object, path);
};
}
var range = createRange();
var rangeRight = createRange(true);
function stubArray() {
return [];
}
function stubFalse() {
return false;
}
function stubObject() {
return {};
}
function stubString() {
return "";
}
function stubTrue() {
return true;
}
function times(n, iteratee2) {
n = toInteger(n);
if (n < 1 || n > MAX_SAFE_INTEGER) {
return [];
}
var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);
iteratee2 = getIteratee(iteratee2);
n -= MAX_ARRAY_LENGTH;
var result2 = baseTimes(length, iteratee2);
while (++index < n) {
iteratee2(index);
}
return result2;
}
function toPath(value) {
if (isArray(value)) {
return arrayMap(value, toKey);
}
return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
}
function uniqueId(prefix) {
var id = ++idCounter;
return toString(prefix) + id;
}
var add = createMathOperation(function(augend, addend) {
return augend + addend;
}, 0);
var ceil = createRound("ceil");
var divide = createMathOperation(function(dividend, divisor) {
return dividend / divisor;
}, 1);
var floor = createRound("floor");
function max(array) {
return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2;
}
function maxBy(array, iteratee2) {
return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2;
}
function mean(array) {
return baseMean(array, identity);
}
function meanBy(array, iteratee2) {
return baseMean(array, getIteratee(iteratee2, 2));
}
function min(array) {
return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2;
}
function minBy(array, iteratee2) {
return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2;
}
var multiply = createMathOperation(function(multiplier, multiplicand) {
return multiplier * multiplicand;
}, 1);
var round = createRound("round");
var subtract = createMathOperation(function(minuend, subtrahend) {
return minuend - subtrahend;
}, 0);
function sum(array) {
return array && array.length ? baseSum(array, identity) : 0;
}
function sumBy(array, iteratee2) {
return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
}
lodash.after = after;
lodash.ary = ary;
lodash.assign = assign;
lodash.assignIn = assignIn;
lodash.assignInWith = assignInWith;
lodash.assignWith = assignWith;
lodash.at = at;
lodash.before = before;
lodash.bind = bind;
lodash.bindAll = bindAll;
lodash.bindKey = bindKey;
lodash.castArray = castArray;
lodash.chain = chain;
lodash.chunk = chunk;
lodash.compact = compact;
lodash.concat = concat;
lodash.cond = cond;
lodash.conforms = conforms;
lodash.constant = constant;
lodash.countBy = countBy;
lodash.create = create;
lodash.curry = curry;
lodash.curryRight = curryRight;
lodash.debounce = debounce;
lodash.defaults = defaults;
lodash.defaultsDeep = defaultsDeep;
lodash.defer = defer;
lodash.delay = delay;
lodash.difference = difference;
lodash.differenceBy = differenceBy;
lodash.differenceWith = differenceWith;
lodash.drop = drop;
lodash.dropRight = dropRight;
lodash.dropRightWhile = dropRightWhile;
lodash.dropWhile = dropWhile;
lodash.fill = fill;
lodash.filter = filter;
lodash.flatMap = flatMap;
lodash.flatMapDeep = flatMapDeep;
lodash.flatMapDepth = flatMapDepth;
lodash.flatten = flatten;
lodash.flattenDeep = flattenDeep;
lodash.flattenDepth = flattenDepth;
lodash.flip = flip;
lodash.flow = flow;
lodash.flowRight = flowRight;
lodash.fromPairs = fromPairs;
lodash.functions = functions;
lodash.functionsIn = functionsIn;
lodash.groupBy = groupBy;
lodash.initial = initial;
lodash.intersection = intersection;
lodash.intersectionBy = intersectionBy;
lodash.intersectionWith = intersectionWith;
lodash.invert = invert;
lodash.invertBy = invertBy;
lodash.invokeMap = invokeMap;
lodash.iteratee = iteratee;
lodash.keyBy = keyBy;
lodash.keys = keys;
lodash.keysIn = keysIn;
lodash.map = map;
lodash.mapKeys = mapKeys;
lodash.mapValues = mapValues;
lodash.matches = matches;
lodash.matchesProperty = matchesProperty;
lodash.memoize = memoize;
lodash.merge = merge;
lodash.mergeWith = mergeWith;
lodash.method = method;
lodash.methodOf = methodOf;
lodash.mixin = mixin;
lodash.negate = negate;
lodash.nthArg = nthArg;
lodash.omit = omit;
lodash.omitBy = omitBy;
lodash.once = once;
lodash.orderBy = orderBy;
lodash.over = over;
lodash.overArgs = overArgs;
lodash.overEvery = overEvery;
lodash.overSome = overSome;
lodash.partial = partial;
lodash.partialRight = partialRight;
lodash.partition = partition;
lodash.pick = pick;
lodash.pickBy = pickBy;
lodash.property = property;
lodash.propertyOf = propertyOf;
lodash.pull = pull;
lodash.pullAll = pullAll;
lodash.pullAllBy = pullAllBy;
lodash.pullAllWith = pullAllWith;
lodash.pullAt = pullAt;
lodash.range = range;
lodash.rangeRight = rangeRight;
lodash.rearg = rearg;
lodash.reject = reject;
lodash.remove = remove;
lodash.rest = rest;
lodash.reverse = reverse;
lodash.sampleSize = sampleSize;
lodash.set = set;
lodash.setWith = setWith;
lodash.shuffle = shuffle;
lodash.slice = slice;
lodash.sortBy = sortBy;
lodash.sortedUniq = sortedUniq;
lodash.sortedUniqBy = sortedUniqBy;
lodash.split = split;
lodash.spread = spread;
lodash.tail = tail;
lodash.take = take;
lodash.takeRight = takeRight;
lodash.takeRightWhile = takeRightWhile;
lodash.takeWhile = takeWhile;
lodash.tap = tap;
lodash.throttle = throttle;
lodash.thru = thru;
lodash.toArray = toArray;
lodash.toPairs = toPairs;
lodash.toPairsIn = toPairsIn;
lodash.toPath = toPath;
lodash.toPlainObject = toPlainObject;
lodash.transform = transform;
lodash.unary = unary;
lodash.union = union;
lodash.unionBy = unionBy;
lodash.unionWith = unionWith;
lodash.uniq = uniq;
lodash.uniqBy = uniqBy;
lodash.uniqWith = uniqWith;
lodash.unset = unset;
lodash.unzip = unzip;
lodash.unzipWith = unzipWith;
lodash.update = update;
lodash.updateWith = updateWith;
lodash.values = values;
lodash.valuesIn = valuesIn;
lodash.without = without;
lodash.words = words;
lodash.wrap = wrap;
lodash.xor = xor;
lodash.xorBy = xorBy;
lodash.xorWith = xorWith;
lodash.zip = zip;
lodash.zipObject = zipObject;
lodash.zipObjectDeep = zipObjectDeep;
lodash.zipWith = zipWith;
lodash.entries = toPairs;
lodash.entriesIn = toPairsIn;
lodash.extend = assignIn;
lodash.extendWith = assignInWith;
mixin(lodash, lodash);
lodash.add = add;
lodash.attempt = attempt;
lodash.camelCase = camelCase;
lodash.capitalize = capitalize;
lodash.ceil = ceil;
lodash.clamp = clamp;
lodash.clone = clone;
lodash.cloneDeep = cloneDeep;
lodash.cloneDeepWith = cloneDeepWith;
lodash.cloneWith = cloneWith;
lodash.conformsTo = conformsTo;
lodash.deburr = deburr;
lodash.defaultTo = defaultTo;
lodash.divide = divide;
lodash.endsWith = endsWith;
lodash.eq = eq;
lodash.escape = escape;
lodash.escapeRegExp = escapeRegExp;
lodash.every = every;
lodash.find = find;
lodash.findIndex = findIndex;
lodash.findKey = findKey;
lodash.findLast = findLast;
lodash.findLastIndex = findLastIndex;
lodash.findLastKey = findLastKey;
lodash.floor = floor;
lodash.forEach = forEach;
lodash.forEachRight = forEachRight;
lodash.forIn = forIn;
lodash.forInRight = forInRight;
lodash.forOwn = forOwn;
lodash.forOwnRight = forOwnRight;
lodash.get = get;
lodash.gt = gt;
lodash.gte = gte;
lodash.has = has;
lodash.hasIn = hasIn;
lodash.head = head;
lodash.identity = identity;
lodash.includes = includes;
lodash.indexOf = indexOf;
lodash.inRange = inRange;
lodash.invoke = invoke;
lodash.isArguments = isArguments;
lodash.isArray = isArray;
lodash.isArrayBuffer = isArrayBuffer;
lodash.isArrayLike = isArrayLike;
lodash.isArrayLikeObject = isArrayLikeObject;
lodash.isBoolean = isBoolean;
lodash.isBuffer = isBuffer;
lodash.isDate = isDate;
lodash.isElement = isElement;
lodash.isEmpty = isEmpty;
lodash.isEqual = isEqual;
lodash.isEqualWith = isEqualWith;
lodash.isError = isError;
lodash.isFinite = isFinite2;
lodash.isFunction = isFunction;
lodash.isInteger = isInteger;
lodash.isLength = isLength;
lodash.isMap = isMap;
lodash.isMatch = isMatch;
lodash.isMatchWith = isMatchWith;
lodash.isNaN = isNaN2;
lodash.isNative = isNative;
lodash.isNil = isNil;
lodash.isNull = isNull;
lodash.isNumber = isNumber;
lodash.isObject = isObject;
lodash.isObjectLike = isObjectLike;
lodash.isPlainObject = isPlainObject;
lodash.isRegExp = isRegExp;
lodash.isSafeInteger = isSafeInteger;
lodash.isSet = isSet;
lodash.isString = isString;
lodash.isSymbol = isSymbol;
lodash.isTypedArray = isTypedArray;
lodash.isUndefined = isUndefined;
lodash.isWeakMap = isWeakMap;
lodash.isWeakSet = isWeakSet;
lodash.join = join;
lodash.kebabCase = kebabCase;
lodash.last = last;
lodash.lastIndexOf = lastIndexOf;
lodash.lowerCase = lowerCase;
lodash.lowerFirst = lowerFirst;
lodash.lt = lt;
lodash.lte = lte;
lodash.max = max;
lodash.maxBy = maxBy;
lodash.mean = mean;
lodash.meanBy = meanBy;
lodash.min = min;
lodash.minBy = minBy;
lodash.stubArray = stubArray;
lodash.stubFalse = stubFalse;
lodash.stubObject = stubObject;
lodash.stubString = stubString;
lodash.stubTrue = stubTrue;
lodash.multiply = multiply;
lodash.nth = nth;
lodash.noConflict = noConflict;
lodash.noop = noop;
lodash.now = now;
lodash.pad = pad;
lodash.padEnd = padEnd;
lodash.padStart = padStart;
lodash.parseInt = parseInt2;
lodash.random = random;
lodash.reduce = reduce;
lodash.reduceRight = reduceRight;
lodash.repeat = repeat;
lodash.replace = replace;
lodash.result = result;
lodash.round = round;
lodash.runInContext = runInContext;
lodash.sample = sample;
lodash.size = size;
lodash.snakeCase = snakeCase;
lodash.some = some;
lodash.sortedIndex = sortedIndex;
lodash.sortedIndexBy = sortedIndexBy;
lodash.sortedIndexOf = sortedIndexOf;
lodash.sortedLastIndex = sortedLastIndex;
lodash.sortedLastIndexBy = sortedLastIndexBy;
lodash.sortedLastIndexOf = sortedLastIndexOf;
lodash.startCase = startCase;
lodash.startsWith = startsWith;
lodash.subtract = subtract;
lodash.sum = sum;
lodash.sumBy = sumBy;
lodash.template = template;
lodash.times = times;
lodash.toFinite = toFinite;
lodash.toInteger = toInteger;
lodash.toLength = toLength;
lodash.toLower = toLower;
lodash.toNumber = toNumber;
lodash.toSafeInteger = toSafeInteger;
lodash.toString = toString;
lodash.toUpper = toUpper;
lodash.trim = trim;
lodash.trimEnd = trimEnd;
lodash.trimStart = trimStart;
lodash.truncate = truncate;
lodash.unescape = unescape2;
lodash.uniqueId = uniqueId;
lodash.upperCase = upperCase;
lodash.upperFirst = upperFirst;
lodash.each = forEach;
lodash.eachRight = forEachRight;
lodash.first = head;
mixin(lodash, function() {
var source = {};
baseForOwn(lodash, function(func, methodName) {
if (!hasOwnProperty.call(lodash.prototype, methodName)) {
source[methodName] = func;
}
});
return source;
}(), { chain: false });
lodash.VERSION = VERSION;
arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
lodash[methodName].placeholder = lodash;
});
arrayEach(["drop", "take"], function(methodName, index) {
LazyWrapper.prototype[methodName] = function(n) {
n = n === undefined2 ? 1 : nativeMax(toInteger(n), 0);
var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
if (result2.__filtered__) {
result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
} else {
result2.__views__.push({
size: nativeMin(n, MAX_ARRAY_LENGTH),
type: methodName + (result2.__dir__ < 0 ? "Right" : "")
});
}
return result2;
};
LazyWrapper.prototype[methodName + "Right"] = function(n) {
return this.reverse()[methodName](n).reverse();
};
});
arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
LazyWrapper.prototype[methodName] = function(iteratee2) {
var result2 = this.clone();
result2.__iteratees__.push({
iteratee: getIteratee(iteratee2, 3),
type
});
result2.__filtered__ = result2.__filtered__ || isFilter;
return result2;
};
});
arrayEach(["head", "last"], function(methodName, index) {
var takeName = "take" + (index ? "Right" : "");
LazyWrapper.prototype[methodName] = function() {
return this[takeName](1).value()[0];
};
});
arrayEach(["initial", "tail"], function(methodName, index) {
var dropName = "drop" + (index ? "" : "Right");
LazyWrapper.prototype[methodName] = function() {
return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
};
});
LazyWrapper.prototype.compact = function() {
return this.filter(identity);
};
LazyWrapper.prototype.find = function(predicate) {
return this.filter(predicate).head();
};
LazyWrapper.prototype.findLast = function(predicate) {
return this.reverse().find(predicate);
};
LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
if (typeof path == "function") {
return new LazyWrapper(this);
}
return this.map(function(value) {
return baseInvoke(value, path, args);
});
});
LazyWrapper.prototype.reject = function(predicate) {
return this.filter(negate(getIteratee(predicate)));
};
LazyWrapper.prototype.slice = function(start, end) {
start = toInteger(start);
var result2 = this;
if (result2.__filtered__ && (start > 0 || end < 0)) {
return new LazyWrapper(result2);
}
if (start < 0) {
result2 = result2.takeRight(-start);
} else if (start) {
result2 = result2.drop(start);
}
if (end !== undefined2) {
end = toInteger(end);
result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start);
}
return result2;
};
LazyWrapper.prototype.takeRightWhile = function(predicate) {
return this.reverse().takeWhile(predicate).reverse();
};
LazyWrapper.prototype.toArray = function() {
return this.take(MAX_ARRAY_LENGTH);
};
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
if (!lodashFunc) {
return;
}
lodash.prototype[methodName] = function() {
var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value);
var interceptor = function(value2) {
var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));
return isTaker && chainAll ? result3[0] : result3;
};
if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
isLazy = useLazy = false;
}
var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
if (!retUnwrapped && useLazy) {
value = onlyLazy ? value : new LazyWrapper(this);
var result2 = func.apply(value, args);
result2.__actions__.push({ func: thru, args: [interceptor], thisArg: undefined2 });
return new LodashWrapper(result2, chainAll);
}
if (isUnwrapped && onlyLazy) {
return func.apply(this, args);
}
result2 = this.thru(interceptor);
return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
};
});
arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
lodash.prototype[methodName] = function() {
var args = arguments;
if (retUnwrapped && !this.__chain__) {
var value = this.value();
return func.apply(isArray(value) ? value : [], args);
}
return this[chainName](function(value2) {
return func.apply(isArray(value2) ? value2 : [], args);
});
};
});
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
var lodashFunc = lodash[methodName];
if (lodashFunc) {
var key = lodashFunc.name + "";
if (!hasOwnProperty.call(realNames, key)) {
realNames[key] = [];
}
realNames[key].push({ name: methodName, func: lodashFunc });
}
});
realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{
name: "wrapper",
func: undefined2
}];
LazyWrapper.prototype.clone = lazyClone;
LazyWrapper.prototype.reverse = lazyReverse;
LazyWrapper.prototype.value = lazyValue;
lodash.prototype.at = wrapperAt;
lodash.prototype.chain = wrapperChain;
lodash.prototype.commit = wrapperCommit;
lodash.prototype.next = wrapperNext;
lodash.prototype.plant = wrapperPlant;
lodash.prototype.reverse = wrapperReverse;
lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
lodash.prototype.first = lodash.prototype.head;
if (symIterator) {
lodash.prototype[symIterator] = wrapperToIterator;
}
return lodash;
};
var _ = runInContext();
if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
root._ = _;
define(function() {
return _;
});
} else if (freeModule) {
(freeModule.exports = _)._ = _;
freeExports._ = _;
} else {
root._ = _;
}
}).call(exports);
});
// package-shared/functions/backend/serverError.ts
import fs from "fs";
async function serverError({
user,
message,
component,
noMail,
req
}) {
const date = new Date;
const reqIp = (() => {
if (!req)
return null;
try {
const forwarded = req.headers["x-forwarded-for"];
const realIp = req.headers["x-real-ip"];
const cloudflareIp = req.headers["cf-connecting-ip"];
const forwardedIp = Array.isArray(forwarded) ? forwarded[0] : forwarded?.split(",")[0];
const clientIp = cloudflareIp || forwardedIp || realIp || req.socket.remoteAddress;
if (!clientIp)
return null;
return String(clientIp);
} catch (error) {
return null;
}
})();
try {
let log = `\uD83D\uDE80 SERVER ERROR ===========================
Error Message: ${message}\nComponent: ${component}`;
if (user?.id && user?.first_name && user?.last_name && user?.email) {
log += `\nUser Id: ${user?.id}\nUser Name: ${user?.first_name} ${user?.last_name}\nUser Email: ${user?.email}`;
}
if (req?.url) {
log += `\nURL: ${req.url}`;
}
if (req?.body) {
log += `\nRequest Body: ${JSON.stringify(req.body, null, 4)}`;
}
if (reqIp) {
log += `\nIP: ${reqIp}`;
}
log += `\nDate: ${date.toDateString()}`;
log += "\n========================================";
if (!fs.existsSync(`./.tmp/error.log`)) {
fs.writeFileSync(`./.tmp/error.log`, "", "utf-8");
}
const initialText = fs.readFileSync(`./.tmp/error.log`, "utf-8");
fs.writeFileSync(`./.tmp/error.log`, log);
fs.appendFileSync(`./.tmp/error.log`, `\n\n\n\n\n${initialText}`);
} catch (error) {
console.log("Server Error Reporting Error:", error.message);
}
}
var init_serverError = () => {
};
// node_modules/mysql/lib/protocol/constants/client.js
var require_client = __commonJS((exports) => {
exports.CLIENT_LONG_PASSWORD = 1;
exports.CLIENT_FOUND_ROWS = 2;
exports.CLIENT_LONG_FLAG = 4;
exports.CLIENT_CONNECT_WITH_DB = 8;
exports.CLIENT_NO_SCHEMA = 16;
exports.CLIENT_COMPRESS = 32;
exports.CLIENT_ODBC = 64;
exports.CLIENT_LOCAL_FILES = 128;
exports.CLIENT_IGNORE_SPACE = 256;
exports.CLIENT_PROTOCOL_41 = 512;
exports.CLIENT_INTERACTIVE = 1024;
exports.CLIENT_SSL = 2048;
exports.CLIENT_IGNORE_SIGPIPE = 4096;
exports.CLIENT_TRANSACTIONS = 8192;
exports.CLIENT_RESERVED = 16384;
exports.CLIENT_SECURE_CONNECTION = 32768;
exports.CLIENT_MULTI_STATEMENTS = 65536;
exports.CLIENT_MULTI_RESULTS = 131072;
exports.CLIENT_PS_MULTI_RESULTS = 262144;
exports.CLIENT_PLUGIN_AUTH = 524288;
exports.CLIENT_SSL_VERIFY_SERVER_CERT = 1073741824;
exports.CLIENT_REMEMBER_OPTIONS = 2147483648;
});
// node_modules/mysql/lib/protocol/constants/charsets.js
var require_charsets = __commonJS((exports) => {
exports.BIG5_CHINESE_CI = 1;
exports.LATIN2_CZECH_CS = 2;
exports.DEC8_SWEDISH_CI = 3;
exports.CP850_GENERAL_CI = 4;
exports.LATIN1_GERMAN1_CI = 5;
exports.HP8_ENGLISH_CI = 6;
exports.KOI8R_GENERAL_CI = 7;
exports.LATIN1_SWEDISH_CI = 8;
exports.LATIN2_GENERAL_CI = 9;
exports.SWE7_SWEDISH_CI = 10;
exports.ASCII_GENERAL_CI = 11;
exports.UJIS_JAPANESE_CI = 12;
exports.SJIS_JAPANESE_CI = 13;
exports.CP1251_BULGARIAN_CI = 14;
exports.LATIN1_DANISH_CI = 15;
exports.HEBREW_GENERAL_CI = 16;
exports.TIS620_THAI_CI = 18;
exports.EUCKR_KOREAN_CI = 19;
exports.LATIN7_ESTONIAN_CS = 20;
exports.LATIN2_HUNGARIAN_CI = 21;
exports.KOI8U_GENERAL_CI = 22;
exports.CP1251_UKRAINIAN_CI = 23;
exports.GB2312_CHINESE_CI = 24;
exports.GREEK_GENERAL_CI = 25;
exports.CP1250_GENERAL_CI = 26;
exports.LATIN2_CROATIAN_CI = 27;
exports.GBK_CHINESE_CI = 28;
exports.CP1257_LITHUANIAN_CI = 29;
exports.LATIN5_TURKISH_CI = 30;
exports.LATIN1_GERMAN2_CI = 31;
exports.ARMSCII8_GENERAL_CI = 32;
exports.UTF8_GENERAL_CI = 33;
exports.CP1250_CZECH_CS = 34;
exports.UCS2_GENERAL_CI = 35;
exports.CP866_GENERAL_CI = 36;
exports.KEYBCS2_GENERAL_CI = 37;
exports.MACCE_GENERAL_CI = 38;
exports.MACROMAN_GENERAL_CI = 39;
exports.CP852_GENERAL_CI = 40;
exports.LATIN7_GENERAL_CI = 41;
exports.LATIN7_GENERAL_CS = 42;
exports.MACCE_BIN = 43;
exports.CP1250_CROATIAN_CI = 44;
exports.UTF8MB4_GENERAL_CI = 45;
exports.UTF8MB4_BIN = 46;
exports.LATIN1_BIN = 47;
exports.LATIN1_GENERAL_CI = 48;
exports.LATIN1_GENERAL_CS = 49;
exports.CP1251_BIN = 50;
exports.CP1251_GENERAL_CI = 51;
exports.CP1251_GENERAL_CS = 52;
exports.MACROMAN_BIN = 53;
exports.UTF16_GENERAL_CI = 54;
exports.UTF16_BIN = 55;
exports.UTF16LE_GENERAL_CI = 56;
exports.CP1256_GENERAL_CI = 57;
exports.CP1257_BIN = 58;
exports.CP1257_GENERAL_CI = 59;
exports.UTF32_GENERAL_CI = 60;
exports.UTF32_BIN = 61;
exports.UTF16LE_BIN = 62;
exports.BINARY = 63;
exports.ARMSCII8_BIN = 64;
exports.ASCII_BIN = 65;
exports.CP1250_BIN = 66;
exports.CP1256_BIN = 67;
exports.CP866_BIN = 68;
exports.DEC8_BIN = 69;
exports.GREEK_BIN = 70;
exports.HEBREW_BIN = 71;
exports.HP8_BIN = 72;
exports.KEYBCS2_BIN = 73;
exports.KOI8R_BIN = 74;
exports.KOI8U_BIN = 75;
exports.LATIN2_BIN = 77;
exports.LATIN5_BIN = 78;
exports.LATIN7_BIN = 79;
exports.CP850_BIN = 80;
exports.CP852_BIN = 81;
exports.SWE7_BIN = 82;
exports.UTF8_BIN = 83;
exports.BIG5_BIN = 84;
exports.EUCKR_BIN = 85;
exports.GB2312_BIN = 86;
exports.GBK_BIN = 87;
exports.SJIS_BIN = 88;
exports.TIS620_BIN = 89;
exports.UCS2_BIN = 90;
exports.UJIS_BIN = 91;
exports.GEOSTD8_GENERAL_CI = 92;
exports.GEOSTD8_BIN = 93;
exports.LATIN1_SPANISH_CI = 94;
exports.CP932_JAPANESE_CI = 95;
exports.CP932_BIN = 96;
exports.EUCJPMS_JAPANESE_CI = 97;
exports.EUCJPMS_BIN = 98;
exports.CP1250_POLISH_CI = 99;
exports.UTF16_UNICODE_CI = 101;
exports.UTF16_ICELANDIC_CI = 102;
exports.UTF16_LATVIAN_CI = 103;
exports.UTF16_ROMANIAN_CI = 104;
exports.UTF16_SLOVENIAN_CI = 105;
exports.UTF16_POLISH_CI = 106;
exports.UTF16_ESTONIAN_CI = 107;
exports.UTF16_SPANISH_CI = 108;
exports.UTF16_SWEDISH_CI = 109;
exports.UTF16_TURKISH_CI = 110;
exports.UTF16_CZECH_CI = 111;
exports.UTF16_DANISH_CI = 112;
exports.UTF16_LITHUANIAN_CI = 113;
exports.UTF16_SLOVAK_CI = 114;
exports.UTF16_SPANISH2_CI = 115;
exports.UTF16_ROMAN_CI = 116;
exports.UTF16_PERSIAN_CI = 117;
exports.UTF16_ESPERANTO_CI = 118;
exports.UTF16_HUNGARIAN_CI = 119;
exports.UTF16_SINHALA_CI = 120;
exports.UTF16_GERMAN2_CI = 121;
exports.UTF16_CROATIAN_MYSQL561_CI = 122;
exports.UTF16_UNICODE_520_CI = 123;
exports.UTF16_VIETNAMESE_CI = 124;
exports.UCS2_UNICODE_CI = 128;
exports.UCS2_ICELANDIC_CI = 129;
exports.UCS2_LATVIAN_CI = 130;
exports.UCS2_ROMANIAN_CI = 131;
exports.UCS2_SLOVENIAN_CI = 132;
exports.UCS2_POLISH_CI = 133;
exports.UCS2_ESTONIAN_CI = 134;
exports.UCS2_SPANISH_CI = 135;
exports.UCS2_SWEDISH_CI = 136;
exports.UCS2_TURKISH_CI = 137;
exports.UCS2_CZECH_CI = 138;
exports.UCS2_DANISH_CI = 139;
exports.UCS2_LITHUANIAN_CI = 140;
exports.UCS2_SLOVAK_CI = 141;
exports.UCS2_SPANISH2_CI = 142;
exports.UCS2_ROMAN_CI = 143;
exports.UCS2_PERSIAN_CI = 144;
exports.UCS2_ESPERANTO_CI = 145;
exports.UCS2_HUNGARIAN_CI = 146;
exports.UCS2_SINHALA_CI = 147;
exports.UCS2_GERMAN2_CI = 148;
exports.UCS2_CROATIAN_MYSQL561_CI = 149;
exports.UCS2_UNICODE_520_CI = 150;
exports.UCS2_VIETNAMESE_CI = 151;
exports.UCS2_GENERAL_MYSQL500_CI = 159;
exports.UTF32_UNICODE_CI = 160;
exports.UTF32_ICELANDIC_CI = 161;
exports.UTF32_LATVIAN_CI = 162;
exports.UTF32_ROMANIAN_CI = 163;
exports.UTF32_SLOVENIAN_CI = 164;
exports.UTF32_POLISH_CI = 165;
exports.UTF32_ESTONIAN_CI = 166;
exports.UTF32_SPANISH_CI = 167;
exports.UTF32_SWEDISH_CI = 168;
exports.UTF32_TURKISH_CI = 169;
exports.UTF32_CZECH_CI = 170;
exports.UTF32_DANISH_CI = 171;
exports.UTF32_LITHUANIAN_CI = 172;
exports.UTF32_SLOVAK_CI = 173;
exports.UTF32_SPANISH2_CI = 174;
exports.UTF32_ROMAN_CI = 175;
exports.UTF32_PERSIAN_CI = 176;
exports.UTF32_ESPERANTO_CI = 177;
exports.UTF32_HUNGARIAN_CI = 178;
exports.UTF32_SINHALA_CI = 179;
exports.UTF32_GERMAN2_CI = 180;
exports.UTF32_CROATIAN_MYSQL561_CI = 181;
exports.UTF32_UNICODE_520_CI = 182;
exports.UTF32_VIETNAMESE_CI = 183;
exports.UTF8_UNICODE_CI = 192;
exports.UTF8_ICELANDIC_CI = 193;
exports.UTF8_LATVIAN_CI = 194;
exports.UTF8_ROMANIAN_CI = 195;
exports.UTF8_SLOVENIAN_CI = 196;
exports.UTF8_POLISH_CI = 197;
exports.UTF8_ESTONIAN_CI = 198;
exports.UTF8_SPANISH_CI = 199;
exports.UTF8_SWEDISH_CI = 200;
exports.UTF8_TURKISH_CI = 201;
exports.UTF8_CZECH_CI = 202;
exports.UTF8_DANISH_CI = 203;
exports.UTF8_LITHUANIAN_CI = 204;
exports.UTF8_SLOVAK_CI = 205;
exports.UTF8_SPANISH2_CI = 206;
exports.UTF8_ROMAN_CI = 207;
exports.UTF8_PERSIAN_CI = 208;
exports.UTF8_ESPERANTO_CI = 209;
exports.UTF8_HUNGARIAN_CI = 210;
exports.UTF8_SINHALA_CI = 211;
exports.UTF8_GERMAN2_CI = 212;
exports.UTF8_CROATIAN_MYSQL561_CI = 213;
exports.UTF8_UNICODE_520_CI = 214;
exports.UTF8_VIETNAMESE_CI = 215;
exports.UTF8_GENERAL_MYSQL500_CI = 223;
exports.UTF8MB4_UNICODE_CI = 224;
exports.UTF8MB4_ICELANDIC_CI = 225;
exports.UTF8MB4_LATVIAN_CI = 226;
exports.UTF8MB4_ROMANIAN_CI = 227;
exports.UTF8MB4_SLOVENIAN_CI = 228;
exports.UTF8MB4_POLISH_CI = 229;
exports.UTF8MB4_ESTONIAN_CI = 230;
exports.UTF8MB4_SPANISH_CI = 231;
exports.UTF8MB4_SWEDISH_CI = 232;
exports.UTF8MB4_TURKISH_CI = 233;
exports.UTF8MB4_CZECH_CI = 234;
exports.UTF8MB4_DANISH_CI = 235;
exports.UTF8MB4_LITHUANIAN_CI = 236;
exports.UTF8MB4_SLOVAK_CI = 237;
exports.UTF8MB4_SPANISH2_CI = 238;
exports.UTF8MB4_ROMAN_CI = 239;
exports.UTF8MB4_PERSIAN_CI = 240;
exports.UTF8MB4_ESPERANTO_CI = 241;
exports.UTF8MB4_HUNGARIAN_CI = 242;
exports.UTF8MB4_SINHALA_CI = 243;
exports.UTF8MB4_GERMAN2_CI = 244;
exports.UTF8MB4_CROATIAN_MYSQL561_CI = 245;
exports.UTF8MB4_UNICODE_520_CI = 246;
exports.UTF8MB4_VIETNAMESE_CI = 247;
exports.UTF8_GENERAL50_CI = 253;
exports.ARMSCII8 = exports.ARMSCII8_GENERAL_CI;
exports.ASCII = exports.ASCII_GENERAL_CI;
exports.BIG5 = exports.BIG5_CHINESE_CI;
exports.BINARY = exports.BINARY;
exports.CP1250 = exports.CP1250_GENERAL_CI;
exports.CP1251 = exports.CP1251_GENERAL_CI;
exports.CP1256 = exports.CP1256_GENERAL_CI;
exports.CP1257 = exports.CP1257_GENERAL_CI;
exports.CP866 = exports.CP866_GENERAL_CI;
exports.CP850 = exports.CP850_GENERAL_CI;
exports.CP852 = exports.CP852_GENERAL_CI;
exports.CP932 = exports.CP932_JAPANESE_CI;
exports.DEC8 = exports.DEC8_SWEDISH_CI;
exports.EUCJPMS = exports.EUCJPMS_JAPANESE_CI;
exports.EUCKR = exports.EUCKR_KOREAN_CI;
exports.GB2312 = exports.GB2312_CHINESE_CI;
exports.GBK = exports.GBK_CHINESE_CI;
exports.GEOSTD8 = exports.GEOSTD8_GENERAL_CI;
exports.GREEK = exports.GREEK_GENERAL_CI;
exports.HEBREW = exports.HEBREW_GENERAL_CI;
exports.HP8 = exports.HP8_ENGLISH_CI;
exports.KEYBCS2 = exports.KEYBCS2_GENERAL_CI;
exports.KOI8R = exports.KOI8R_GENERAL_CI;
exports.KOI8U = exports.KOI8U_GENERAL_CI;
exports.LATIN1 = exports.LATIN1_SWEDISH_CI;
exports.LATIN2 = exports.LATIN2_GENERAL_CI;
exports.LATIN5 = exports.LATIN5_TURKISH_CI;
exports.LATIN7 = exports.LATIN7_GENERAL_CI;
exports.MACCE = exports.MACCE_GENERAL_CI;
exports.MACROMAN = exports.MACROMAN_GENERAL_CI;
exports.SJIS = exports.SJIS_JAPANESE_CI;
exports.SWE7 = exports.SWE7_SWEDISH_CI;
exports.TIS620 = exports.TIS620_THAI_CI;
exports.UCS2 = exports.UCS2_GENERAL_CI;
exports.UJIS = exports.UJIS_JAPANESE_CI;
exports.UTF16 = exports.UTF16_GENERAL_CI;
exports.UTF16LE = exports.UTF16LE_GENERAL_CI;
exports.UTF8 = exports.UTF8_GENERAL_CI;
exports.UTF8MB4 = exports.UTF8MB4_GENERAL_CI;
exports.UTF32 = exports.UTF32_GENERAL_CI;
});
// node_modules/mysql/lib/protocol/constants/ssl_profiles.js
var require_ssl_profiles = __commonJS((exports) => {
exports["Amazon RDS"] = {
ca: [
"-----BEGIN CERTIFICATE-----\n" + "MIIDQzCCAqygAwIBAgIJAOd1tlfiGoEoMA0GCSqGSIb3DQEBBQUAMHUxCzAJBgNV\n" + "BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdTZWF0dGxlMRMw\n" + "EQYDVQQKEwpBbWF6b24uY29tMQwwCgYDVQQLEwNSRFMxHDAaBgNVBAMTE2F3cy5h\n" + "bWF6b24uY29tL3Jkcy8wHhcNMTAwNDA1MjI0NDMxWhcNMTUwNDA0MjI0NDMxWjB1\n" + "MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHU2Vh\n" + "dHRsZTETMBEGA1UEChMKQW1hem9uLmNvbTEMMAoGA1UECxMDUkRTMRwwGgYDVQQD\n" + "ExNhd3MuYW1hem9uLmNvbS9yZHMvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + "gQDKhXGU7tizxUR5WaFoMTFcxNxa05PEjZaIOEN5ctkWrqYSRov0/nOMoZjqk8bC\n" + "med9vPFoQGD0OTakPs0jVe3wwmR735hyVwmKIPPsGlaBYj1O6llIpZeQVyupNx56\n" + "UzqtiLaDzh1KcmfqP3qP2dInzBfJQKjiRudo1FWnpPt33QIDAQABo4HaMIHXMB0G\n" + "A1UdDgQWBBT/H3x+cqSkR/ePSIinPtc4yWKe3DCBpwYDVR0jBIGfMIGcgBT/H3x+\n" + "cqSkR/ePSIinPtc4yWKe3KF5pHcwdTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh\n" + "c2hpbmd0b24xEDAOBgNVBAcTB1NlYXR0bGUxEzARBgNVBAoTCkFtYXpvbi5jb20x\n" + "DDAKBgNVBAsTA1JEUzEcMBoGA1UEAxMTYXdzLmFtYXpvbi5jb20vcmRzL4IJAOd1\n" + "tlfiGoEoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAvguZy/BDT66x\n" + "GfgnJlyQwnFSeVLQm9u/FIvz4huGjbq9dqnD6h/Gm56QPFdyMEyDiZWaqY6V08lY\n" + "LTBNb4kcIc9/6pc0/ojKciP5QJRm6OiZ4vgG05nF4fYjhU7WClUx7cxq1fKjNc2J\n" + "UCmmYqgiVkAGWRETVo+byOSDZ4swb10=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID9DCCAtygAwIBAgIBQjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUwOTExMzFaFw0y\n" + "MDAzMDUwOTExMzFaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEbMBkGA1UEAwwSQW1hem9uIFJE\n" + "UyBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuD8nrZ8V\n" + "u+VA8yVlUipCZIKPTDcOILYpUe8Tct0YeQQr0uyl018StdBsa3CjBgvwpDRq1HgF\n" + "Ji2N3+39+shCNspQeE6aYU+BHXhKhIIStt3r7gl/4NqYiDDMWKHxHq0nsGDFfArf\n" + "AOcjZdJagOMqb3fF46flc8k2E7THTm9Sz4L7RY1WdABMuurpICLFE3oHcGdapOb9\n" + "T53pQR+xpHW9atkcf3pf7gbO0rlKVSIoUenBlZipUlp1VZl/OD/E+TtRhDDNdI2J\n" + "P/DSMM3aEsq6ZQkfbz/Ilml+Lx3tJYXUDmp+ZjzMPLk/+3beT8EhrwtcG3VPpvwp\n" + "BIOqsqVVTvw/CwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw\n" + "AwEB/zAdBgNVHQ4EFgQUTgLurD72FchM7Sz1BcGPnIQISYMwHwYDVR0jBBgwFoAU\n" + "TgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQEFBQADggEBAHZcgIio8pAm\n" + "MjHD5cl6wKjXxScXKtXygWH2BoDMYBJF9yfyKO2jEFxYKbHePpnXB1R04zJSWAw5\n" + "2EUuDI1pSBh9BA82/5PkuNlNeSTB3dXDD2PEPdzVWbSKvUB8ZdooV+2vngL0Zm4r\n" + "47QPyd18yPHrRIbtBtHR/6CwKevLZ394zgExqhnekYKIqqEX41xsUV0Gm6x4vpjf\n" + "2u6O/+YE2U+qyyxHE5Wd5oqde0oo9UUpFETJPVb6Q2cEeQib8PBAyi0i6KnF+kIV\n" + "A9dY7IHSubtCK/i8wxMVqfd5GtbA8mmpeJFwnDvm9rBEsHybl08qlax9syEwsUYr\n" + "/40NawZfTUU=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD\n" + "VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\n" + "MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\n" + "em9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkw\n" + "ODIyMTcwODUwWhcNMjQwODIyMTcwODUwWjCBjzELMAkGA1UEBhMCVVMxEDAOBgNV\n" + "BAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFtYXpv\n" + "biBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIDAeBgNV\n" + "BAMMF0FtYXpvbiBSRFMgUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" + "AQ8AMIIBCgKCAQEArXnF/E6/Qh+ku3hQTSKPMhQQlCpoWvnIthzX6MK3p5a0eXKZ\n" + "oWIjYcNNG6UwJjp4fUXl6glp53Jobn+tWNX88dNH2n8DVbppSwScVE2LpuL+94vY\n" + "0EYE/XxN7svKea8YvlrqkUBKyxLxTjh+U/KrGOaHxz9v0l6ZNlDbuaZw3qIWdD/I\n" + "6aNbGeRUVtpM6P+bWIoxVl/caQylQS6CEYUk+CpVyJSkopwJlzXT07tMoDL5WgX9\n" + "O08KVgDNz9qP/IGtAcRduRcNioH3E9v981QO1zt/Gpb2f8NqAjUUCUZzOnij6mx9\n" + "McZ+9cWX88CRzR0vQODWuZscgI08NvM69Fn2SQIDAQABo2MwYTAOBgNVHQ8BAf8E\n" + "BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUc19g2LzLA5j0Kxc0LjZa\n" + "pmD/vB8wHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJKoZIhvcN\n" + "AQELBQADggEBAHAG7WTmyjzPRIM85rVj+fWHsLIvqpw6DObIjMWokpliCeMINZFV\n" + "ynfgBKsf1ExwbvJNzYFXW6dihnguDG9VMPpi2up/ctQTN8tm9nDKOy08uNZoofMc\n" + "NUZxKCEkVKZv+IL4oHoeayt8egtv3ujJM6V14AstMQ6SwvwvA93EP/Ug2e4WAXHu\n" + "cbI1NAbUgVDqp+DRdfvZkgYKryjTWd/0+1fS8X1bBZVWzl7eirNVnHbSH2ZDpNuY\n" + "0SBd8dj5F6ld3t58ydZbrTHze7JJOd8ijySAp4/kiu9UfZWuTPABzDa/DSdz9Dk/\n" + "zPW4CXXvhLmE02TA9/HeCw3KEHIwicNuEfw=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEATCCAumgAwIBAgIBRDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMDZaFw0y\n" + "MDAzMDUyMjAzMDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\n" + "UyBhcC1ub3J0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBAMmM2B4PfTXCZjbZMWiDPyxvk/eeNwIRJAhfzesiGUiLozX6CRy3rwC1ZOPV\n" + "AcQf0LB+O8wY88C/cV+d4Q2nBDmnk+Vx7o2MyMh343r5rR3Na+4izd89tkQVt0WW\n" + "vO21KRH5i8EuBjinboOwAwu6IJ+HyiQiM0VjgjrmEr/YzFPL8MgHD/YUHehqjACn\n" + "C0+B7/gu7W4qJzBL2DOf7ub2qszGtwPE+qQzkCRDwE1A4AJmVE++/FLH2Zx78Egg\n" + "fV1sUxPtYgjGH76VyyO6GNKM6rAUMD/q5mnPASQVIXgKbupr618bnH+SWHFjBqZq\n" + "HvDGPMtiiWII41EmGUypyt5AbysCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\n" + "A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIiKM0Q6n1K4EmLxs3ZXxINbwEwR\n" + "MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQBezGbE9Rw/k2e25iGjj5n8r+M3dlye8ORfCE/dijHtxqAKasXHgKX8I9Tw\n" + "JkBiGWiuzqn7gO5MJ0nMMro1+gq29qjZnYX1pDHPgsRjUX8R+juRhgJ3JSHijRbf\n" + "4qNJrnwga7pj94MhcLq9u0f6dxH6dXbyMv21T4TZMTmcFduf1KgaiVx1PEyJjC6r\n" + "M+Ru+A0eM+jJ7uCjUoZKcpX8xkj4nmSnz9NMPog3wdOSB9cAW7XIc5mHa656wr7I\n" + "WJxVcYNHTXIjCcng2zMKd1aCcl2KSFfy56sRfT7J5Wp69QSr+jq8KM55gw8uqAwi\n" + "VPrXn2899T1rcTtFYFP16WXjGuc0\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEATCCAumgAwIBAgIBTDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTExMDYwMDA1NDZaFw0y\n" + "MDAzMDUwMDA1NDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\n" + "UyBhcC1ub3J0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBAKSwd+RVUzTRH0FgnbwoTK8TMm/zMT4+2BvALpAUe6YXbkisg2goycWuuWLg\n" + "jOpFBB3GtyvXZnkqi7MkDWUmj1a2kf8l2oLyoaZ+Hm9x/sV+IJzOqPvj1XVUGjP6\n" + "yYYnPJmUYqvZeI7fEkIGdFkP2m4/sgsSGsFvpD9FK1bL1Kx2UDpYX0kHTtr18Zm/\n" + "1oN6irqWALSmXMDydb8hE0FB2A1VFyeKE6PnoDj/Y5cPHwPPdEi6/3gkDkSaOG30\n" + "rWeQfL3pOcKqzbHaWTxMphd0DSL/quZ64Nr+Ly65Q5PRcTrtr55ekOUziuqXwk+o\n" + "9QpACMwcJ7ROqOznZTqTzSFVXFECAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\n" + "A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFM6Nox/QWbhzWVvzoJ/y0kGpNPK+\n" + "MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQCTkWBqNvyRf3Y/W21DwFx3oT/AIWrHt0BdGZO34tavummXemTH9LZ/mqv9\n" + "aljt6ZuDtf5DEQjdsAwXMsyo03ffnP7doWm8iaF1+Mui77ot0TmTsP/deyGwukvJ\n" + "tkxX8bZjDh+EaNauWKr+CYnniNxCQLfFtXYJsfOdVBzK3xNL+Z3ucOQRhr2helWc\n" + "CDQgwfhP1+3pRVKqHvWCPC4R3fT7RZHuRmZ38kndv476GxRntejh+ePffif78bFI\n" + "3rIZCPBGobrrUMycafSbyXteoGca/kA+/IqrAPlk0pWQ4aEL0yTWN2h2dnjoD7oX\n" + "byIuL/g9AGRh97+ssn7D6bDRPTbW\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEATCCAumgAwIBAgIBRTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMTlaFw0y\n" + "MDAzMDUyMjAzMTlaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\n" + "UyBhcC1zb3V0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBANaXElmSEYt/UtxHFsARFhSUahTf1KNJzR0Dmay6hqOXQuRVbKRwPd19u5vx\n" + "DdF1sLT7D69IK3VDnUiQScaCv2Dpu9foZt+rLx+cpx1qiQd1UHrvqq8xPzQOqCdC\n" + "RFStq6yVYZ69yfpfoI67AjclMOjl2Vph3ftVnqP0IgVKZdzeC7fd+umGgR9xY0Qr\n" + "Ubhd/lWdsbNvzK3f1TPWcfIKQnpvSt85PIEDJir6/nuJUKMtmJRwTymJf0i+JZ4x\n" + "7dJa341p2kHKcHMgOPW7nJQklGBA70ytjUV6/qebS3yIugr/28mwReflg3TJzVDl\n" + "EOvi6pqbqNbkMuEwGDCmEQIVqgkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\n" + "A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAu93/4k5xbWOsgdCdn+/KdiRuit\n" + "MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQBlcjSyscpPjf5+MgzMuAsCxByqUt+WFspwcMCpwdaBeHOPSQrXNqX2Sk6P\n" + "kth6oCivA64trWo8tFMvPYlUA1FYVD5WpN0kCK+P5pD4KHlaDsXhuhClJzp/OP8t\n" + "pOyUr5109RHLxqoKB5J5m1XA7rgcFjnMxwBSWFe3/4uMk/+4T53YfCVXuc6QV3i7\n" + "I/2LAJwFf//pTtt6fZenYfCsahnr2nvrNRNyAxcfvGZ/4Opn/mJtR6R/AjvQZHiR\n" + "bkRNKF2GW0ueK5W4FkZVZVhhX9xh1Aj2Ollb+lbOqADaVj+AT3PoJPZ3MPQHKCXm\n" + "xwG0LOLlRr/TfD6li1AfOVTAJXv9\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEATCCAumgAwIBAgIBRjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMjRaFw0y\n" + "MDAzMDUyMjAzMjRaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\n" + "UyBhcC1zb3V0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBAJqBAJutz69hFOh3BtLHZTbwE8eejGGKayn9hu98YMDPzWzGXWCmW+ZYWELA\n" + "cY3cNWNF8K4FqKXFr2ssorBYim1UtYFX8yhydT2hMD5zgQ2sCGUpuidijuPA6zaq\n" + "Z3tdhVR94f0q8mpwpv2zqR9PcqaGDx2VR1x773FupRPRo7mEW1vC3IptHCQlP/zE\n" + "7jQiLl28bDIH2567xg7e7E9WnZToRnhlYdTaDaJsHTzi5mwILi4cihSok7Shv/ME\n" + "hnukvxeSPUpaVtFaBhfBqq055ePq9I+Ns4KGreTKMhU0O9fkkaBaBmPaFgmeX/XO\n" + "n2AX7gMouo3mtv34iDTZ0h6YCGkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\n" + "A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIlQnY0KHYWn1jYumSdJYfwj/Nfw\n" + "MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQA0wVU6/l41cTzHc4azc4CDYY2Wd90DFWiH9C/mw0SgToYfCJ/5Cfi0NT/Y\n" + "PRnk3GchychCJgoPA/k9d0//IhYEAIiIDjyFVgjbTkKV3sh4RbdldKVOUB9kumz/\n" + "ZpShplsGt3z4QQiVnKfrAgqxWDjR0I0pQKkxXa6Sjkicos9LQxVtJ0XA4ieG1E7z\n" + "zJr+6t80wmzxvkInSaWP3xNJK9azVRTrgQZQlvkbpDbExl4mNTG66VD3bAp6t3Wa\n" + "B49//uDdfZmPkqqbX+hsxp160OH0rxJppwO3Bh869PkDnaPEd/Pxw7PawC+li0gi\n" + "NRV8iCEx85aFxcyOhqn0WZOasxee\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/zCCAuegAwIBAgIBRzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzFaFw0y\n" + "MDAzMDUyMjAzMzFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\n" + "UyBldS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\n" + "AQDFtP2dhSLuaPOI4ZrrPWsK4OY9ocQBp3yApH1KJYmI9wpQKZG/KCH2E6Oo7JAw\n" + "QORU519r033T+FO2Z7pFPlmz1yrxGXyHpJs8ySx3Yo5S8ncDCdZJCLmtPiq/hahg\n" + "5/0ffexMFUCQaYicFZsrJ/cStdxUV+tSw2JQLD7UxS9J97LQWUPyyG+ZrjYVTVq+\n" + "zudnFmNSe4QoecXMhAFTGJFQXxP7nhSL9Ao5FGgdXy7/JWeWdQIAj8ku6cBDKPa6\n" + "Y6kP+ak+In+Lye8z9qsCD/afUozfWjPR2aA4JoIZVF8dNRShIMo8l0XfgfM2q0+n\n" + "ApZWZ+BjhIO5XuoUgHS3D2YFAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\n" + "HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRm4GsWIA/M6q+tK8WGHWDGh2gcyTAf\n" + "BgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOC\n" + "AQEAHpMmeVQNqcxgfQdbDIi5UIy+E7zZykmtAygN1XQrvga9nXTis4kOTN6g5/+g\n" + "HCx7jIXeNJzAbvg8XFqBN84Quqgpl/tQkbpco9Jh1HDs558D5NnZQxNqH5qXQ3Mm\n" + "uPgCw0pYcPOa7bhs07i+MdVwPBsX27CFDtsgAIru8HvKxY1oTZrWnyIRo93tt/pk\n" + "WuItVMVHjaQZVfTCow0aDUbte6Vlw82KjUFq+n2NMSCJDiDKsDDHT6BJc4AJHIq3\n" + "/4Z52MSC9KMr0yAaaoWfW/yMEj9LliQauAgwVjArF4q78rxpfKTG9Rfd8U1BZANP\n" + "7FrFMN0ThjfA1IvmOYcgskY5bQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBSDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzVaFw0y\n" + "MDAzMDUyMjAzMzVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyBldS13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx\n" + "PdbqQ0HKRj79Pmocxvjc+P6i4Ux24kgFIl+ckiir1vzkmesc3a58gjrMlCksEObt\n" + "Yihs5IhzEq1ePT0gbfS9GYFp34Uj/MtPwlrfCBWG4d2TcrsKRHr1/EXUYhWqmdrb\n" + "RhX8XqoRhVkbF/auzFSBhTzcGGvZpQ2KIaxRcQfcXlMVhj/pxxAjh8U4F350Fb0h\n" + "nX1jw4/KvEreBL0Xb2lnlGTkwVxaKGSgXEnOgIyOFdOQc61vdome0+eeZsP4jqeR\n" + "TGYJA9izJsRbe2YJxHuazD+548hsPlM3vFzKKEVURCha466rAaYAHy3rKur3HYQx\n" + "Yt+SoKcEz9PXuSGj96ejAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBTebg//h2oeXbZjQ4uuoiuLYzuiPDAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\n" + "TikPaGeZasTPw+4RBemlsyPAjtFFQLo7ddaFdORLgdEysVf8aBqndvbA6MT/v4lj\n" + "GtEtUdF59ZcbWOrVm+fBZ2h/jYJ59dYF/xzb09nyRbdMSzB9+mkSsnOMqluq5y8o\n" + "DY/PfP2vGhEg/2ZncRC7nlQU1Dm8F4lFWEiQ2fi7O1cW852Vmbq61RIfcYsH/9Ma\n" + "kpgk10VZ75b8m3UhmpZ/2uRY+JEHImH5WpcTJ7wNiPNJsciZMznGtrgOnPzYco8L\n" + "cDleOASIZifNMQi9PKOJKvi0ITz0B/imr8KBsW0YjZVJ54HMa7W1lwugSM7aMAs+\n" + "E3Sd5lS+SHwWaOCHwhOEVA==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBSTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDBaFw0y\n" + "MDAzMDUyMjAzNDBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyBzYS1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCU\n" + "X4OBnQ5xA6TLJAiFEI6l7bUWjoVJBa/VbMdCCSs2i2dOKmqUaXu2ix2zcPILj3lZ\n" + "GMk3d/2zvTK/cKhcFrewHUBamTeVHdEmynhMQamqNmkM4ptYzFcvEUw1TGxHT4pV\n" + "Q6gSN7+/AJewQvyHexHo8D0+LDN0/Wa9mRm4ixCYH2CyYYJNKaZt9+EZfNu+PPS4\n" + "8iB0TWH0DgQkbWMBfCRgolLLitAZklZ4dvdlEBS7evN1/7ttBxUK6SvkeeSx3zBl\n" + "ww3BlXqc3bvTQL0A+RRysaVyFbvtp9domFaDKZCpMmDFAN/ntx215xmQdrSt+K3F\n" + "cXdGQYHx5q410CAclGnbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBT6iVWnm/uakS+tEX2mzIfw+8JL0zAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\n" + "FmDD+QuDklXn2EgShwQxV13+txPRuVdOSrutHhoCgMwFWCMtPPtBAKs6KPY7Guvw\n" + "DpJoZSehDiOfsgMirjOWjvfkeWSNvKfjWTVneX7pZD9W5WPnsDBvTbCGezm+v87z\n" + "b+ZM2ZMo98m/wkMcIEAgdSKilR2fuw8rLkAjhYFfs0A7tDgZ9noKwgHvoE4dsrI0\n" + "KZYco6DlP/brASfHTPa2puBLN9McK3v+h0JaSqqm5Ro2Bh56tZkQh8AWy/miuDuK\n" + "3+hNEVdxosxlkM1TPa1DGj0EzzK0yoeerXuH2HX7LlCrrxf6/wdKnjR12PMrLQ4A\n" + "pCqkcWw894z6bV9MAvKe6A==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMTU0MDRaFw0y\n" + "MDAzMDUyMTU0MDRaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyB1cy1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDI\n" + "UIuwh8NusKHk1SqPXcP7OqxY3S/M2ZyQWD3w7Bfihpyyy/fc1w0/suIpX3kbMhAV\n" + "2ESwged2/2zSx4pVnjp/493r4luhSqQYzru78TuPt9bhJIJ51WXunZW2SWkisSaf\n" + "USYUzVN9ezR/bjXTumSUQaLIouJt3OHLX49s+3NAbUyOI8EdvgBQWD68H1epsC0n\n" + "CI5s+pIktyOZ59c4DCDLQcXErQ+tNbDC++oct1ANd/q8p9URonYwGCGOBy7sbCYq\n" + "9eVHh1Iy2M+SNXddVOGw5EuruvHoCIQyOz5Lz4zSuZA9dRbrfztNOpezCNYu6NKM\n" + "n+hzcvdiyxv77uNm8EaxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBQSQG3TmMe6Sa3KufaPBa72v4QFDzAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\n" + "L/mOZfB3187xTmjOHMqN2G2oSKHBKiQLM9uv8+97qT+XR+TVsBT6b3yoPpMAGhHA\n" + "Pc7nxAF5gPpuzatx0OTLPcmYucFmfqT/1qA5WlgCnMNtczyNMH97lKFTNV7Njtek\n" + "jWEzAEQSyEWrkNpNlC4j6kMYyPzVXQeXUeZTgJ9FNnVZqmvfjip2N22tawMjrCn5\n" + "7KN/zN65EwY2oO9XsaTwwWmBu3NrDdMbzJnbxoWcFWj4RBwanR1XjQOVNhDwmCOl\n" + "/1Et13b8CPyj69PC8BOVU6cfTSx8WUVy0qvYOKHNY9Bqa5BDnIL3IVmUkeTlM1mt\n" + "enRpyBj+Bk9rh/ICdiRKmA==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBSjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDVaFw0y\n" + "MDAzMDUyMjAzNDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyB1cy13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDE\n" + "Dhw+uw/ycaiIhhyu2pXFRimq0DlB8cNtIe8hdqndH8TV/TFrljNgR8QdzOgZtZ9C\n" + "zzQ2GRpInN/qJF6slEd6wO+6TaDBQkPY+07TXNt52POFUhdVkhJXHpE2BS7Xn6J7\n" + "7RFAOeG1IZmc2DDt+sR1BgXzUqHslQGfFYNS0/MBO4P+ya6W7IhruB1qfa4HiYQS\n" + "dbe4MvGWnv0UzwAqdR7OF8+8/5c58YXZIXCO9riYF2ql6KNSL5cyDPcYK5VK0+Q9\n" + "VI6vuJHSMYcF7wLePw8jtBktqAFE/wbdZiIHhZvNyiNWPPNTGUmQbaJ+TzQEHDs5\n" + "8en+/W7JKnPyBOkxxENbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBS0nw/tFR9bCjgqWTPJkyy4oOD8bzAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\n" + "CXGAY3feAak6lHdqj6+YWjy6yyUnLK37bRxZDsyDVXrPRQaXRzPTzx79jvDwEb/H\n" + "Q/bdQ7zQRWqJcbivQlwhuPJ4kWPUZgSt3JUUuqkMsDzsvj/bwIjlrEFDOdHGh0mi\n" + "eVIngFEjUXjMh+5aHPEF9BlQnB8LfVtKj18e15UDTXFa+xJPFxUR7wDzCfo4WI1m\n" + "sUMG4q1FkGAZgsoyFPZfF8IVvgCuGdR8z30VWKklFxttlK0eGLlPAyIO0CQxPQlo\n" + "saNJrHf4tLOgZIWk+LpDhNd9Et5EzvJ3aURUsKY4pISPPF5WdvM9OE59bERwUErd\n" + "nuOuQWQeeadMceZnauRzJQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBSzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNTBaFw0y\n" + "MDAzMDUyMjAzNTBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyB1cy13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM\n" + "H58SR48U6jyERC1vYTnub34smf5EQVXyzaTmspWGWGzT31NLNZGSDFaa7yef9kdO\n" + "mzJsgebR5tXq6LdwlIoWkKYQ7ycUaadtVKVYdI40QcI3cHn0qLFlg2iBXmWp/B+i\n" + "Z34VuVlCh31Uj5WmhaBoz8t/GRqh1V/aCsf3Wc6jCezH3QfuCjBpzxdOOHN6Ie2v\n" + "xX09O5qmZTvMoRBAvPkxdaPg/Mi7fxueWTbEVk78kuFbF1jHYw8U1BLILIAhcqlq\n" + "x4u8nl73t3O3l/soNUcIwUDK0/S+Kfqhwn9yQyPlhb4Wy3pfnZLJdkyHldktnQav\n" + "9TB9u7KH5Lk0aAYslMLxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBT8roM4lRnlFHWMPWRz0zkwFZog1jAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\n" + "JwrxwgwmPtcdaU7O7WDdYa4hprpOMamI49NDzmE0s10oGrqmLwZygcWU0jT+fJ+Y\n" + "pJe1w0CVfKaeLYNsOBVW3X4ZPmffYfWBheZiaiEflq/P6t7/Eg81gaKYnZ/x1Dfa\n" + "sUYkzPvCkXe9wEz5zdUTOCptDt89rBR9CstL9vE7WYUgiVVmBJffWbHQLtfjv6OF\n" + "NMb0QME981kGRzc2WhgP71YS2hHd1kXtsoYP1yTu4vThSKsoN4bkiHsaC1cRkLoy\n" + "0fFA4wpB3WloMEvCDaUvvH1LZlBXTNlwi9KtcwD4tDxkkBt4tQczKLGpQ/nF/W9n\n" + "8YDWk3IIc1sd0bkZqoau2Q==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/TCCAuWgAwIBAgIBTTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA1MDMyMTI5MjJaFw0y\n" + "MDAzMDUyMTI5MjJaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UEAwwYQW1hem9uIFJE\n" + "UyBhcC1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" + "06eWGLE0TeqL9kyWOLkS8q0fXO97z+xyBV3DKSB2lg2GkgBz3B98MkmkeB0SZy3G\n" + "Ce4uCpCPbFKiFEdiUclOlhZsrBuCeaimxLM3Ig2wuenElO/7TqgaYHYUbT3d+VQW\n" + "GUbLn5GRZJZe1OAClYdOWm7A1CKpuo+cVV1vxbY2nGUQSJPpVn2sT9gnwvjdE60U\n" + "JGYU/RLCTm8zmZBvlWaNIeKDnreIc4rKn6gUnJ2cQn1ryCVleEeyc3xjYDSrjgdn\n" + "FLYGcp9mphqVT0byeQMOk0c7RHpxrCSA0V5V6/CreFV2LteK50qcDQzDSM18vWP/\n" + "p09FoN8O7QrtOeZJzH/lmwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU2i83QHuEl/d0keXF+69HNJph7cMwHwYD\n" + "VR0jBBgwFoAUTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQELBQADggEB\n" + "ACqnH2VjApoDqoSQOky52QBwsGaj+xWYHW5Gm7EvCqvQuhWMkeBuD6YJmMvNyA9G\n" + "I2lh6/o+sUk/RIsbYbxPRdhNPTOgDR9zsNRw6qxaHztq/CEC+mxDCLa3O1hHBaDV\n" + "BmB3nCZb93BvO0EQSEk7aytKq/f+sjyxqOcs385gintdHGU9uM7gTZHnU9vByJsm\n" + "/TL07Miq67X0NlhIoo3jAk+xHaeKJdxdKATQp0448P5cY20q4b8aMk1twcNaMvCP\n" + "dG4M5doaoUA8OQ/0ukLLae/LBxLeTw04q1/a2SyFaVUX2Twbb1S3xVWwLA8vsyGr\n" + "igXx7B5GgP+IHb6DTjPJAi0=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBTjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA4MTExOTU4NDVaFw0y\n" + "MDAzMDUxOTU4NDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyB1cy1lYXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp\n" + "WnnUX7wM0zzstccX+4iXKJa9GR0a2PpvB1paEX4QRCgfhEdQWDaSqyrWNgdVCKkt\n" + "1aQkWu5j6VAC2XIG7kKoonm1ZdBVyBLqW5lXNywlaiU9yhJkwo8BR+/OqgE+PLt/\n" + "EO1mlN0PQudja/XkExCXTO29TG2j7F/O7hox6vTyHNHc0H88zS21uPuBE+jivViS\n" + "yzj/BkyoQ85hnkues3f9R6gCGdc+J51JbZnmgzUkvXjAEuKhAm9JksVOxcOKUYe5\n" + "ERhn0U9zjzpfbAITIkul97VVa5IxskFFTHIPJbvRKHJkiF6wTJww/tc9wm+fSCJ1\n" + "+DbQTGZgkQ3bJrqRN29/AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBSAHQzUYYZbepwKEMvGdHp8wzHnfDAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\n" + "MbaEzSYZ+aZeTBxf8yi0ta8K4RdwEJsEmP6IhFFQHYUtva2Cynl4Q9tZg3RMsybT\n" + "9mlnSQQlbN/wqIIXbkrcgFcHoXG9Odm/bDtUwwwDaiEhXVfeQom3G77QHOWMTCGK\n" + "qadwuh5msrb17JdXZoXr4PYHDKP7j0ONfAyFNER2+uecblHfRSpVq5UeF3L6ZJb8\n" + "fSw/GtAV6an+/0r+Qm+PiI2H5XuZ4GmRJYnGMhqWhBYrY7p3jtVnKcsh39wgfUnW\n" + "AvZEZG/yhFyAZW0Essa39LiL5VSq14Y1DOj0wgnhSY/9WHxaAo1HB1T9OeZknYbD\n" + "fl/EGSZ0TEvZkENrXcPlVA==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/zCCAuegAwIBAgIBTzANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA5MTUwMDEwMTFaFw0y\n" + "MDAzMDUwMDEwMTFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\n" + "UyBjYS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\n" + "AQCZYI/iQ6DrS3ny3t1EwX1wAD+3LMgh7Fd01EW5LIuaK2kYIIQpsVKhxLCit/V5\n" + "AGc/1qiJS1Qz9ODLTh0Na6bZW6EakRzuHJLe32KJtoFYPC7Z09UqzXrpA/XL+1hM\n" + "P0ZmCWsU7Nn/EmvfBp9zX3dZp6P6ATrvDuYaVFr+SA7aT3FXpBroqBS1fyzUPs+W\n" + "c6zTR6+yc4zkHX0XQxC5RH6xjgpeRkoOajA/sNo7AQF7KlWmKHbdVF44cvvAhRKZ\n" + "XaoVs/C4GjkaAEPTCbopYdhzg+KLx9eB2BQnYLRrIOQZtRfbQI2Nbj7p3VsRuOW1\n" + "tlcks2w1Gb0YC6w6SuIMFkl1AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\n" + "HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBToYWxE1lawl6Ks6NsvpbHQ3GKEtzAf\n" + "BgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOC\n" + "AQEAG/8tQ0ooi3hoQpa5EJz0/E5VYBsAz3YxA2HoIonn0jJyG16bzB4yZt4vNQMA\n" + "KsNlQ1uwDWYL1nz63axieUUFIxqxl1KmwfhsmLgZ0Hd2mnTPIl2Hw3uj5+wdgGBg\n" + "agnAZ0bajsBYgD2VGQbqjdk2Qn7Fjy3LEWIvGZx4KyZ99OJ2QxB7JOPdauURAtWA\n" + "DKYkP4LLJxtj07DSzG8kuRWb9B47uqUD+eKDIyjfjbnzGtd9HqqzYFau7EX3HVD9\n" + "9Qhnjl7bTZ6YfAEZ3nH2t3Vc0z76XfGh47rd0pNRhMV+xpok75asKf/lNh5mcUrr\n" + "VKwflyMkQpSbDCmcdJ90N2xEXQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBUDANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjEwMTAxNzQ0NDJaFw0y\n" + "MDAzMDUxNzQ0NDJaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyBldS13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO\n" + "cttLJfubB4XMMIGWNfJISkIdCMGJyOzLiMJaiWB5GYoXKhEl7YGotpy0qklwW3BQ\n" + "a0fmVdcCLX+dIuVQ9iFK+ZcK7zwm7HtdDTCHOCKeOh2IcnU4c/VIokFi6Gn8udM6\n" + "N/Zi5M5OGpVwLVALQU7Yctsn3c95el6MdVx6mJiIPVu7tCVZn88Z2koBQ2gq9P4O\n" + "Sb249SHFqOb03lYDsaqy1NDsznEOhaRBw7DPJFpvmw1lA3/Y6qrExRI06H2VYR2i\n" + "7qxwDV50N58fs10n7Ye1IOxTVJsgEA7X6EkRRXqYaM39Z76R894548WHfwXWjUsi\n" + "MEX0RS0/t1GmnUQjvevDAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBQBxmcuRSxERYCtNnSr5xNfySokHjAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\n" + "UyCUQjsF3nUAABjfEZmpksTuUo07aT3KGYt+EMMFdejnBQ0+2lJJFGtT+CDAk1SD\n" + "RSgfEBon5vvKEtlnTf9a3pv8WXOAkhfxnryr9FH6NiB8obISHNQNPHn0ljT2/T+I\n" + "Y6ytfRvKHa0cu3V0NXbJm2B4KEOt4QCDiFxUIX9z6eB4Kditwu05OgQh6KcogOiP\n" + "JesWxBMXXGoDC1rIYTFO7szwDyOHlCcVXJDNsTJhc32oDWYdeIbW7o/5I+aQsrXZ\n" + "C96HykZcgWzz6sElrQxUaT3IoMw/5nmw4uWKKnZnxgI9bY4fpQwMeBZ96iHfFxvH\n" + "mqfEEuC7uUoPofXdBp2ObQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECjCCAvKgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZMxCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSQwIgYDVQQDDBtBbWF6b24gUkRTIEdvdkNsb3VkIFJvb3QgQ0EwHhcNMTcwNTE5\n" + "MjIzMTE5WhcNMjIwNTE4MTIwMDAwWjCBkzELMAkGA1UEBhMCVVMxEzARBgNVBAgM\n" + "Cldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBX\n" + "ZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJDAiBgNVBAMM\n" + "G0FtYXpvbiBSRFMgdXMtZ292LXdlc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\n" + "ggEPADCCAQoCggEBAM8YZLKAzzOdNnoi7Klih26Zkj+OCpDfwx4ZYB6f8L8UoQi5\n" + "8z9ZtIwMjiJ/kO08P1yl4gfc7YZcNFvhGruQZNat3YNpxwUpQcr4mszjuffbL4uz\n" + "+/8FBxALdqCVOJ5Q0EVSfz3d9Bd1pUPL7ARtSpy7bn/tUPyQeI+lODYO906C0TQ3\n" + "b9bjOsgAdBKkHfjLdsknsOZYYIzYWOJyFJJa0B11XjDUNBy/3IuC0KvDl6At0V5b\n" + "8M6cWcKhte2hgjwTYepV+/GTadeube1z5z6mWsN5arOAQUtYDLH6Aztq9mCJzLHm\n" + "RccBugnGl3fRLJ2VjioN8PoGoN9l9hFBy5fnFgsCAwEAAaNmMGQwDgYDVR0PAQH/\n" + "BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEG7+br8KkvwPd5g\n" + "71Rvh2stclJbMB8GA1UdIwQYMBaAFEkQz6S4NS5lOYKcDjBSuCcVpdzjMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQBMA327u5ABmhX+aPxljoIbxnydmAFWxW6wNp5+rZrvPig8\n" + "zDRqGQWWr7wWOIjfcWugSElYtf/m9KZHG/Z6+NG7nAoUrdcd1h/IQhb+lFQ2b5g9\n" + "sVzQv/H2JNkfZA8fL/Ko/Tm/f9tcqe0zrGCtT+5u0Nvz35Wl8CEUKLloS5xEb3k5\n" + "7D9IhG3fsE3vHWlWrGCk1cKry3j12wdPG5cUsug0vt34u6rdhP+FsM0tHI15Kjch\n" + "RuUCvyQecy2ZFNAa3jmd5ycNdL63RWe8oayRBpQBxPPCbHfILxGZEdJbCH9aJ2D/\n" + "l8oHIDnvOLdv7/cBjyYuvmprgPtu3QEkbre5Hln/\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIID/DCCAuSgAwIBAgIBUTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzA4MjUyMTM5MjZaFw0y\n" + "MDAzMDUyMTM5MjZaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\n" + "UyBldS13ZXN0LTMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+\n" + "xmlEC/3a4cJH+UPwXCE02lC7Zq5NHd0dn6peMeLN8agb6jW4VfSY0NydjRj2DJZ8\n" + "K7wV6sub5NUGT1NuFmvSmdbNR2T59KX0p2dVvxmXHHtIpQ9Y8Aq3ZfhmC5q5Bqgw\n" + "tMA1xayDi7HmoPX3R8kk9ktAZQf6lDeksCvok8idjTu9tiSpDiMwds5BjMsWfyjZ\n" + "d13PTGGNHYVdP692BSyXzSP1Vj84nJKnciW8tAqwIiadreJt5oXyrCXi8ekUMs80\n" + "cUTuGm3aA3Q7PB5ljJMPqz0eVddaiIvmTJ9O3Ez3Du/HpImyMzXjkFaf+oNXf/Hx\n" + "/EW5jCRR6vEiXJcDRDS7AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\n" + "Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRZ9mRtS5fHk3ZKhG20Oack4cAqMTAfBgNV\n" + "HSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\n" + "F/u/9L6ExQwD73F/bhCw7PWcwwqsK1mypIdrjdIsu0JSgwWwGCXmrIspA3n3Dqxq\n" + "sMhAJD88s9Em7337t+naar2VyLO63MGwjj+vA4mtvQRKq8ScIpiEc7xN6g8HUMsd\n" + "gPG9lBGfNjuAZsrGJflrko4HyuSM7zHExMjXLH+CXcv/m3lWOZwnIvlVMa4x0Tz0\n" + "A4fklaawryngzeEjuW6zOiYCzjZtPlP8Fw0SpzppJ8VpQfrZ751RDo4yudmPqoPK\n" + "5EUe36L8U+oYBXnC5TlYs9bpVv9o5wJQI5qA9oQE2eFWxF1E0AyZ4V5sgGUBStaX\n" + "BjDDWul0wSo7rt1Tq7XpnA==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEATCCAumgAwIBAgIBTjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n" + "EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "GzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzEyMDEwMDU1NDJaFw0y\n" + "MDAzMDUwMDU1NDJaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\n" + "bjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\n" + "cywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\n" + "UyBhcC1ub3J0aGVhc3QtMyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBAMZtQNnm/XT19mTa10ftHLzg5UhajoI65JHv4TQNdGXdsv+CQdGYU49BJ9Eu\n" + "3bYgiEtTzR2lQe9zGMvtuJobLhOWuavzp7IixoIQcHkFHN6wJ1CvqrxgvJfBq6Hy\n" + "EuCDCiU+PPDLUNA6XM6Qx3IpHd1wrJkjRB80dhmMSpxmRmx849uFafhN+P1QybsM\n" + "TI0o48VON2+vj+mNuQTyLMMP8D4odSQHjaoG+zyJfJGZeAyqQyoOUOFEyQaHC3TT\n" + "3IDSNCQlpxb9LerbCoKu79WFBBq3CS5cYpg8/fsnV2CniRBFFUumBt5z4dhw9RJU\n" + "qlUXXO1ZyzpGd+c5v6FtrfXtnIUCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\n" + "A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFETv7ELNplYy/xTeIOInl6nzeiHg\n" + "MB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQCpKxOQcd0tEKb3OtsOY8q/MPwTyustGk2Rt7t9G68idADp8IytB7M0SDRo\n" + "wWZqynEq7orQVKdVOanhEWksNDzGp0+FPAf/KpVvdYCd7ru3+iI+V4ZEp2JFdjuZ\n" + "Zz0PIjS6AgsZqE5Ri1J+NmfmjGZCPhsHnGZiBaenX6K5VRwwwmLN6xtoqrrfR5zL\n" + "QfBeeZNJG6KiM3R/DxJ5rAa6Fz+acrhJ60L7HprhB7SFtj1RCijau3+ZwiGmUOMr\n" + "yKlMv+VgmzSw7o4Hbxy1WVrA6zQsTHHSGf+vkQn2PHvnFMUEu/ZLbTDYFNmTLK91\n" + "K6o4nMsEvhBKgo4z7H1EqqxXhvN2\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDjCCAvagAwIBAgIJAMM61RQn3/kdMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD\n" + "VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\n" + "MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\n" + "em9uIFJEUzEkMCIGA1UEAwwbQW1hem9uIFJEUyBHb3ZDbG91ZCBSb290IENBMB4X\n" + "DTE3MDUxOTIyMjkxMVoXDTIyMDUxODIyMjkxMVowgZMxCzAJBgNVBAYTAlVTMRAw\n" + "DgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQKDBlB\n" + "bWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSQw\n" + "IgYDVQQDDBtBbWF6b24gUkRTIEdvdkNsb3VkIFJvb3QgQ0EwggEiMA0GCSqGSIb3\n" + "DQEBAQUAA4IBDwAwggEKAoIBAQDGS9bh1FGiJPT+GRb3C5aKypJVDC1H2gbh6n3u\n" + "j8cUiyMXfmm+ak402zdLpSYMaxiQ7oL/B3wEmumIpRDAsQrSp3B/qEeY7ipQGOfh\n" + "q2TXjXGIUjiJ/FaoGqkymHRLG+XkNNBtb7MRItsjlMVNELXECwSiMa3nJL2/YyHW\n" + "nTr1+11/weeZEKgVbCUrOugFkMXnfZIBSn40j6EnRlO2u/NFU5ksK5ak2+j8raZ7\n" + "xW7VXp9S1Tgf1IsWHjGZZZguwCkkh1tHOlHC9gVA3p63WecjrIzcrR/V27atul4m\n" + "tn56s5NwFvYPUIx1dbC8IajLUrepVm6XOwdQCfd02DmOyjWJAgMBAAGjYzBhMA4G\n" + "A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRJEM+kuDUu\n" + "ZTmCnA4wUrgnFaXc4zAfBgNVHSMEGDAWgBRJEM+kuDUuZTmCnA4wUrgnFaXc4zAN\n" + "BgkqhkiG9w0BAQsFAAOCAQEAcfA7uirXsNZyI2j4AJFVtOTKOZlQwqbyNducnmlg\n" + "/5nug9fAkwM4AgvF5bBOD1Hw6khdsccMwIj+1S7wpL+EYb/nSc8G0qe1p/9lZ/mZ\n" + "ff5g4JOa26lLuCrZDqAk4TzYnt6sQKfa5ZXVUUn0BK3okhiXS0i+NloMyaBCL7vk\n" + "kDwkHwEqflRKfZ9/oFTcCfoiHPA7AdBtaPVr0/Kj9L7k+ouz122huqG5KqX0Zpo8\n" + "S0IGvcd2FZjNSNPttNAK7YuBVsZ0m2nIH1SLp//00v7yAHIgytQwwB17PBcp4NXD\n" + "pCfTa27ng9mMMC2YLqWQpW4TkqjDin2ZC+5X/mbrjzTvVg==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSUwIwYDVQQDDBxBbWF6b24gUkRTIGFwLWVhc3QtMSBSb290IENBMB4XDTE5MDIx\n" + "NzAyNDcwMFoXDTIyMDYwMTEyMDAwMFowgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI\n" + "DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\n" + "V2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSAwHgYDVQQD\n" + "DBdBbWF6b24gUkRTIGFwLWVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAOcJAUofyJuBuPr5ISHi/Ha5ed8h3eGdzn4MBp6rytPOg9NVGRQs\n" + "O93fNGCIKsUT6gPuk+1f1ncMTV8Y0Fdf4aqGWme+Khm3ZOP3V1IiGnVq0U2xiOmn\n" + "SQ4Q7LoeQC4lC6zpoCHVJyDjZ4pAknQQfsXb77Togdt/tK5ahev0D+Q3gCwAoBoO\n" + "DHKJ6t820qPi63AeGbJrsfNjLKiXlFPDUj4BGir4dUzjEeH7/hx37na1XG/3EcxP\n" + "399cT5k7sY/CR9kctMlUyEEUNQOmhi/ly1Lgtihm3QfjL6K9aGLFNwX35Bkh9aL2\n" + "F058u+n8DP/dPeKUAcJKiQZUmzuen5n57x8CAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFlqgF4FQlb9yP6c+Q3E\n" + "O3tXv+zOMB8GA1UdIwQYMBaAFK9T6sY/PBZVbnHcNcQXf58P4OuPMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQDeXiS3v1z4jWAo1UvVyKDeHjtrtEH1Rida1eOXauFuEQa5tuOk\n" + "E53Os4haZCW4mOlKjigWs4LN+uLIAe1aFXGo92nGIqyJISHJ1L+bopx/JmIbHMCZ\n" + "0lTNJfR12yBma5VQy7vzeFku/SisKwX0Lov1oHD4MVhJoHbUJYkmAjxorcIHORvh\n" + "I3Vj5XrgDWtLDPL8/Id/roul/L+WX5ir+PGScKBfQIIN2lWdZoqdsx8YWqhm/ikL\n" + "C6qNieSwcvWL7C03ri0DefTQMY54r5wP33QU5hJ71JoaZI3YTeT0Nf+NRL4hM++w\n" + "Q0veeNzBQXg1f/JxfeA39IDIX1kiCf71tGlT\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDDCCAvSgAwIBAgICcEUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNjU2\n" + "MjBaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\n" + "em9uIFJEUyBhcC1ub3J0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEAndtkldmHtk4TVQAyqhAvtEHSMb6pLhyKrIFved1WO3S7\n" + "+I+bWwv9b2W/ljJxLq9kdT43bhvzonNtI4a1LAohS6bqyirmk8sFfsWT3akb+4Sx\n" + "1sjc8Ovc9eqIWJCrUiSvv7+cS7ZTA9AgM1PxvHcsqrcUXiK3Jd/Dax9jdZE1e15s\n" + "BEhb2OEPE+tClFZ+soj8h8Pl2Clo5OAppEzYI4LmFKtp1X/BOf62k4jviXuCSst3\n" + "UnRJzE/CXtjmN6oZySVWSe0rQYuyqRl6//9nK40cfGKyxVnimB8XrrcxUN743Vud\n" + "QQVU0Esm8OVTX013mXWQXJHP2c0aKkog8LOga0vobQIDAQABo2YwZDAOBgNVHQ8B\n" + "Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQULmoOS1mFSjj+\n" + "snUPx4DgS3SkLFYwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\n" + "KoZIhvcNAQELBQADggEBAAkVL2P1M2/G9GM3DANVAqYOwmX0Xk58YBHQu6iiQg4j\n" + "b4Ky/qsZIsgT7YBsZA4AOcPKQFgGTWhe9pvhmXqoN3RYltN8Vn7TbUm/ZVDoMsrM\n" + "gwv0+TKxW1/u7s8cXYfHPiTzVSJuOogHx99kBW6b2f99GbP7O1Sv3sLq4j6lVvBX\n" + "Fiacf5LAWC925nvlTzLlBgIc3O9xDtFeAGtZcEtxZJ4fnGXiqEnN4539+nqzIyYq\n" + "nvlgCzyvcfRAxwltrJHuuRu6Maw5AGcd2Y0saMhqOVq9KYKFKuD/927BTrbd2JVf\n" + "2sGWyuPZPCk3gq+5pCjbD0c6DkhcMGI6WwxvM5V/zSM=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDDCCAvSgAwIBAgICOFAwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAxNzQ2\n" + "MjFaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\n" + "em9uIFJEUyBhcC1ub3J0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEAzU72e6XbaJbi4HjJoRNjKxzUEuChKQIt7k3CWzNnmjc5\n" + "8I1MjCpa2W1iw1BYVysXSNSsLOtUsfvBZxi/1uyMn5ZCaf9aeoA9UsSkFSZBjOCN\n" + "DpKPCmfV1zcEOvJz26+1m8WDg+8Oa60QV0ou2AU1tYcw98fOQjcAES0JXXB80P2s\n" + "3UfkNcnDz+l4k7j4SllhFPhH6BQ4lD2NiFAP4HwoG6FeJUn45EPjzrydxjq6v5Fc\n" + "cQ8rGuHADVXotDbEhaYhNjIrsPL+puhjWfhJjheEw8c4whRZNp6gJ/b6WEes/ZhZ\n" + "h32DwsDsZw0BfRDUMgUn8TdecNexHUw8vQWeC181hwIDAQABo2YwZDAOBgNVHQ8B\n" + "Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwW9bWgkWkr0U\n" + "lrOsq2kvIdrECDgwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\n" + "KoZIhvcNAQELBQADggEBAEugF0Gj7HVhX0ehPZoGRYRt3PBuI2YjfrrJRTZ9X5wc\n" + "9T8oHmw07mHmNy1qqWvooNJg09bDGfB0k5goC2emDiIiGfc/kvMLI7u+eQOoMKj6\n" + "mkfCncyRN3ty08Po45vTLBFZGUvtQmjM6yKewc4sXiASSBmQUpsMbiHRCL72M5qV\n" + "obcJOjGcIdDTmV1BHdWT+XcjynsGjUqOvQWWhhLPrn4jWe6Xuxll75qlrpn3IrIx\n" + "CRBv/5r7qbcQJPOgwQsyK4kv9Ly8g7YT1/vYBlR3cRsYQjccw5ceWUj2DrMVWhJ4\n" + "prf+E3Aa4vYmLLOUUvKnDQ1k3RGNu56V0tonsQbfsaM=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDDCCAvSgAwIBAgICOYIwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTcyMDA1\n" + "MjlaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\n" + "em9uIFJEUyBhcC1ub3J0aGVhc3QtMyAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEA4dMak8W+XW8y/2F6nRiytFiA4XLwePadqWebGtlIgyCS\n" + "kbug8Jv5w7nlMkuxOxoUeD4WhI6A9EkAn3r0REM/2f0aYnd2KPxeqS2MrtdxxHw1\n" + "xoOxk2x0piNSlOz6yog1idsKR5Wurf94fvM9FdTrMYPPrDabbGqiBMsZZmoHLvA3\n" + "Z+57HEV2tU0Ei3vWeGIqnNjIekS+E06KhASxrkNU5vi611UsnYZlSi0VtJsH4UGV\n" + "LhnHl53aZL0YFO5mn/fzuNG/51qgk/6EFMMhaWInXX49Dia9FnnuWXwVwi6uX1Wn\n" + "7kjoHi5VtmC8ZlGEHroxX2DxEr6bhJTEpcLMnoQMqwIDAQABo2YwZDAOBgNVHQ8B\n" + "Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUsUI5Cb3SWB8+\n" + "gv1YLN/ABPMdxSAwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\n" + "KoZIhvcNAQELBQADggEBAJAF3E9PM1uzVL8YNdzb6fwJrxxqI2shvaMVmC1mXS+w\n" + "G0zh4v2hBZOf91l1EO0rwFD7+fxoI6hzQfMxIczh875T6vUXePKVOCOKI5wCrDad\n" + "zQbVqbFbdhsBjF4aUilOdtw2qjjs9JwPuB0VXN4/jY7m21oKEOcnpe36+7OiSPjN\n" + "xngYewCXKrSRqoj3mw+0w/+exYj3Wsush7uFssX18av78G+ehKPIVDXptOCP/N7W\n" + "8iKVNeQ2QGTnu2fzWsGUSvMGyM7yqT+h1ILaT//yQS8er511aHMLc142bD4D9VSy\n" + "DgactwPDTShK/PXqhvNey9v/sKXm4XatZvwcc8KYlW4=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECDCCAvCgAwIBAgICVIYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDQxNzEz\n" + "MDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\n" + "em9uIFJEUyBhcC1zb3V0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "DwAwggEKAoIBAQDUYOz1hGL42yUCrcsMSOoU8AeD/3KgZ4q7gP+vAz1WnY9K/kim\n" + "eWN/2Qqzlo3+mxSFQFyD4MyV3+CnCPnBl9Sh1G/F6kThNiJ7dEWSWBQGAB6HMDbC\n" + "BaAsmUc1UIz8sLTL3fO+S9wYhA63Wun0Fbm/Rn2yk/4WnJAaMZcEtYf6e0KNa0LM\n" + "p/kN/70/8cD3iz3dDR8zOZFpHoCtf0ek80QqTich0A9n3JLxR6g6tpwoYviVg89e\n" + "qCjQ4axxOkWWeusLeTJCcY6CkVyFvDAKvcUl1ytM5AiaUkXblE7zDFXRM4qMMRdt\n" + "lPm8d3pFxh0fRYk8bIKnpmtOpz3RIctDrZZxAgMBAAGjZjBkMA4GA1UdDwEB/wQE\n" + "AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT99wKJftD3jb4sHoHG\n" + "i3uGlH6W6TAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAZ17hhr3dII3hUfuHQ1hPWGrpJOX/G9dLzkprEIcCidkmRYl+\n" + "hu1Pe3caRMh/17+qsoEErmnVq5jNY9X1GZL04IZH8YbHc7iRHw3HcWAdhN8633+K\n" + "jYEB2LbJ3vluCGnCejq9djDb6alOugdLMJzxOkHDhMZ6/gYbECOot+ph1tQuZXzD\n" + "tZ7prRsrcuPBChHlPjmGy8M9z8u+kF196iNSUGC4lM8vLkHM7ycc1/ZOwRq9aaTe\n" + "iOghbQQyAEe03MWCyDGtSmDfr0qEk+CHN+6hPiaL8qKt4s+V9P7DeK4iW08ny8Ox\n" + "AVS7u0OK/5+jKMAMrKwpYrBydOjTUTHScocyNw==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDDCCAvSgAwIBAgICY4kwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTMyMDEx\n" + "NDJaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\n" + "em9uIFJEUyBhcC1zb3V0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEAr5u9OuLL/OF/fBNUX2kINJLzFl4DnmrhnLuSeSnBPgbb\n" + "qddjf5EFFJBfv7IYiIWEFPDbDG5hoBwgMup5bZDbas+ZTJTotnnxVJTQ6wlhTmns\n" + "eHECcg2pqGIKGrxZfbQhlj08/4nNAPvyYCTS0bEcmQ1emuDPyvJBYDDLDU6AbCB5\n" + "6Z7YKFQPTiCBblvvNzchjLWF9IpkqiTsPHiEt21sAdABxj9ityStV3ja/W9BfgxH\n" + "wzABSTAQT6FbDwmQMo7dcFOPRX+hewQSic2Rn1XYjmNYzgEHisdUsH7eeXREAcTw\n" + "61TRvaLH8AiOWBnTEJXPAe6wYfrcSd1pD0MXpoB62wIDAQABo2YwZDAOBgNVHQ8B\n" + "Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUytwMiomQOgX5\n" + "Ichd+2lDWRUhkikwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\n" + "KoZIhvcNAQELBQADggEBACf6lRDpfCD7BFRqiWM45hqIzffIaysmVfr+Jr+fBTjP\n" + "uYe/ba1omSrNGG23bOcT9LJ8hkQJ9d+FxUwYyICQNWOy6ejicm4z0C3VhphbTPqj\n" + "yjpt9nG56IAcV8BcRJh4o/2IfLNzC/dVuYJV8wj7XzwlvjysenwdrJCoLadkTr1h\n" + "eIdG6Le07sB9IxrGJL9e04afk37h7c8ESGSE4E+oS4JQEi3ATq8ne1B9DQ9SasXi\n" + "IRmhNAaISDzOPdyLXi9N9V9Lwe/DHcja7hgLGYx3UqfjhLhOKwp8HtoZORixAmOI\n" + "HfILgNmwyugAbuZoCazSKKBhQ0wgO0WZ66ZKTMG8Oho=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEDDCCAvSgAwIBAgICEkYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxOTUz\n" + "NDdaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\n" + "em9uIFJEUyBhcC1zb3V0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEAufodI2Flker8q7PXZG0P0vmFSlhQDw907A6eJuF/WeMo\n" + "GHnll3b4S6nC3oRS3nGeRMHbyU2KKXDwXNb3Mheu+ox+n5eb/BJ17eoj9HbQR1cd\n" + "gEkIciiAltf8gpMMQH4anP7TD+HNFlZnP7ii3geEJB2GGXSxgSWvUzH4etL67Zmn\n" + "TpGDWQMB0T8lK2ziLCMF4XAC/8xDELN/buHCNuhDpxpPebhct0T+f6Arzsiswt2j\n" + "7OeNeLLZwIZvVwAKF7zUFjC6m7/VmTQC8nidVY559D6l0UhhU0Co/txgq3HVsMOH\n" + "PbxmQUwJEKAzQXoIi+4uZzHFZrvov/nDTNJUhC6DqwIDAQABo2YwZDAOBgNVHQ8B\n" + "Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwaZpaCme+EiV\n" + "M5gcjeHZSTgOn4owHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\n" + "KoZIhvcNAQELBQADggEBAAR6a2meCZuXO2TF9bGqKGtZmaah4pH2ETcEVUjkvXVz\n" + "sl+ZKbYjrun+VkcMGGKLUjS812e7eDF726ptoku9/PZZIxlJB0isC/0OyixI8N4M\n" + "NsEyvp52XN9QundTjkl362bomPnHAApeU0mRbMDRR2JdT70u6yAzGLGsUwMkoNnw\n" + "1VR4XKhXHYGWo7KMvFrZ1KcjWhubxLHxZWXRulPVtGmyWg/MvE6KF+2XMLhojhUL\n" + "+9jB3Fpn53s6KMx5tVq1x8PukHmowcZuAF8k+W4gk8Y68wIwynrdZrKRyRv6CVtR\n" + "FZ8DeJgoNZT3y/GT254VqMxxfuy2Ccb/RInd16tEvVk=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECjCCAvKgAwIBAgICEzUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAyMDUy\n" + "MjVaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\n" + "em9uIFJEUyBjYS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\n" + "ggEPADCCAQoCggEBAOxHqdcPSA2uBjsCP4DLSlqSoPuQ/X1kkJLusVRKiQE2zayB\n" + "viuCBt4VB9Qsh2rW3iYGM+usDjltGnI1iUWA5KHcvHszSMkWAOYWLiMNKTlg6LCp\n" + "XnE89tvj5dIH6U8WlDvXLdjB/h30gW9JEX7S8supsBSci2GxEzb5mRdKaDuuF/0O\n" + "qvz4YE04pua3iZ9QwmMFuTAOYzD1M72aOpj+7Ac+YLMM61qOtU+AU6MndnQkKoQi\n" + "qmUN2A9IFaqHFzRlSdXwKCKUA4otzmz+/N3vFwjb5F4DSsbsrMfjeHMo6o/nb6Nh\n" + "YDb0VJxxPee6TxSuN7CQJ2FxMlFUezcoXqwqXD0CAwEAAaNmMGQwDgYDVR0PAQH/\n" + "BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDGGpon9WfIpsggE\n" + "CxHq8hZ7E2ESMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQAvpeQYEGZvoTVLgV9rd2+StPYykMsmFjWQcyn3dBTZRXC2\n" + "lKq7QhQczMAOhEaaN29ZprjQzsA2X/UauKzLR2Uyqc2qOeO9/YOl0H3qauo8C/W9\n" + "r8xqPbOCDLEXlOQ19fidXyyEPHEq5WFp8j+fTh+s8WOx2M7IuC0ANEetIZURYhSp\n" + "xl9XOPRCJxOhj7JdelhpweX0BJDNHeUFi0ClnFOws8oKQ7sQEv66d5ddxqqZ3NVv\n" + "RbCvCtEutQMOUMIuaygDlMn1anSM8N7Wndx8G6+Uy67AnhjGx7jw/0YPPxopEj6x\n" + "JXP8j0sJbcT9K/9/fPVLNT25RvQ/93T2+IQL4Ca2\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECjCCAvKgAwIBAgICV2YwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExOTM2\n" + "MjBaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\n" + "em9uIFJEUyBldS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\n" + "ggEPADCCAQoCggEBAMEx54X2pHVv86APA0RWqxxRNmdkhAyp2R1cFWumKQRofoFv\n" + "n+SPXdkpIINpMuEIGJANozdiEz7SPsrAf8WHyD93j/ZxrdQftRcIGH41xasetKGl\n" + "I67uans8d+pgJgBKGb/Z+B5m+UsIuEVekpvgpwKtmmaLFC/NCGuSsJoFsRqoa6Gh\n" + "m34W6yJoY87UatddCqLY4IIXaBFsgK9Q/wYzYLbnWM6ZZvhJ52VMtdhcdzeTHNW0\n" + "5LGuXJOF7Ahb4JkEhoo6TS2c0NxB4l4MBfBPgti+O7WjR3FfZHpt18A6Zkq6A2u6\n" + "D/oTSL6c9/3sAaFTFgMyL3wHb2YlW0BPiljZIqECAwEAAaNmMGQwDgYDVR0PAQH/\n" + "BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOcAToAc6skWffJa\n" + "TnreaswAfrbcMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQA1d0Whc1QtspK496mFWfFEQNegLh0a9GWYlJm+Htcj5Nxt\n" + "DAIGXb+8xrtOZFHmYP7VLCT5Zd2C+XytqseK/+s07iAr0/EPF+O2qcyQWMN5KhgE\n" + "cXw2SwuP9FPV3i+YAm11PBVeenrmzuk9NrdHQ7TxU4v7VGhcsd2C++0EisrmquWH\n" + "mgIfmVDGxphwoES52cY6t3fbnXmTkvENvR+h3rj+fUiSz0aSo+XZUGHPgvuEKM/W\n" + "CBD9Smc9CBoBgvy7BgHRgRUmwtABZHFUIEjHI5rIr7ZvYn+6A0O6sogRfvVYtWFc\n" + "qpyrW1YX8mD0VlJ8fGKM3G+aCOsiiPKDV/Uafrm+\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECDCCAvCgAwIBAgICGAcwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIxODE5\n" + "NDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\n" + "em9uIFJEUyBldS1ub3J0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "DwAwggEKAoIBAQCiIYnhe4UNBbdBb/nQxl5giM0XoVHWNrYV5nB0YukA98+TPn9v\n" + "Aoj1RGYmtryjhrf01Kuv8SWO+Eom95L3zquoTFcE2gmxCfk7bp6qJJ3eHOJB+QUO\n" + "XsNRh76fwDzEF1yTeZWH49oeL2xO13EAx4PbZuZpZBttBM5zAxgZkqu4uWQczFEs\n" + "JXfla7z2fvWmGcTagX10O5C18XaFroV0ubvSyIi75ue9ykg/nlFAeB7O0Wxae88e\n" + "uhiBEFAuLYdqWnsg3459NfV8Yi1GnaitTym6VI3tHKIFiUvkSiy0DAlAGV2iiyJE\n" + "q+DsVEO4/hSINJEtII4TMtysOsYPpINqeEzRAgMBAAGjZjBkMA4GA1UdDwEB/wQE\n" + "AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRR0UpnbQyjnHChgmOc\n" + "hnlc0PogzTAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAKJD4xVzSf4zSGTBJrmamo86jl1NHQxXUApAZuBZEc8tqC6TI\n" + "T5CeoSr9CMuVC8grYyBjXblC4OsM5NMvmsrXl/u5C9dEwtBFjo8mm53rOOIm1fxl\n" + "I1oYB/9mtO9ANWjkykuLzWeBlqDT/i7ckaKwalhLODsRDO73vRhYNjsIUGloNsKe\n" + "pxw3dzHwAZx4upSdEVG4RGCZ1D0LJ4Gw40OfD69hfkDfRVVxKGrbEzqxXRvovmDc\n" + "tKLdYZO/6REoca36v4BlgIs1CbUXJGLSXUwtg7YXGLSVBJ/U0+22iGJmBSNcoyUN\n" + "cjPFD9JQEhDDIYYKSGzIYpvslvGc4T5ISXFiuQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICYpgwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExNzMx\n" + "NDhaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyBldS13ZXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAMk3YdSZ64iAYp6MyyKtYJtNzv7zFSnnNf6vv0FB4VnfITTMmOyZ\n" + "LXqKAT2ahZ00hXi34ewqJElgU6eUZT/QlzdIu359TEZyLVPwURflL6SWgdG01Q5X\n" + "O++7fSGcBRyIeuQWs9FJNIIqK8daF6qw0Rl5TXfu7P9dBc3zkgDXZm2DHmxGDD69\n" + "7liQUiXzoE1q2Z9cA8+jirDioJxN9av8hQt12pskLQumhlArsMIhjhHRgF03HOh5\n" + "tvi+RCfihVOxELyIRTRpTNiIwAqfZxxTWFTgfn+gijTmd0/1DseAe82aYic8JbuS\n" + "EMbrDduAWsqrnJ4GPzxHKLXX0JasCUcWyMECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPLtsq1NrwJXO13C9eHt\n" + "sLY11AGwMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQAnWBKj5xV1A1mYd0kIgDdkjCwQkiKF5bjIbGkT3YEFFbXoJlSP\n" + "0lZZ/hDaOHI8wbLT44SzOvPEEmWF9EE7SJzkvSdQrUAWR9FwDLaU427ALI3ngNHy\n" + "lGJ2hse1fvSRNbmg8Sc9GBv8oqNIBPVuw+AJzHTacZ1OkyLZrz1c1QvwvwN2a+Jd\n" + "vH0V0YIhv66llKcYDMUQJAQi4+8nbRxXWv6Gq3pvrFoorzsnkr42V3JpbhnYiK+9\n" + "nRKd4uWl62KRZjGkfMbmsqZpj2fdSWMY1UGyN1k+kDmCSWYdrTRDP0xjtIocwg+A\n" + "J116n4hV/5mbA0BaPiS2krtv17YAeHABZcvz\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICZIEwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIyMTMy\n" + "MzJaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyBldS13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBALGiwqjiF7xIjT0Sx7zB3764K2T2a1DHnAxEOr+/EIftWKxWzT3u\n" + "PFwS2eEZcnKqSdRQ+vRzonLBeNLO4z8aLjQnNbkizZMBuXGm4BqRm1Kgq3nlLDQn\n" + "7YqdijOq54SpShvR/8zsO4sgMDMmHIYAJJOJqBdaus2smRt0NobIKc0liy7759KB\n" + "6kmQ47Gg+kfIwxrQA5zlvPLeQImxSoPi9LdbRoKvu7Iot7SOa+jGhVBh3VdqndJX\n" + "7tm/saj4NE375csmMETFLAOXjat7zViMRwVorX4V6AzEg1vkzxXpA9N7qywWIT5Y\n" + "fYaq5M8i6vvLg0CzrH9fHORtnkdjdu1y+0MCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFOhOx1yt3Z7mvGB9jBv\n" + "2ymdZwiOMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQBehqY36UGDvPVU9+vtaYGr38dBbp+LzkjZzHwKT1XJSSUc2wqM\n" + "hnCIQKilonrTIvP1vmkQi8qHPvDRtBZKqvz/AErW/ZwQdZzqYNFd+BmOXaeZWV0Q\n" + "oHtDzXmcwtP8aUQpxN0e1xkWb1E80qoy+0uuRqb/50b/R4Q5qqSfJhkn6z8nwB10\n" + "7RjLtJPrK8igxdpr3tGUzfAOyiPrIDncY7UJaL84GFp7WWAkH0WG3H8Y8DRcRXOU\n" + "mqDxDLUP3rNuow3jnGxiUY+gGX5OqaZg4f4P6QzOSmeQYs6nLpH0PiN00+oS1BbD\n" + "bpWdZEttILPI+vAYkU4QuBKKDjJL6HbSd+cn\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICJDQwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNzAz\n" + "MTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyBldS13ZXN0LTMgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAL9bL7KE0n02DLVtlZ2PL+g/BuHpMYFq2JnE2RgompGurDIZdjmh\n" + "1pxfL3nT+QIVMubuAOy8InRfkRxfpxyjKYdfLJTPJG+jDVL+wDcPpACFVqoV7Prg\n" + "pVYEV0lc5aoYw4bSeYFhdzgim6F8iyjoPnObjll9mo4XsHzSoqJLCd0QC+VG9Fw2\n" + "q+GDRZrLRmVM2oNGDRbGpGIFg77aRxRapFZa8SnUgs2AqzuzKiprVH5i0S0M6dWr\n" + "i+kk5epmTtkiDHceX+dP/0R1NcnkCPoQ9TglyXyPdUdTPPRfKCq12dftqll+u4mV\n" + "ARdN6WFjovxax8EAP2OAUTi1afY+1JFMj+sCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLfhrbrO5exkCVgxW0x3\n" + "Y2mAi8lNMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQAigQ5VBNGyw+OZFXwxeJEAUYaXVoP/qrhTOJ6mCE2DXUVEoJeV\n" + "SxScy/TlFA9tJXqmit8JH8VQ/xDL4ubBfeMFAIAo4WzNWDVoeVMqphVEcDWBHsI1\n" + "AETWzfsapRS9yQekOMmxg63d/nV8xewIl8aNVTHdHYXMqhhik47VrmaVEok1UQb3\n" + "O971RadLXIEbVd9tjY5bMEHm89JsZDnDEw1hQXBb67Elu64OOxoKaHBgUH8AZn/2\n" + "zFsL1ynNUjOhCSAA15pgd1vjwc0YsBbAEBPcHBWYBEyME6NLNarjOzBl4FMtATSF\n" + "wWCKRGkvqN8oxYhwR2jf2rR5Mu4DWkK5Q8Ep\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEEjCCAvqgAwIBAgIJANew34ehz5l8MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\n" + "VQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\n" + "MCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\n" + "em9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0Ew\n" + "HhcNMTkwNTEwMjE0ODI3WhcNMjQwNTA4MjE0ODI3WjCBlTELMAkGA1UEBhMCVVMx\n" + "EDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\n" + "GUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\n" + "JjAkBgNVBAMMHUFtYXpvbiBSRFMgbWUtc291dGgtMSBSb290IENBMIIBIjANBgkq\n" + "hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp7BYV88MukcY+rq0r79+C8UzkT30fEfT\n" + "aPXbx1d6M7uheGN4FMaoYmL+JE1NZPaMRIPTHhFtLSdPccInvenRDIatcXX+jgOk\n" + "UA6lnHQ98pwN0pfDUyz/Vph4jBR9LcVkBbe0zdoKKp+HGbMPRU0N2yNrog9gM5O8\n" + "gkU/3O2csJ/OFQNnj4c2NQloGMUpEmedwJMOyQQfcUyt9CvZDfIPNnheUS29jGSw\n" + "ERpJe/AENu8Pxyc72jaXQuD+FEi2Ck6lBkSlWYQFhTottAeGvVFNCzKszCntrtqd\n" + "rdYUwurYsLTXDHv9nW2hfDUQa0mhXf9gNDOBIVAZugR9NqNRNyYLHQIDAQABo2Mw\n" + "YTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU54cf\n" + "DjgwBx4ycBH8+/r8WXdaiqYwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXda\n" + "iqYwDQYJKoZIhvcNAQELBQADggEBAIIMTSPx/dR7jlcxggr+O6OyY49Rlap2laKA\n" + "eC/XI4ySP3vQkIFlP822U9Kh8a9s46eR0uiwV4AGLabcu0iKYfXjPkIprVCqeXV7\n" + "ny9oDtrbflyj7NcGdZLvuzSwgl9SYTJp7PVCZtZutsPYlbJrBPHwFABvAkMvRtDB\n" + "hitIg4AESDGPoCl94sYHpfDfjpUDMSrAMDUyO6DyBdZH5ryRMAs3lGtsmkkNUrso\n" + "aTW6R05681Z0mvkRdb+cdXtKOSuDZPoe2wJJIaz3IlNQNSrB5TImMYgmt6iAsFhv\n" + "3vfTSTKrZDNTJn4ybG6pq1zWExoXsktZPylJly6R3RBwV6nwqBM=\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICQ2QwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDUxODQ2\n" + "MjlaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyBzYS1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAMMvR+ReRnOzqJzoaPipNTt1Z2VA968jlN1+SYKUrYM3No+Vpz0H\n" + "M6Tn0oYB66ByVsXiGc28ulsqX1HbHsxqDPwvQTKvO7SrmDokoAkjJgLocOLUAeld\n" + "5AwvUjxGRP6yY90NV7X786MpnYb2Il9DIIaV9HjCmPt+rjy2CZjS0UjPjCKNfB8J\n" + "bFjgW6GGscjeyGb/zFwcom5p4j0rLydbNaOr9wOyQrtt3ZQWLYGY9Zees/b8pmcc\n" + "Jt+7jstZ2UMV32OO/kIsJ4rMUn2r/uxccPwAc1IDeRSSxOrnFKhW3Cu69iB3bHp7\n" + "JbawY12g7zshE4I14sHjv3QoXASoXjx4xgMCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI1Fc/Ql2jx+oJPgBVYq\n" + "ccgP0pQ8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQB4VVVabVp70myuYuZ3vltQIWqSUMhkaTzehMgGcHjMf9iLoZ/I\n" + "93KiFUSGnek5cRePyS9wcpp0fcBT3FvkjpUdCjVtdttJgZFhBxgTd8y26ImdDDMR\n" + "4+BUuhI5msvjL08f+Vkkpu1GQcGmyFVPFOy/UY8iefu+QyUuiBUnUuEDd49Hw0Fn\n" + "/kIPII6Vj82a2mWV/Q8e+rgN8dIRksRjKI03DEoP8lhPlsOkhdwU6Uz9Vu6NOB2Q\n" + "Ls1kbcxAc7cFSyRVJEhh12Sz9d0q/CQSTFsVJKOjSNQBQfVnLz1GwO/IieUEAr4C\n" + "jkTntH0r1LX5b/GwN4R887LvjAEdTbg1his7\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICJVUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTkxODE2\n" + "NTNaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyB1cy1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAM3i/k2u6cqbMdcISGRvh+m+L0yaSIoOXjtpNEoIftAipTUYoMhL\n" + "InXGlQBVA4shkekxp1N7HXe1Y/iMaPEyb3n+16pf3vdjKl7kaSkIhjdUz3oVUEYt\n" + "i8Z/XeJJ9H2aEGuiZh3kHixQcZczn8cg3dA9aeeyLSEnTkl/npzLf//669Ammyhs\n" + "XcAo58yvT0D4E0D/EEHf2N7HRX7j/TlyWvw/39SW0usiCrHPKDLxByLojxLdHzso\n" + "QIp/S04m+eWn6rmD+uUiRteN1hI5ncQiA3wo4G37mHnUEKo6TtTUh+sd/ku6a8HK\n" + "glMBcgqudDI90s1OpuIAWmuWpY//8xEG2YECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPqhoWZcrVY9mU7tuemR\n" + "RBnQIj1jMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQB6zOLZ+YINEs72heHIWlPZ8c6WY8MDU+Be5w1M+BK2kpcVhCUK\n" + "PJO4nMXpgamEX8DIiaO7emsunwJzMSvavSPRnxXXTKIc0i/g1EbiDjnYX9d85DkC\n" + "E1LaAUCmCZBVi9fIe0H2r9whIh4uLWZA41oMnJx/MOmo3XyMfQoWcqaSFlMqfZM4\n" + "0rNoB/tdHLNuV4eIdaw2mlHxdWDtF4oH+HFm+2cVBUVC1jXKrFv/euRVtsTT+A6i\n" + "h2XBHKxQ1Y4HgAn0jACP2QSPEmuoQEIa57bEKEcZsBR8SDY6ZdTd2HLRIApcCOSF\n" + "MRM8CKLeF658I0XgF8D5EsYoKPsA+74Z+jDH\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECDCCAvCgAwIBAgIDAIVCMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\n" + "UzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\n" + "CgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\n" + "UzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTEzMTcw\n" + "NjQxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\n" + "c2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\n" + "U2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\n" + "YXpvbiBSRFMgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "DwAwggEKAoIBAQDE+T2xYjUbxOp+pv+gRA3FO24+1zCWgXTDF1DHrh1lsPg5k7ht\n" + "2KPYzNc+Vg4E+jgPiW0BQnA6jStX5EqVh8BU60zELlxMNvpg4KumniMCZ3krtMUC\n" + "au1NF9rM7HBh+O+DYMBLK5eSIVt6lZosOb7bCi3V6wMLA8YqWSWqabkxwN4w0vXI\n" + "8lu5uXXFRemHnlNf+yA/4YtN4uaAyd0ami9+klwdkZfkrDOaiy59haOeBGL8EB/c\n" + "dbJJlguHH5CpCscs3RKtOOjEonXnKXldxarFdkMzi+aIIjQ8GyUOSAXHtQHb3gZ4\n" + "nS6Ey0CMlwkB8vUObZU9fnjKJcL5QCQqOfwvAgMBAAGjZjBkMA4GA1UdDwEB/wQE\n" + "AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQUPuRHohPxx4VjykmH\n" + "6usGrLL1ETAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAUdR9Vb3y33Yj6X6KGtuthZ08SwjImVQPtknzpajNE5jOJAh8\n" + "quvQnU9nlnMO85fVDU1Dz3lLHGJ/YG1pt1Cqq2QQ200JcWCvBRgdvH6MjHoDQpqZ\n" + "HvQ3vLgOGqCLNQKFuet9BdpsHzsctKvCVaeBqbGpeCtt3Hh/26tgx0rorPLw90A2\n" + "V8QSkZJjlcKkLa58N5CMM8Xz8KLWg3MZeT4DmlUXVCukqK2RGuP2L+aME8dOxqNv\n" + "OnOz1zrL5mR2iJoDpk8+VE/eBDmJX40IJk6jBjWoxAO/RXq+vBozuF5YHN1ujE92\n" + "tO8HItgTp37XT8bJBAiAnt5mxw+NLSqtxk2QdQ==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIECDCCAvCgAwIBAgIDAIkHMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\n" + "UzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\n" + "CgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\n" + "UzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTA2MTc0\n" + "MDIxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\n" + "c2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\n" + "U2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\n" + "YXpvbiBSRFMgdXMtd2VzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "DwAwggEKAoIBAQDD2yzbbAl77OofTghDMEf624OvU0eS9O+lsdO0QlbfUfWa1Kd6\n" + "0WkgjkLZGfSRxEHMCnrv4UPBSK/Qwn6FTjkDLgemhqBtAnplN4VsoDL+BkRX4Wwq\n" + "/dSQJE2b+0hm9w9UMVGFDEq1TMotGGTD2B71eh9HEKzKhGzqiNeGsiX4VV+LJzdH\n" + "uM23eGisNqmd4iJV0zcAZ+Gbh2zK6fqTOCvXtm7Idccv8vZZnyk1FiWl3NR4WAgK\n" + "AkvWTIoFU3Mt7dIXKKClVmvssG8WHCkd3Xcb4FHy/G756UZcq67gMMTX/9fOFM/v\n" + "l5C0+CHl33Yig1vIDZd+fXV1KZD84dEJfEvHAgMBAAGjZjBkMA4GA1UdDwEB/wQE\n" + "AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBR+ap20kO/6A7pPxo3+\n" + "T3CfqZpQWjAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAHCJky2tPjPttlDM/RIqExupBkNrnSYnOK4kr9xJ3sl8UF2DA\n" + "PAnYsjXp3rfcjN/k/FVOhxwzi3cXJF/2Tjj39Bm/OEfYTOJDNYtBwB0VVH4ffa/6\n" + "tZl87jaIkrxJcreeeHqYMnIxeN0b/kliyA+a5L2Yb0VPjt9INq34QDc1v74FNZ17\n" + "4z8nr1nzg4xsOWu0Dbjo966lm4nOYIGBRGOKEkHZRZ4mEiMgr3YLkv8gSmeitx57\n" + "Z6dVemNtUic/LVo5Iqw4n3TBS0iF2C1Q1xT/s3h+0SXZlfOWttzSluDvoMv5PvCd\n" + "pFjNn+aXLAALoihL1MJSsxydtsLjOBro5eK0Vw==\n" + "-----END CERTIFICATE-----\n",
"-----BEGIN CERTIFICATE-----\n" + "MIIEBzCCAu+gAwIBAgICUYkwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\n" + "MRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\n" + "DBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\n" + "MSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxODIx\n" + "MTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\n" + "aGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\n" + "ZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\n" + "em9uIFJEUyB1cy13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBANCEZBZyu6yJQFZBJmSUZfSZd3Ui2gitczMKC4FLr0QzkbxY+cLa\n" + "uVONIOrPt4Rwi+3h/UdnUg917xao3S53XDf1TDMFEYp4U8EFPXqCn/GXBIWlU86P\n" + "PvBN+gzw3nS+aco7WXb+woTouvFVkk8FGU7J532llW8o/9ydQyDIMtdIkKTuMfho\n" + "OiNHSaNc+QXQ32TgvM9A/6q7ksUoNXGCP8hDOkSZ/YOLiI5TcdLh/aWj00ziL5bj\n" + "pvytiMZkilnc9dLY9QhRNr0vGqL0xjmWdoEXz9/OwjmCihHqJq+20MJPsvFm7D6a\n" + "2NKybR9U+ddrjb8/iyLOjURUZnj5O+2+OPcCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\n" + "AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEBxMBdv81xuzqcK5TVu\n" + "pHj+Aor8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQBZkfiVqGoJjBI37aTlLOSjLcjI75L5wBrwO39q+B4cwcmpj58P\n" + "3sivv+jhYfAGEbQnGRzjuFoyPzWnZ1DesRExX+wrmHsLLQbF2kVjLZhEJMHF9eB7\n" + "GZlTPdTzHErcnuXkwA/OqyXMpj9aghcQFuhCNguEfnROY9sAoK2PTfnTz9NJHL+Q\n" + "UpDLEJEUfc0GZMVWYhahc0x38ZnSY2SKacIPECQrTI0KpqZv/P+ijCEcMD9xmYEb\n" + "jL4en+XKS1uJpw5fIU5Sj0MxhdGstH6S84iAE5J3GM3XHklGSFwwqPYvuTXvANH6\n" + "uboynxRgSae59jIlAK6Jrr6GWMwQRbgcaAlW\n" + "-----END CERTIFICATE-----\n"
]
};
});
// node_modules/mysql/lib/ConnectionConfig.js
var require_ConnectionConfig = __commonJS((exports, module) => {
var urlParse = __require("url").parse;
var ClientConstants = require_client();
var Charsets = require_charsets();
var SSLProfiles = null;
module.exports = ConnectionConfig;
function ConnectionConfig(options) {
if (typeof options === "string") {
options = ConnectionConfig.parseUrl(options);
}
this.host = options.host || "localhost";
this.port = options.port || 3306;
this.localAddress = options.localAddress;
this.socketPath = options.socketPath;
this.user = options.user || undefined;
this.password = options.password || undefined;
this.database = options.database;
this.connectTimeout = options.connectTimeout === undefined ? 10 * 1000 : options.connectTimeout;
this.insecureAuth = options.insecureAuth || false;
this.supportBigNumbers = options.supportBigNumbers || false;
this.bigNumberStrings = options.bigNumberStrings || false;
this.dateStrings = options.dateStrings || false;
this.debug = options.debug;
this.trace = options.trace !== false;
this.stringifyObjects = options.stringifyObjects || false;
this.timezone = options.timezone || "local";
this.flags = options.flags || "";
this.queryFormat = options.queryFormat;
this.pool = options.pool || undefined;
this.ssl = typeof options.ssl === "string" ? ConnectionConfig.getSSLProfile(options.ssl) : options.ssl || false;
this.localInfile = options.localInfile === undefined ? true : options.localInfile;
this.multipleStatements = options.multipleStatements || false;
this.typeCast = options.typeCast === undefined ? true : options.typeCast;
if (this.timezone[0] === " ") {
this.timezone = "+" + this.timezone.substr(1);
}
if (this.ssl) {
this.ssl.rejectUnauthorized = this.ssl.rejectUnauthorized !== false;
}
this.maxPacketSize = 0;
this.charsetNumber = options.charset ? ConnectionConfig.getCharsetNumber(options.charset) : options.charsetNumber || Charsets.UTF8_GENERAL_CI;
var defaultFlags = ConnectionConfig.getDefaultFlags(options);
this.clientFlags = ConnectionConfig.mergeFlags(defaultFlags, options.flags);
}
ConnectionConfig.mergeFlags = function mergeFlags(defaultFlags, userFlags) {
var allFlags = ConnectionConfig.parseFlagList(defaultFlags);
var newFlags = ConnectionConfig.parseFlagList(userFlags);
for (var flag in newFlags) {
if (allFlags[flag] !== false) {
allFlags[flag] = newFlags[flag];
}
}
var flags = 0;
for (var flag in allFlags) {
if (allFlags[flag]) {
flags |= ClientConstants["CLIENT_" + flag] || 0;
}
}
return flags;
};
ConnectionConfig.getCharsetNumber = function getCharsetNumber(charset) {
var num = Charsets[charset.toUpperCase()];
if (num === undefined) {
throw new TypeError("Unknown charset \'" + charset + "\'");
}
return num;
};
ConnectionConfig.getDefaultFlags = function getDefaultFlags(options) {
var defaultFlags = [
"-COMPRESS",
"-CONNECT_ATTRS",
"+CONNECT_WITH_DB",
"+FOUND_ROWS",
"+IGNORE_SIGPIPE",
"+IGNORE_SPACE",
"+LOCAL_FILES",
"+LONG_FLAG",
"+LONG_PASSWORD",
"+MULTI_RESULTS",
"+ODBC",
"-PLUGIN_AUTH",
"+PROTOCOL_41",
"+PS_MULTI_RESULTS",
"+RESERVED",
"+SECURE_CONNECTION",
"+TRANSACTIONS"
];
if (options && options.localInfile !== undefined && !options.localInfile) {
defaultFlags.push("-LOCAL_FILES");
}
if (options && options.multipleStatements) {
defaultFlags.push("+MULTI_STATEMENTS");
}
return defaultFlags;
};
ConnectionConfig.getSSLProfile = function getSSLProfile(name) {
if (!SSLProfiles) {
SSLProfiles = require_ssl_profiles();
}
var ssl = SSLProfiles[name];
if (ssl === undefined) {
throw new TypeError("Unknown SSL profile \'" + name + "\'");
}
return ssl;
};
ConnectionConfig.parseFlagList = function parseFlagList(flagList) {
var allFlags = Object.create(null);
if (!flagList) {
return allFlags;
}
var flags = !Array.isArray(flagList) ? String(flagList || "").toUpperCase().split(/\s*,+\s*/) : flagList;
for (var i = 0;i < flags.length; i++) {
var flag = flags[i];
var offset = 1;
var state = flag[0];
if (state === undefined) {
continue;
}
if (state !== "-" && state !== "+") {
offset = 0;
state = "+";
}
allFlags[flag.substr(offset)] = state === "+";
}
return allFlags;
};
ConnectionConfig.parseUrl = function(url) {
url = urlParse(url, true);
var options = {
host: url.hostname,
port: url.port,
database: url.pathname.substr(1)
};
if (url.auth) {
var auth = url.auth.split(":");
options.user = auth.shift();
options.password = auth.join(":");
}
if (url.query) {
for (var key in url.query) {
var value = url.query[key];
try {
options[key] = JSON.parse(value);
} catch (err) {
options[key] = value;
}
}
}
return options;
};
});
// node_modules/mysql/lib/protocol/PacketHeader.js
var require_PacketHeader = __commonJS((exports, module) => {
module.exports = PacketHeader;
function PacketHeader(length, number) {
this.length = length;
this.number = number;
}
});
// node_modules/bignumber.js/bignumber.js
var require_bignumber = __commonJS((exports, module) => {
(function(globalObject) {
var BigNumber, isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, mathceil = Math.ceil, mathfloor = Math.floor, bignumberError = "[BigNumber Error] ", tooManyDigits = bignumberError + "Number primitive has more than 15 significant digits: ", BASE = 100000000000000, LOG_BASE = 14, MAX_SAFE_INTEGER = 9007199254740991, POWS_TEN = [1, 10, 100, 1000, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 10000000000, 100000000000, 1000000000000, 10000000000000], SQRT_BASE = 1e7, MAX = 1e9;
function clone(configObject) {
var div, convertBase, parseNumeric, P = BigNumber2.prototype = { constructor: BigNumber2, toString: null, valueOf: null }, ONE = new BigNumber2(1), DECIMAL_PLACES = 20, ROUNDING_MODE = 4, TO_EXP_NEG = -7, TO_EXP_POS = 21, MIN_EXP = -1e7, MAX_EXP = 1e7, CRYPTO = false, MODULO_MODE = 1, POW_PRECISION = 0, FORMAT = {
prefix: "",
groupSize: 3,
secondaryGroupSize: 0,
groupSeparator: ",",
decimalSeparator: ".",
fractionGroupSize: 0,
fractionGroupSeparator: "\xA0",
suffix: ""
}, ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz";
function BigNumber2(v, b) {
var alphabet, c, caseChanged, e, i, isNum, len, str, x = this;
if (!(x instanceof BigNumber2))
return new BigNumber2(v, b);
if (b == null) {
if (v && v._isBigNumber === true) {
x.s = v.s;
if (!v.c || v.e > MAX_EXP) {
x.c = x.e = null;
} else if (v.e < MIN_EXP) {
x.c = [x.e = 0];
} else {
x.e = v.e;
x.c = v.c.slice();
}
return;
}
if ((isNum = typeof v == "number") && v * 0 == 0) {
x.s = 1 / v < 0 ? (v = -v, -1) : 1;
if (v === ~~v) {
for (e = 0, i = v;i >= 10; i /= 10, e++)
;
if (e > MAX_EXP) {
x.c = x.e = null;
} else {
x.e = e;
x.c = [v];
}
return;
}
str = String(v);
} else {
if (!isNumeric.test(str = String(v)))
return parseNumeric(x, str, isNum);
x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;
}
if ((e = str.indexOf(".")) > -1)
str = str.replace(".", "");
if ((i = str.search(/e/i)) > 0) {
if (e < 0)
e = i;
e += +str.slice(i + 1);
str = str.substring(0, i);
} else if (e < 0) {
e = str.length;
}
} else {
intCheck(b, 2, ALPHABET.length, "Base");
if (b == 10) {
x = new BigNumber2(v);
return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);
}
str = String(v);
if (isNum = typeof v == "number") {
if (v * 0 != 0)
return parseNumeric(x, str, isNum, b);
x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;
if (BigNumber2.DEBUG && str.replace(/^0\.0*|\./, "").length > 15) {
throw Error(tooManyDigits + v);
}
} else {
x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;
}
alphabet = ALPHABET.slice(0, b);
e = i = 0;
for (len = str.length;i < len; i++) {
if (alphabet.indexOf(c = str.charAt(i)) < 0) {
if (c == ".") {
if (i > e) {
e = len;
continue;
}
} else if (!caseChanged) {
if (str == str.toUpperCase() && (str = str.toLowerCase()) || str == str.toLowerCase() && (str = str.toUpperCase())) {
caseChanged = true;
i = -1;
e = 0;
continue;
}
}
return parseNumeric(x, String(v), isNum, b);
}
}
isNum = false;
str = convertBase(str, b, 10, x.s);
if ((e = str.indexOf(".")) > -1)
str = str.replace(".", "");
else
e = str.length;
}
for (i = 0;str.charCodeAt(i) === 48; i++)
;
for (len = str.length;str.charCodeAt(--len) === 48; )
;
if (str = str.slice(i, ++len)) {
len -= i;
if (isNum && BigNumber2.DEBUG && len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {
throw Error(tooManyDigits + x.s * v);
}
if ((e = e - i - 1) > MAX_EXP) {
x.c = x.e = null;
} else if (e < MIN_EXP) {
x.c = [x.e = 0];
} else {
x.e = e;
x.c = [];
i = (e + 1) % LOG_BASE;
if (e < 0)
i += LOG_BASE;
if (i < len) {
if (i)
x.c.push(+str.slice(0, i));
for (len -= LOG_BASE;i < len; ) {
x.c.push(+str.slice(i, i += LOG_BASE));
}
i = LOG_BASE - (str = str.slice(i)).length;
} else {
i -= len;
}
for (;i--; str += "0")
;
x.c.push(+str);
}
} else {
x.c = [x.e = 0];
}
}
BigNumber2.clone = clone;
BigNumber2.ROUND_UP = 0;
BigNumber2.ROUND_DOWN = 1;
BigNumber2.ROUND_CEIL = 2;
BigNumber2.ROUND_FLOOR = 3;
BigNumber2.ROUND_HALF_UP = 4;
BigNumber2.ROUND_HALF_DOWN = 5;
BigNumber2.ROUND_HALF_EVEN = 6;
BigNumber2.ROUND_HALF_CEIL = 7;
BigNumber2.ROUND_HALF_FLOOR = 8;
BigNumber2.EUCLID = 9;
BigNumber2.config = BigNumber2.set = function(obj) {
var p, v;
if (obj != null) {
if (typeof obj == "object") {
if (obj.hasOwnProperty(p = "DECIMAL_PLACES")) {
v = obj[p];
intCheck(v, 0, MAX, p);
DECIMAL_PLACES = v;
}
if (obj.hasOwnProperty(p = "ROUNDING_MODE")) {
v = obj[p];
intCheck(v, 0, 8, p);
ROUNDING_MODE = v;
}
if (obj.hasOwnProperty(p = "EXPONENTIAL_AT")) {
v = obj[p];
if (v && v.pop) {
intCheck(v[0], -MAX, 0, p);
intCheck(v[1], 0, MAX, p);
TO_EXP_NEG = v[0];
TO_EXP_POS = v[1];
} else {
intCheck(v, -MAX, MAX, p);
TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);
}
}
if (obj.hasOwnProperty(p = "RANGE")) {
v = obj[p];
if (v && v.pop) {
intCheck(v[0], -MAX, -1, p);
intCheck(v[1], 1, MAX, p);
MIN_EXP = v[0];
MAX_EXP = v[1];
} else {
intCheck(v, -MAX, MAX, p);
if (v) {
MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);
} else {
throw Error(bignumberError + p + " cannot be zero: " + v);
}
}
}
if (obj.hasOwnProperty(p = "CRYPTO")) {
v = obj[p];
if (v === !!v) {
if (v) {
if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
CRYPTO = v;
} else {
CRYPTO = !v;
throw Error(bignumberError + "crypto unavailable");
}
} else {
CRYPTO = v;
}
} else {
throw Error(bignumberError + p + " not true or false: " + v);
}
}
if (obj.hasOwnProperty(p = "MODULO_MODE")) {
v = obj[p];
intCheck(v, 0, 9, p);
MODULO_MODE = v;
}
if (obj.hasOwnProperty(p = "POW_PRECISION")) {
v = obj[p];
intCheck(v, 0, MAX, p);
POW_PRECISION = v;
}
if (obj.hasOwnProperty(p = "FORMAT")) {
v = obj[p];
if (typeof v == "object")
FORMAT = v;
else
throw Error(bignumberError + p + " not an object: " + v);
}
if (obj.hasOwnProperty(p = "ALPHABET")) {
v = obj[p];
if (typeof v == "string" && !/^.$|[+-.\s]|(.).*\1/.test(v)) {
ALPHABET = v;
} else {
throw Error(bignumberError + p + " invalid: " + v);
}
}
} else {
throw Error(bignumberError + "Object expected: " + obj);
}
}
return {
DECIMAL_PLACES,
ROUNDING_MODE,
EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],
RANGE: [MIN_EXP, MAX_EXP],
CRYPTO,
MODULO_MODE,
POW_PRECISION,
FORMAT,
ALPHABET
};
};
BigNumber2.isBigNumber = function(v) {
if (!v || v._isBigNumber !== true)
return false;
if (!BigNumber2.DEBUG)
return true;
var i, n, c = v.c, e = v.e, s = v.s;
out:
if ({}.toString.call(c) == "[object Array]") {
if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {
if (c[0] === 0) {
if (e === 0 && c.length === 1)
return true;
break out;
}
i = (e + 1) % LOG_BASE;
if (i < 1)
i += LOG_BASE;
if (String(c[0]).length == i) {
for (i = 0;i < c.length; i++) {
n = c[i];
if (n < 0 || n >= BASE || n !== mathfloor(n))
break out;
}
if (n !== 0)
return true;
}
}
} else if (c === null && e === null && (s === null || s === 1 || s === -1)) {
return true;
}
throw Error(bignumberError + "Invalid BigNumber: " + v);
};
BigNumber2.maximum = BigNumber2.max = function() {
return maxOrMin(arguments, P.lt);
};
BigNumber2.minimum = BigNumber2.min = function() {
return maxOrMin(arguments, P.gt);
};
BigNumber2.random = function() {
var pow2_53 = 9007199254740992;
var random53bitInt = Math.random() * pow2_53 & 2097151 ? function() {
return mathfloor(Math.random() * pow2_53);
} : function() {
return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0);
};
return function(dp) {
var a, b, e, k, v, i = 0, c = [], rand = new BigNumber2(ONE);
if (dp == null)
dp = DECIMAL_PLACES;
else
intCheck(dp, 0, MAX);
k = mathceil(dp / LOG_BASE);
if (CRYPTO) {
if (crypto.getRandomValues) {
a = crypto.getRandomValues(new Uint32Array(k *= 2));
for (;i < k; ) {
v = a[i] * 131072 + (a[i + 1] >>> 11);
if (v >= 9000000000000000) {
b = crypto.getRandomValues(new Uint32Array(2));
a[i] = b[0];
a[i + 1] = b[1];
} else {
c.push(v % 100000000000000);
i += 2;
}
}
i = k / 2;
} else if (crypto.randomBytes) {
a = crypto.randomBytes(k *= 7);
for (;i < k; ) {
v = (a[i] & 31) * 281474976710656 + a[i + 1] * 1099511627776 + a[i + 2] * 4294967296 + a[i + 3] * 16777216 + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];
if (v >= 9000000000000000) {
crypto.randomBytes(7).copy(a, i);
} else {
c.push(v % 100000000000000);
i += 7;
}
}
i = k / 7;
} else {
CRYPTO = false;
throw Error(bignumberError + "crypto unavailable");
}
}
if (!CRYPTO) {
for (;i < k; ) {
v = random53bitInt();
if (v < 9000000000000000)
c[i++] = v % 100000000000000;
}
}
k = c[--i];
dp %= LOG_BASE;
if (k && dp) {
v = POWS_TEN[LOG_BASE - dp];
c[i] = mathfloor(k / v) * v;
}
for (;c[i] === 0; c.pop(), i--)
;
if (i < 0) {
c = [e = 0];
} else {
for (e = -1;c[0] === 0; c.splice(0, 1), e -= LOG_BASE)
;
for (i = 1, v = c[0];v >= 10; v /= 10, i++)
;
if (i < LOG_BASE)
e -= LOG_BASE - i;
}
rand.e = e;
rand.c = c;
return rand;
};
}();
BigNumber2.sum = function() {
var i = 1, args = arguments, sum = new BigNumber2(args[0]);
for (;i < args.length; )
sum = sum.plus(args[i++]);
return sum;
};
convertBase = function() {
var decimal = "0123456789";
function toBaseOut(str, baseIn, baseOut, alphabet) {
var j, arr = [0], arrL, i = 0, len = str.length;
for (;i < len; ) {
for (arrL = arr.length;arrL--; arr[arrL] *= baseIn)
;
arr[0] += alphabet.indexOf(str.charAt(i++));
for (j = 0;j < arr.length; j++) {
if (arr[j] > baseOut - 1) {
if (arr[j + 1] == null)
arr[j + 1] = 0;
arr[j + 1] += arr[j] / baseOut | 0;
arr[j] %= baseOut;
}
}
}
return arr.reverse();
}
return function(str, baseIn, baseOut, sign, callerIsToString) {
var alphabet, d, e, k, r, x, xc, y, i = str.indexOf("."), dp = DECIMAL_PLACES, rm = ROUNDING_MODE;
if (i >= 0) {
k = POW_PRECISION;
POW_PRECISION = 0;
str = str.replace(".", "");
y = new BigNumber2(baseIn);
x = y.pow(str.length - i);
POW_PRECISION = k;
y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, "0"), 10, baseOut, decimal);
y.e = y.c.length;
}
xc = toBaseOut(str, baseIn, baseOut, callerIsToString ? (alphabet = ALPHABET, decimal) : (alphabet = decimal, ALPHABET));
e = k = xc.length;
for (;xc[--k] == 0; xc.pop())
;
if (!xc[0])
return alphabet.charAt(0);
if (i < 0) {
--e;
} else {
x.c = xc;
x.e = e;
x.s = sign;
x = div(x, y, dp, rm, baseOut);
xc = x.c;
r = x.r;
e = x.e;
}
d = e + dp + 1;
i = xc[d];
k = baseOut / 2;
r = r || d < 0 || xc[d + 1] != null;
r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : i > k || i == k && (rm == 4 || r || rm == 6 && xc[d - 1] & 1 || rm == (x.s < 0 ? 8 : 7));
if (d < 1 || !xc[0]) {
str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);
} else {
xc.length = d;
if (r) {
for (--baseOut;++xc[--d] > baseOut; ) {
xc[d] = 0;
if (!d) {
++e;
xc = [1].concat(xc);
}
}
}
for (k = xc.length;!xc[--k]; )
;
for (i = 0, str = "";i <= k; str += alphabet.charAt(xc[i++]))
;
str = toFixedPoint(str, e, alphabet.charAt(0));
}
return str;
};
}();
div = function() {
function multiply(x, k, base) {
var m, temp, xlo, xhi, carry = 0, i = x.length, klo = k % SQRT_BASE, khi = k / SQRT_BASE | 0;
for (x = x.slice();i--; ) {
xlo = x[i] % SQRT_BASE;
xhi = x[i] / SQRT_BASE | 0;
m = khi * xlo + xhi * klo;
temp = klo * xlo + m % SQRT_BASE * SQRT_BASE + carry;
carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;
x[i] = temp % base;
}
if (carry)
x = [carry].concat(x);
return x;
}
function compare2(a, b, aL, bL) {
var i, cmp;
if (aL != bL) {
cmp = aL > bL ? 1 : -1;
} else {
for (i = cmp = 0;i < aL; i++) {
if (a[i] != b[i]) {
cmp = a[i] > b[i] ? 1 : -1;
break;
}
}
}
return cmp;
}
function subtract(a, b, aL, base) {
var i = 0;
for (;aL--; ) {
a[aL] -= i;
i = a[aL] < b[aL] ? 1 : 0;
a[aL] = i * base + a[aL] - b[aL];
}
for (;!a[0] && a.length > 1; a.splice(0, 1))
;
}
return function(x, y, dp, rm, base) {
var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, yL, yz, s = x.s == y.s ? 1 : -1, xc = x.c, yc = y.c;
if (!xc || !xc[0] || !yc || !yc[0]) {
return new BigNumber2(!x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : xc && xc[0] == 0 || !yc ? s * 0 : s / 0);
}
q = new BigNumber2(s);
qc = q.c = [];
e = x.e - y.e;
s = dp + e + 1;
if (!base) {
base = BASE;
e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);
s = s / LOG_BASE | 0;
}
for (i = 0;yc[i] == (xc[i] || 0); i++)
;
if (yc[i] > (xc[i] || 0))
e--;
if (s < 0) {
qc.push(1);
more = true;
} else {
xL = xc.length;
yL = yc.length;
i = 0;
s += 2;
n = mathfloor(base / (yc[0] + 1));
if (n > 1) {
yc = multiply(yc, n, base);
xc = multiply(xc, n, base);
yL = yc.length;
xL = xc.length;
}
xi = yL;
rem = xc.slice(0, yL);
remL = rem.length;
for (;remL < yL; rem[remL++] = 0)
;
yz = yc.slice();
yz = [0].concat(yz);
yc0 = yc[0];
if (yc[1] >= base / 2)
yc0++;
do {
n = 0;
cmp = compare2(yc, rem, yL, remL);
if (cmp < 0) {
rem0 = rem[0];
if (yL != remL)
rem0 = rem0 * base + (rem[1] || 0);
n = mathfloor(rem0 / yc0);
if (n > 1) {
if (n >= base)
n = base - 1;
prod = multiply(yc, n, base);
prodL = prod.length;
remL = rem.length;
while (compare2(prod, rem, prodL, remL) == 1) {
n--;
subtract(prod, yL < prodL ? yz : yc, prodL, base);
prodL = prod.length;
cmp = 1;
}
} else {
if (n == 0) {
cmp = n = 1;
}
prod = yc.slice();
prodL = prod.length;
}
if (prodL < remL)
prod = [0].concat(prod);
subtract(rem, prod, remL, base);
remL = rem.length;
if (cmp == -1) {
while (compare2(yc, rem, yL, remL) < 1) {
n++;
subtract(rem, yL < remL ? yz : yc, remL, base);
remL = rem.length;
}
}
} else if (cmp === 0) {
n++;
rem = [0];
}
qc[i++] = n;
if (rem[0]) {
rem[remL++] = xc[xi] || 0;
} else {
rem = [xc[xi]];
remL = 1;
}
} while ((xi++ < xL || rem[0] != null) && s--);
more = rem[0] != null;
if (!qc[0])
qc.splice(0, 1);
}
if (base == BASE) {
for (i = 1, s = qc[0];s >= 10; s /= 10, i++)
;
round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);
} else {
q.e = e;
q.r = +more;
}
return q;
};
}();
function format(n, i, rm, id) {
var c0, e, ne, len, str;
if (rm == null)
rm = ROUNDING_MODE;
else
intCheck(rm, 0, 8);
if (!n.c)
return n.toString();
c0 = n.c[0];
ne = n.e;
if (i == null) {
str = coeffToString(n.c);
str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) ? toExponential(str, ne) : toFixedPoint(str, ne, "0");
} else {
n = round(new BigNumber2(n), i, rm);
e = n.e;
str = coeffToString(n.c);
len = str.length;
if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {
for (;len < i; str += "0", len++)
;
str = toExponential(str, e);
} else {
i -= ne;
str = toFixedPoint(str, e, "0");
if (e + 1 > len) {
if (--i > 0)
for (str += ".";i--; str += "0")
;
} else {
i += e - len;
if (i > 0) {
if (e + 1 == len)
str += ".";
for (;i--; str += "0")
;
}
}
}
}
return n.s < 0 && c0 ? "-" + str : str;
}
function maxOrMin(args, method) {
var n, i = 1, m = new BigNumber2(args[0]);
for (;i < args.length; i++) {
n = new BigNumber2(args[i]);
if (!n.s) {
m = n;
break;
} else if (method.call(m, n)) {
m = n;
}
}
return m;
}
function normalise(n, c, e) {
var i = 1, j = c.length;
for (;!c[--j]; c.pop())
;
for (j = c[0];j >= 10; j /= 10, i++)
;
if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {
n.c = n.e = null;
} else if (e < MIN_EXP) {
n.c = [n.e = 0];
} else {
n.e = e;
n.c = c;
}
return n;
}
parseNumeric = function() {
var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, dotAfter = /^([^.]+)\.$/, dotBefore = /^\.([^.]+)$/, isInfinityOrNaN = /^-?(Infinity|NaN)$/, whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g;
return function(x, str, isNum, b) {
var base, s = isNum ? str : str.replace(whitespaceOrPlus, "");
if (isInfinityOrNaN.test(s)) {
x.s = isNaN(s) ? null : s < 0 ? -1 : 1;
} else {
if (!isNum) {
s = s.replace(basePrefix, function(m, p1, p2) {
base = (p2 = p2.toLowerCase()) == "x" ? 16 : p2 == "b" ? 2 : 8;
return !b || b == base ? p1 : m;
});
if (b) {
base = b;
s = s.replace(dotAfter, "$1").replace(dotBefore, "0.$1");
}
if (str != s)
return new BigNumber2(s, base);
}
if (BigNumber2.DEBUG) {
throw Error(bignumberError + "Not a" + (b ? " base " + b : "") + " number: " + str);
}
x.s = null;
}
x.c = x.e = null;
};
}();
function round(x, sd, rm, r) {
var d, i, j, k, n, ni, rd, xc = x.c, pows10 = POWS_TEN;
if (xc) {
out: {
for (d = 1, k = xc[0];k >= 10; k /= 10, d++)
;
i = sd - d;
if (i < 0) {
i += LOG_BASE;
j = sd;
n = xc[ni = 0];
rd = n / pows10[d - j - 1] % 10 | 0;
} else {
ni = mathceil((i + 1) / LOG_BASE);
if (ni >= xc.length) {
if (r) {
for (;xc.length <= ni; xc.push(0))
;
n = rd = 0;
d = 1;
i %= LOG_BASE;
j = i - LOG_BASE + 1;
} else {
break out;
}
} else {
n = k = xc[ni];
for (d = 1;k >= 10; k /= 10, d++)
;
i %= LOG_BASE;
j = i - LOG_BASE + d;
rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;
}
}
r = r || sd < 0 || xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);
r = rm < 4 ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && (i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
if (sd < 1 || !xc[0]) {
xc.length = 0;
if (r) {
sd -= x.e + 1;
xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];
x.e = -sd || 0;
} else {
xc[0] = x.e = 0;
}
return x;
}
if (i == 0) {
xc.length = ni;
k = 1;
ni--;
} else {
xc.length = ni + 1;
k = pows10[LOG_BASE - i];
xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;
}
if (r) {
for (;; ) {
if (ni == 0) {
for (i = 1, j = xc[0];j >= 10; j /= 10, i++)
;
j = xc[0] += k;
for (k = 1;j >= 10; j /= 10, k++)
;
if (i != k) {
x.e++;
if (xc[0] == BASE)
xc[0] = 1;
}
break;
} else {
xc[ni] += k;
if (xc[ni] != BASE)
break;
xc[ni--] = 0;
k = 1;
}
}
}
for (i = xc.length;xc[--i] === 0; xc.pop())
;
}
if (x.e > MAX_EXP) {
x.c = x.e = null;
} else if (x.e < MIN_EXP) {
x.c = [x.e = 0];
}
}
return x;
}
function valueOf(n) {
var str, e = n.e;
if (e === null)
return n.toString();
str = coeffToString(n.c);
str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(str, e) : toFixedPoint(str, e, "0");
return n.s < 0 ? "-" + str : str;
}
P.absoluteValue = P.abs = function() {
var x = new BigNumber2(this);
if (x.s < 0)
x.s = 1;
return x;
};
P.comparedTo = function(y, b) {
return compare(this, new BigNumber2(y, b));
};
P.decimalPlaces = P.dp = function(dp, rm) {
var c, n, v, x = this;
if (dp != null) {
intCheck(dp, 0, MAX);
if (rm == null)
rm = ROUNDING_MODE;
else
intCheck(rm, 0, 8);
return round(new BigNumber2(x), dp + x.e + 1, rm);
}
if (!(c = x.c))
return null;
n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;
if (v = c[v])
for (;v % 10 == 0; v /= 10, n--)
;
if (n < 0)
n = 0;
return n;
};
P.dividedBy = P.div = function(y, b) {
return div(this, new BigNumber2(y, b), DECIMAL_PLACES, ROUNDING_MODE);
};
P.dividedToIntegerBy = P.idiv = function(y, b) {
return div(this, new BigNumber2(y, b), 0, 1);
};
P.exponentiatedBy = P.pow = function(n, m) {
var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, x = this;
n = new BigNumber2(n);
if (n.c && !n.isInteger()) {
throw Error(bignumberError + "Exponent not an integer: " + valueOf(n));
}
if (m != null)
m = new BigNumber2(m);
nIsBig = n.e > 14;
if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {
y = new BigNumber2(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));
return m ? y.mod(m) : y;
}
nIsNeg = n.s < 0;
if (m) {
if (m.c ? !m.c[0] : !m.s)
return new BigNumber2(NaN);
isModExp = !nIsNeg && x.isInteger() && m.isInteger();
if (isModExp)
x = x.mod(m);
} else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 ? x.c[0] > 1 || nIsBig && x.c[1] >= 240000000 : x.c[0] < 80000000000000 || nIsBig && x.c[0] <= 99999750000000))) {
k = x.s < 0 && isOdd(n) ? -0 : 0;
if (x.e > -1)
k = 1 / k;
return new BigNumber2(nIsNeg ? 1 / k : k);
} else if (POW_PRECISION) {
k = mathceil(POW_PRECISION / LOG_BASE + 2);
}
if (nIsBig) {
half = new BigNumber2(0.5);
if (nIsNeg)
n.s = 1;
nIsOdd = isOdd(n);
} else {
i = Math.abs(+valueOf(n));
nIsOdd = i % 2;
}
y = new BigNumber2(ONE);
for (;; ) {
if (nIsOdd) {
y = y.times(x);
if (!y.c)
break;
if (k) {
if (y.c.length > k)
y.c.length = k;
} else if (isModExp) {
y = y.mod(m);
}
}
if (i) {
i = mathfloor(i / 2);
if (i === 0)
break;
nIsOdd = i % 2;
} else {
n = n.times(half);
round(n, n.e + 1, 1);
if (n.e > 14) {
nIsOdd = isOdd(n);
} else {
i = +valueOf(n);
if (i === 0)
break;
nIsOdd = i % 2;
}
}
x = x.times(x);
if (k) {
if (x.c && x.c.length > k)
x.c.length = k;
} else if (isModExp) {
x = x.mod(m);
}
}
if (isModExp)
return y;
if (nIsNeg)
y = ONE.div(y);
return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;
};
P.integerValue = function(rm) {
var n = new BigNumber2(this);
if (rm == null)
rm = ROUNDING_MODE;
else
intCheck(rm, 0, 8);
return round(n, n.e + 1, rm);
};
P.isEqualTo = P.eq = function(y, b) {
return compare(this, new BigNumber2(y, b)) === 0;
};
P.isFinite = function() {
return !!this.c;
};
P.isGreaterThan = P.gt = function(y, b) {
return compare(this, new BigNumber2(y, b)) > 0;
};
P.isGreaterThanOrEqualTo = P.gte = function(y, b) {
return (b = compare(this, new BigNumber2(y, b))) === 1 || b === 0;
};
P.isInteger = function() {
return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;
};
P.isLessThan = P.lt = function(y, b) {
return compare(this, new BigNumber2(y, b)) < 0;
};
P.isLessThanOrEqualTo = P.lte = function(y, b) {
return (b = compare(this, new BigNumber2(y, b))) === -1 || b === 0;
};
P.isNaN = function() {
return !this.s;
};
P.isNegative = function() {
return this.s < 0;
};
P.isPositive = function() {
return this.s > 0;
};
P.isZero = function() {
return !!this.c && this.c[0] == 0;
};
P.minus = function(y, b) {
var i, j, t, xLTy, x = this, a = x.s;
y = new BigNumber2(y, b);
b = y.s;
if (!a || !b)
return new BigNumber2(NaN);
if (a != b) {
y.s = -b;
return x.plus(y);
}
var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;
if (!xe || !ye) {
if (!xc || !yc)
return xc ? (y.s = -b, y) : new BigNumber2(yc ? x : NaN);
if (!xc[0] || !yc[0]) {
return yc[0] ? (y.s = -b, y) : new BigNumber2(xc[0] ? x : ROUNDING_MODE == 3 ? -0 : 0);
}
}
xe = bitFloor(xe);
ye = bitFloor(ye);
xc = xc.slice();
if (a = xe - ye) {
if (xLTy = a < 0) {
a = -a;
t = xc;
} else {
ye = xe;
t = yc;
}
t.reverse();
for (b = a;b--; t.push(0))
;
t.reverse();
} else {
j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;
for (a = b = 0;b < j; b++) {
if (xc[b] != yc[b]) {
xLTy = xc[b] < yc[b];
break;
}
}
}
if (xLTy)
t = xc, xc = yc, yc = t, y.s = -y.s;
b = (j = yc.length) - (i = xc.length);
if (b > 0)
for (;b--; xc[i++] = 0)
;
b = BASE - 1;
for (;j > a; ) {
if (xc[--j] < yc[j]) {
for (i = j;i && !xc[--i]; xc[i] = b)
;
--xc[i];
xc[j] += BASE;
}
xc[j] -= yc[j];
}
for (;xc[0] == 0; xc.splice(0, 1), --ye)
;
if (!xc[0]) {
y.s = ROUNDING_MODE == 3 ? -1 : 1;
y.c = [y.e = 0];
return y;
}
return normalise(y, xc, ye);
};
P.modulo = P.mod = function(y, b) {
var q, s, x = this;
y = new BigNumber2(y, b);
if (!x.c || !y.s || y.c && !y.c[0]) {
return new BigNumber2(NaN);
} else if (!y.c || x.c && !x.c[0]) {
return new BigNumber2(x);
}
if (MODULO_MODE == 9) {
s = y.s;
y.s = 1;
q = div(x, y, 0, 3);
y.s = s;
q.s *= s;
} else {
q = div(x, y, 0, MODULO_MODE);
}
y = x.minus(q.times(y));
if (!y.c[0] && MODULO_MODE == 1)
y.s = x.s;
return y;
};
P.multipliedBy = P.times = function(y, b) {
var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, base, sqrtBase, x = this, xc = x.c, yc = (y = new BigNumber2(y, b)).c;
if (!xc || !yc || !xc[0] || !yc[0]) {
if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {
y.c = y.e = y.s = null;
} else {
y.s *= x.s;
if (!xc || !yc) {
y.c = y.e = null;
} else {
y.c = [0];
y.e = 0;
}
}
return y;
}
e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);
y.s *= x.s;
xcL = xc.length;
ycL = yc.length;
if (xcL < ycL)
zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;
for (i = xcL + ycL, zc = [];i--; zc.push(0))
;
base = BASE;
sqrtBase = SQRT_BASE;
for (i = ycL;--i >= 0; ) {
c = 0;
ylo = yc[i] % sqrtBase;
yhi = yc[i] / sqrtBase | 0;
for (k = xcL, j = i + k;j > i; ) {
xlo = xc[--k] % sqrtBase;
xhi = xc[k] / sqrtBase | 0;
m = yhi * xlo + xhi * ylo;
xlo = ylo * xlo + m % sqrtBase * sqrtBase + zc[j] + c;
c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;
zc[j--] = xlo % base;
}
zc[j] = c;
}
if (c) {
++e;
} else {
zc.splice(0, 1);
}
return normalise(y, zc, e);
};
P.negated = function() {
var x = new BigNumber2(this);
x.s = -x.s || null;
return x;
};
P.plus = function(y, b) {
var t, x = this, a = x.s;
y = new BigNumber2(y, b);
b = y.s;
if (!a || !b)
return new BigNumber2(NaN);
if (a != b) {
y.s = -b;
return x.minus(y);
}
var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;
if (!xe || !ye) {
if (!xc || !yc)
return new BigNumber2(a / 0);
if (!xc[0] || !yc[0])
return yc[0] ? y : new BigNumber2(xc[0] ? x : a * 0);
}
xe = bitFloor(xe);
ye = bitFloor(ye);
xc = xc.slice();
if (a = xe - ye) {
if (a > 0) {
ye = xe;
t = yc;
} else {
a = -a;
t = xc;
}
t.reverse();
for (;a--; t.push(0))
;
t.reverse();
}
a = xc.length;
b = yc.length;
if (a - b < 0)
t = yc, yc = xc, xc = t, b = a;
for (a = 0;b; ) {
a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;
xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;
}
if (a) {
xc = [a].concat(xc);
++ye;
}
return normalise(y, xc, ye);
};
P.precision = P.sd = function(sd, rm) {
var c, n, v, x = this;
if (sd != null && sd !== !!sd) {
intCheck(sd, 1, MAX);
if (rm == null)
rm = ROUNDING_MODE;
else
intCheck(rm, 0, 8);
return round(new BigNumber2(x), sd, rm);
}
if (!(c = x.c))
return null;
v = c.length - 1;
n = v * LOG_BASE + 1;
if (v = c[v]) {
for (;v % 10 == 0; v /= 10, n--)
;
for (v = c[0];v >= 10; v /= 10, n++)
;
}
if (sd && x.e + 1 > n)
n = x.e + 1;
return n;
};
P.shiftedBy = function(k) {
intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);
return this.times("1e" + k);
};
P.squareRoot = P.sqrt = function() {
var m, n, r, rep, t, x = this, c = x.c, s = x.s, e = x.e, dp = DECIMAL_PLACES + 4, half = new BigNumber2("0.5");
if (s !== 1 || !c || !c[0]) {
return new BigNumber2(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);
}
s = Math.sqrt(+valueOf(x));
if (s == 0 || s == 1 / 0) {
n = coeffToString(c);
if ((n.length + e) % 2 == 0)
n += "0";
s = Math.sqrt(+n);
e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);
if (s == 1 / 0) {
n = "1e" + e;
} else {
n = s.toExponential();
n = n.slice(0, n.indexOf("e") + 1) + e;
}
r = new BigNumber2(n);
} else {
r = new BigNumber2(s + "");
}
if (r.c[0]) {
e = r.e;
s = e + dp;
if (s < 3)
s = 0;
for (;; ) {
t = r;
r = half.times(t.plus(div(x, t, dp, 1)));
if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {
if (r.e < e)
--s;
n = n.slice(s - 3, s + 1);
if (n == "9999" || !rep && n == "4999") {
if (!rep) {
round(t, t.e + DECIMAL_PLACES + 2, 0);
if (t.times(t).eq(x)) {
r = t;
break;
}
}
dp += 4;
s += 4;
rep = 1;
} else {
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
round(r, r.e + DECIMAL_PLACES + 2, 1);
m = !r.times(r).eq(x);
}
break;
}
}
}
}
return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);
};
P.toExponential = function(dp, rm) {
if (dp != null) {
intCheck(dp, 0, MAX);
dp++;
}
return format(this, dp, rm, 1);
};
P.toFixed = function(dp, rm) {
if (dp != null) {
intCheck(dp, 0, MAX);
dp = dp + this.e + 1;
}
return format(this, dp, rm);
};
P.toFormat = function(dp, rm, format2) {
var str, x = this;
if (format2 == null) {
if (dp != null && rm && typeof rm == "object") {
format2 = rm;
rm = null;
} else if (dp && typeof dp == "object") {
format2 = dp;
dp = rm = null;
} else {
format2 = FORMAT;
}
} else if (typeof format2 != "object") {
throw Error(bignumberError + "Argument not an object: " + format2);
}
str = x.toFixed(dp, rm);
if (x.c) {
var i, arr = str.split("."), g1 = +format2.groupSize, g2 = +format2.secondaryGroupSize, groupSeparator = format2.groupSeparator || "", intPart = arr[0], fractionPart = arr[1], isNeg = x.s < 0, intDigits = isNeg ? intPart.slice(1) : intPart, len = intDigits.length;
if (g2)
i = g1, g1 = g2, g2 = i, len -= i;
if (g1 > 0 && len > 0) {
i = len % g1 || g1;
intPart = intDigits.substr(0, i);
for (;i < len; i += g1)
intPart += groupSeparator + intDigits.substr(i, g1);
if (g2 > 0)
intPart += groupSeparator + intDigits.slice(i);
if (isNeg)
intPart = "-" + intPart;
}
str = fractionPart ? intPart + (format2.decimalSeparator || "") + ((g2 = +format2.fractionGroupSize) ? fractionPart.replace(new RegExp("\\d{" + g2 + "}\\B", "g"), "$&" + (format2.fractionGroupSeparator || "")) : fractionPart) : intPart;
}
return (format2.prefix || "") + str + (format2.suffix || "");
};
P.toFraction = function(md) {
var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, x = this, xc = x.c;
if (md != null) {
n = new BigNumber2(md);
if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {
throw Error(bignumberError + "Argument " + (n.isInteger() ? "out of range: " : "not an integer: ") + valueOf(n));
}
}
if (!xc)
return new BigNumber2(x);
d = new BigNumber2(ONE);
n1 = d0 = new BigNumber2(ONE);
d1 = n0 = new BigNumber2(ONE);
s = coeffToString(xc);
e = d.e = s.length - x.e - 1;
d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];
md = !md || n.comparedTo(d) > 0 ? e > 0 ? d : n1 : n;
exp = MAX_EXP;
MAX_EXP = 1 / 0;
n = new BigNumber2(s);
n0.c[0] = 0;
for (;; ) {
q = div(n, d, 0, 1);
d2 = d0.plus(q.times(d1));
if (d2.comparedTo(md) == 1)
break;
d0 = d1;
d1 = d2;
n1 = n0.plus(q.times(d2 = n1));
n0 = d2;
d = n.minus(q.times(d2 = d));
n = d2;
}
d2 = div(md.minus(d0), d1, 0, 1);
n0 = n0.plus(d2.times(n1));
d0 = d0.plus(d2.times(d1));
n0.s = n1.s = x.s;
e = e * 2;
r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];
MAX_EXP = exp;
return r;
};
P.toNumber = function() {
return +valueOf(this);
};
P.toPrecision = function(sd, rm) {
if (sd != null)
intCheck(sd, 1, MAX);
return format(this, sd, rm, 2);
};
P.toString = function(b) {
var str, n = this, s = n.s, e = n.e;
if (e === null) {
if (s) {
str = "Infinity";
if (s < 0)
str = "-" + str;
} else {
str = "NaN";
}
} else {
if (b == null) {
str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(coeffToString(n.c), e) : toFixedPoint(coeffToString(n.c), e, "0");
} else if (b === 10) {
n = round(new BigNumber2(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);
str = toFixedPoint(coeffToString(n.c), n.e, "0");
} else {
intCheck(b, 2, ALPHABET.length, "Base");
str = convertBase(toFixedPoint(coeffToString(n.c), e, "0"), 10, b, s, true);
}
if (s < 0 && n.c[0])
str = "-" + str;
}
return str;
};
P.valueOf = P.toJSON = function() {
return valueOf(this);
};
P._isBigNumber = true;
if (configObject != null)
BigNumber2.set(configObject);
return BigNumber2;
}
function bitFloor(n) {
var i = n | 0;
return n > 0 || n === i ? i : i - 1;
}
function coeffToString(a) {
var s, z, i = 1, j = a.length, r = a[0] + "";
for (;i < j; ) {
s = a[i++] + "";
z = LOG_BASE - s.length;
for (;z--; s = "0" + s)
;
r += s;
}
for (j = r.length;r.charCodeAt(--j) === 48; )
;
return r.slice(0, j + 1 || 1);
}
function compare(x, y) {
var a, b, xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;
if (!i || !j)
return null;
a = xc && !xc[0];
b = yc && !yc[0];
if (a || b)
return a ? b ? 0 : -j : i;
if (i != j)
return i;
a = i < 0;
b = k == l;
if (!xc || !yc)
return b ? 0 : !xc ^ a ? 1 : -1;
if (!b)
return k > l ^ a ? 1 : -1;
j = (k = xc.length) < (l = yc.length) ? k : l;
for (i = 0;i < j; i++)
if (xc[i] != yc[i])
return xc[i] > yc[i] ^ a ? 1 : -1;
return k == l ? 0 : k > l ^ a ? 1 : -1;
}
function intCheck(n, min, max, name) {
if (n < min || n > max || n !== mathfloor(n)) {
throw Error(bignumberError + (name || "Argument") + (typeof n == "number" ? n < min || n > max ? " out of range: " : " not an integer: " : " not a primitive number: ") + String(n));
}
}
function isOdd(n) {
var k = n.c.length - 1;
return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;
}
function toExponential(str, e) {
return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e < 0 ? "e" : "e+") + e;
}
function toFixedPoint(str, e, z) {
var len, zs;
if (e < 0) {
for (zs = z + ".";++e; zs += z)
;
str = zs + str;
} else {
len = str.length;
if (++e > len) {
for (zs = z, e -= len;--e; zs += z)
;
str += zs;
} else if (e < len) {
str = str.slice(0, e) + "." + str.slice(e);
}
}
return str;
}
BigNumber = clone();
BigNumber["default"] = BigNumber.BigNumber = BigNumber;
if (typeof define == "function" && define.amd) {
define(function() {
return BigNumber;
});
} else if (typeof module != "undefined" && module.exports) {
module.exports = BigNumber;
} else {
if (!globalObject) {
globalObject = typeof self != "undefined" && self ? self : window;
}
globalObject.BigNumber = BigNumber;
}
})(exports);
});
// node_modules/safe-buffer/index.js
var require_safe_buffer = __commonJS((exports, module) => {
var buffer = __require("buffer");
var Buffer2 = buffer.Buffer;
function copyProps(src, dst) {
for (var key in src) {
dst[key] = src[key];
}
}
if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) {
module.exports = buffer;
} else {
copyProps(buffer, exports);
exports.Buffer = SafeBuffer;
}
function SafeBuffer(arg, encodingOrOffset, length) {
return Buffer2(arg, encodingOrOffset, length);
}
copyProps(Buffer2, SafeBuffer);
SafeBuffer.from = function(arg, encodingOrOffset, length) {
if (typeof arg === "number") {
throw new TypeError("Argument must not be a number");
}
return Buffer2(arg, encodingOrOffset, length);
};
SafeBuffer.alloc = function(size, fill, encoding) {
if (typeof size !== "number") {
throw new TypeError("Argument must be a number");
}
var buf = Buffer2(size);
if (fill !== undefined) {
if (typeof encoding === "string") {
buf.fill(fill, encoding);
} else {
buf.fill(fill);
}
} else {
buf.fill(0);
}
return buf;
};
SafeBuffer.allocUnsafe = function(size) {
if (typeof size !== "number") {
throw new TypeError("Argument must be a number");
}
return Buffer2(size);
};
SafeBuffer.allocUnsafeSlow = function(size) {
if (typeof size !== "number") {
throw new TypeError("Argument must be a number");
}
return buffer.SlowBuffer(size);
};
});
// node_modules/mysql/lib/protocol/BufferList.js
var require_BufferList = __commonJS((exports, module) => {
module.exports = BufferList;
function BufferList() {
this.bufs = [];
this.size = 0;
}
BufferList.prototype.shift = function shift() {
var buf = this.bufs.shift();
if (buf) {
this.size -= buf.length;
}
return buf;
};
BufferList.prototype.push = function push(buf) {
if (!buf || !buf.length) {
return;
}
this.bufs.push(buf);
this.size += buf.length;
};
});
// node_modules/mysql/lib/protocol/Parser.js
var require_Parser = __commonJS((exports, module) => {
var PacketHeader = require_PacketHeader();
var BigNumber = require_bignumber();
var Buffer2 = require_safe_buffer().Buffer;
var BufferList = require_BufferList();
var MAX_PACKET_LENGTH = Math.pow(2, 24) - 1;
var MUL_32BIT = Math.pow(2, 32);
var PACKET_HEADER_LENGTH = 4;
module.exports = Parser;
function Parser(options) {
options = options || {};
this._supportBigNumbers = options.config && options.config.supportBigNumbers;
this._buffer = Buffer2.alloc(0);
this._nextBuffers = new BufferList;
this._longPacketBuffers = new BufferList;
this._offset = 0;
this._packetEnd = null;
this._packetHeader = null;
this._packetOffset = null;
this._onError = options.onError || function(err) {
throw err;
};
this._onPacket = options.onPacket || function() {
};
this._nextPacketNumber = 0;
this._encoding = "utf-8";
this._paused = false;
}
Parser.prototype.write = function write(chunk) {
this._nextBuffers.push(chunk);
while (!this._paused) {
var packetHeader = this._tryReadPacketHeader();
if (!packetHeader) {
break;
}
if (!this._combineNextBuffers(packetHeader.length)) {
break;
}
this._parsePacket(packetHeader);
}
};
Parser.prototype.append = function append(chunk) {
if (!chunk || chunk.length === 0) {
return;
}
var sliceEnd = this._buffer.length;
var sliceStart = this._packetOffset === null ? this._offset : this._packetOffset;
var sliceLength = sliceEnd - sliceStart;
var buffer = null;
var chunks = !(chunk instanceof Array || Array.isArray(chunk)) ? [chunk] : chunk;
var length = 0;
var offset = 0;
for (var i = 0;i < chunks.length; i++) {
length += chunks[i].length;
}
if (sliceLength !== 0) {
buffer = Buffer2.allocUnsafe(sliceLength + length);
offset = 0;
offset += this._buffer.copy(buffer, 0, sliceStart, sliceEnd);
for (var i = 0;i < chunks.length; i++) {
offset += chunks[i].copy(buffer, offset);
}
} else if (chunks.length > 1) {
buffer = Buffer2.allocUnsafe(length);
offset = 0;
for (var i = 0;i < chunks.length; i++) {
offset += chunks[i].copy(buffer, offset);
}
} else {
buffer = chunks[0];
}
this._buffer = buffer;
this._offset = this._offset - sliceStart;
this._packetEnd = this._packetEnd !== null ? this._packetEnd - sliceStart : null;
this._packetOffset = this._packetOffset !== null ? this._packetOffset - sliceStart : null;
};
Parser.prototype.pause = function() {
this._paused = true;
};
Parser.prototype.resume = function() {
this._paused = false;
process.nextTick(this.write.bind(this));
};
Parser.prototype.peak = function peak(offset) {
return this._buffer[this._offset + (offset >>> 0)];
};
Parser.prototype.parseUnsignedNumber = function parseUnsignedNumber(bytes) {
if (bytes === 1) {
return this._buffer[this._offset++];
}
var buffer = this._buffer;
var offset = this._offset + bytes - 1;
var value = 0;
if (bytes > 4) {
var err = new Error("parseUnsignedNumber: Supports only up to 4 bytes");
err.offset = this._offset - this._packetOffset - 1;
err.code = "PARSER_UNSIGNED_TOO_LONG";
throw err;
}
while (offset >= this._offset) {
value = (value << 8 | buffer[offset]) >>> 0;
offset--;
}
this._offset += bytes;
return value;
};
Parser.prototype.parseLengthCodedString = function() {
var length = this.parseLengthCodedNumber();
if (length === null) {
return null;
}
return this.parseString(length);
};
Parser.prototype.parseLengthCodedBuffer = function() {
var length = this.parseLengthCodedNumber();
if (length === null) {
return null;
}
return this.parseBuffer(length);
};
Parser.prototype.parseLengthCodedNumber = function parseLengthCodedNumber() {
if (this._offset >= this._buffer.length) {
var err = new Error("Parser: read past end");
err.offset = this._offset - this._packetOffset;
err.code = "PARSER_READ_PAST_END";
throw err;
}
var bits = this._buffer[this._offset++];
if (bits <= 250) {
return bits;
}
switch (bits) {
case 251:
return null;
case 252:
return this.parseUnsignedNumber(2);
case 253:
return this.parseUnsignedNumber(3);
case 254:
break;
default:
var err = new Error("Unexpected first byte" + (bits ? ": 0x" + bits.toString(16) : ""));
err.offset = this._offset - this._packetOffset - 1;
err.code = "PARSER_BAD_LENGTH_BYTE";
throw err;
}
var low = this.parseUnsignedNumber(4);
var high = this.parseUnsignedNumber(4);
var value;
if (high >>> 21) {
value = BigNumber(MUL_32BIT).times(high).plus(low).toString();
if (this._supportBigNumbers) {
return value;
}
var err = new Error("parseLengthCodedNumber: JS precision range exceeded, " + 'number is >= 53 bit: "' + value + '"');
err.offset = this._offset - this._packetOffset - 8;
err.code = "PARSER_JS_PRECISION_RANGE_EXCEEDED";
throw err;
}
value = low + MUL_32BIT * high;
return value;
};
Parser.prototype.parseFiller = function(length) {
return this.parseBuffer(length);
};
Parser.prototype.parseNullTerminatedBuffer = function() {
var end = this._nullByteOffset();
var value = this._buffer.slice(this._offset, end);
this._offset = end + 1;
return value;
};
Parser.prototype.parseNullTerminatedString = function() {
var end = this._nullByteOffset();
var value = this._buffer.toString(this._encoding, this._offset, end);
this._offset = end + 1;
return value;
};
Parser.prototype._nullByteOffset = function() {
var offset = this._offset;
while (this._buffer[offset] !== 0) {
offset++;
if (offset >= this._buffer.length) {
var err = new Error("Offset of null terminated string not found.");
err.offset = this._offset - this._packetOffset;
err.code = "PARSER_MISSING_NULL_BYTE";
throw err;
}
}
return offset;
};
Parser.prototype.parsePacketTerminatedBuffer = function parsePacketTerminatedBuffer() {
var length = this._packetEnd - this._offset;
return this.parseBuffer(length);
};
Parser.prototype.parsePacketTerminatedString = function() {
var length = this._packetEnd - this._offset;
return this.parseString(length);
};
Parser.prototype.parseBuffer = function(length) {
var response = Buffer2.alloc(length);
this._buffer.copy(response, 0, this._offset, this._offset + length);
this._offset += length;
return response;
};
Parser.prototype.parseString = function(length) {
var offset = this._offset;
var end = offset + length;
var value = this._buffer.toString(this._encoding, offset, end);
this._offset = end;
return value;
};
Parser.prototype.parseGeometryValue = function() {
var buffer = this.parseLengthCodedBuffer();
var offset = 4;
if (buffer === null || !buffer.length) {
return null;
}
function parseGeometry() {
var result = null;
var byteOrder = buffer.readUInt8(offset);
offset += 1;
var wkbType = byteOrder ? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset);
offset += 4;
switch (wkbType) {
case 1:
var x = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
var y = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
result = { x, y };
break;
case 2:
var numPoints = byteOrder ? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset);
offset += 4;
result = [];
for (var i = numPoints;i > 0; i--) {
var x = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
var y = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
result.push({ x, y });
}
break;
case 3:
var numRings = byteOrder ? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset);
offset += 4;
result = [];
for (var i = numRings;i > 0; i--) {
var numPoints = byteOrder ? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset);
offset += 4;
var line = [];
for (var j = numPoints;j > 0; j--) {
var x = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
var y = byteOrder ? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset);
offset += 8;
line.push({ x, y });
}
result.push(line);
}
break;
case 4:
case 5:
case 6:
case 7:
var num = byteOrder ? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset);
offset += 4;
var result = [];
for (var i = num;i > 0; i--) {
result.push(parseGeometry());
}
break;
}
return result;
}
return parseGeometry();
};
Parser.prototype.reachedPacketEnd = function() {
return this._offset === this._packetEnd;
};
Parser.prototype.incrementPacketNumber = function() {
var currentPacketNumber = this._nextPacketNumber;
this._nextPacketNumber = (this._nextPacketNumber + 1) % 256;
return currentPacketNumber;
};
Parser.prototype.resetPacketNumber = function() {
this._nextPacketNumber = 0;
};
Parser.prototype.packetLength = function packetLength() {
if (!this._packetHeader) {
return null;
}
return this._packetHeader.length + this._longPacketBuffers.size;
};
Parser.prototype._combineNextBuffers = function _combineNextBuffers(bytes) {
var length = this._buffer.length - this._offset;
if (length >= bytes) {
return true;
}
if (length + this._nextBuffers.size < bytes) {
return false;
}
var buffers = [];
var bytesNeeded = bytes - length;
while (bytesNeeded > 0) {
var buffer = this._nextBuffers.shift();
buffers.push(buffer);
bytesNeeded -= buffer.length;
}
this.append(buffers);
return true;
};
Parser.prototype._combineLongPacketBuffers = function _combineLongPacketBuffers() {
if (!this._longPacketBuffers.size) {
return;
}
var remainingBytes = this._buffer.length - this._offset;
var trailingPacketBytes = this._buffer.length - this._packetEnd;
var buf = null;
var buffer = Buffer2.allocUnsafe(remainingBytes + this._longPacketBuffers.size);
var offset = 0;
while (buf = this._longPacketBuffers.shift()) {
offset += buf.copy(buffer, offset);
}
this._buffer.copy(buffer, offset, this._offset);
this._buffer = buffer;
this._offset = 0;
this._packetEnd = this._buffer.length - trailingPacketBytes;
this._packetOffset = 0;
};
Parser.prototype._parsePacket = function _parsePacket(packetHeader) {
this._packetEnd = this._offset + packetHeader.length;
this._packetOffset = this._offset;
if (packetHeader.length === MAX_PACKET_LENGTH) {
this._longPacketBuffers.push(this._buffer.slice(this._packetOffset, this._packetEnd));
this._advanceToNextPacket();
return;
}
this._combineLongPacketBuffers();
var hadException = true;
try {
this._onPacket(packetHeader);
hadException = false;
} catch (err) {
if (!err || typeof err.code !== "string" || err.code.substr(0, 7) !== "PARSER_") {
throw err;
}
this._onError(err);
hadException = false;
} finally {
this._advanceToNextPacket();
if (hadException) {
process.nextTick(this.write.bind(this));
}
}
};
Parser.prototype._tryReadPacketHeader = function _tryReadPacketHeader() {
if (this._packetHeader) {
return this._packetHeader;
}
if (!this._combineNextBuffers(PACKET_HEADER_LENGTH)) {
return null;
}
this._packetHeader = new PacketHeader(this.parseUnsignedNumber(3), this.parseUnsignedNumber(1));
if (this._packetHeader.number !== this._nextPacketNumber) {
var err = new Error("Packets out of order. Got: " + this._packetHeader.number + " " + "Expected: " + this._nextPacketNumber);
err.code = "PROTOCOL_PACKETS_OUT_OF_ORDER";
err.fatal = true;
this._onError(err);
}
this.incrementPacketNumber();
return this._packetHeader;
};
Parser.prototype._advanceToNextPacket = function() {
this._offset = this._packetEnd;
this._packetHeader = null;
this._packetEnd = null;
this._packetOffset = null;
};
});
// node_modules/mysql/lib/protocol/packets/AuthSwitchRequestPacket.js
var require_AuthSwitchRequestPacket = __commonJS((exports, module) => {
module.exports = AuthSwitchRequestPacket;
function AuthSwitchRequestPacket(options) {
options = options || {};
this.status = 254;
this.authMethodName = options.authMethodName;
this.authMethodData = options.authMethodData;
}
AuthSwitchRequestPacket.prototype.parse = function parse(parser) {
this.status = parser.parseUnsignedNumber(1);
this.authMethodName = parser.parseNullTerminatedString();
this.authMethodData = parser.parsePacketTerminatedBuffer();
};
AuthSwitchRequestPacket.prototype.write = function write(writer) {
writer.writeUnsignedNumber(1, this.status);
writer.writeNullTerminatedString(this.authMethodName);
writer.writeBuffer(this.authMethodData);
};
});
// node_modules/mysql/lib/protocol/packets/AuthSwitchResponsePacket.js
var require_AuthSwitchResponsePacket = __commonJS((exports, module) => {
module.exports = AuthSwitchResponsePacket;
function AuthSwitchResponsePacket(options) {
options = options || {};
this.data = options.data;
}
AuthSwitchResponsePacket.prototype.parse = function parse(parser) {
this.data = parser.parsePacketTerminatedBuffer();
};
AuthSwitchResponsePacket.prototype.write = function write(writer) {
writer.writeBuffer(this.data);
};
});
// node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js
var require_ClientAuthenticationPacket = __commonJS((exports, module) => {
var Buffer2 = require_safe_buffer().Buffer;
module.exports = ClientAuthenticationPacket;
function ClientAuthenticationPacket(options) {
options = options || {};
this.clientFlags = options.clientFlags;
this.maxPacketSize = options.maxPacketSize;
this.charsetNumber = options.charsetNumber;
this.filler = undefined;
this.user = options.user;
this.scrambleBuff = options.scrambleBuff;
this.database = options.database;
this.protocol41 = options.protocol41;
}
ClientAuthenticationPacket.prototype.parse = function(parser) {
if (this.protocol41) {
this.clientFlags = parser.parseUnsignedNumber(4);
this.maxPacketSize = parser.parseUnsignedNumber(4);
this.charsetNumber = parser.parseUnsignedNumber(1);
this.filler = parser.parseFiller(23);
this.user = parser.parseNullTerminatedString();
this.scrambleBuff = parser.parseLengthCodedBuffer();
this.database = parser.parseNullTerminatedString();
} else {
this.clientFlags = parser.parseUnsignedNumber(2);
this.maxPacketSize = parser.parseUnsignedNumber(3);
this.user = parser.parseNullTerminatedString();
this.scrambleBuff = parser.parseBuffer(8);
this.database = parser.parseLengthCodedBuffer();
}
};
ClientAuthenticationPacket.prototype.write = function(writer) {
if (this.protocol41) {
writer.writeUnsignedNumber(4, this.clientFlags);
writer.writeUnsignedNumber(4, this.maxPacketSize);
writer.writeUnsignedNumber(1, this.charsetNumber);
writer.writeFiller(23);
writer.writeNullTerminatedString(this.user);
writer.writeLengthCodedBuffer(this.scrambleBuff);
writer.writeNullTerminatedString(this.database);
} else {
writer.writeUnsignedNumber(2, this.clientFlags);
writer.writeUnsignedNumber(3, this.maxPacketSize);
writer.writeNullTerminatedString(this.user);
writer.writeBuffer(this.scrambleBuff);
if (this.database && this.database.length) {
writer.writeFiller(1);
writer.writeBuffer(Buffer2.from(this.database));
}
}
};
});
// node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js
var require_ComChangeUserPacket = __commonJS((exports, module) => {
module.exports = ComChangeUserPacket;
function ComChangeUserPacket(options) {
options = options || {};
this.command = 17;
this.user = options.user;
this.scrambleBuff = options.scrambleBuff;
this.database = options.database;
this.charsetNumber = options.charsetNumber;
}
ComChangeUserPacket.prototype.parse = function(parser) {
this.command = parser.parseUnsignedNumber(1);
this.user = parser.parseNullTerminatedString();
this.scrambleBuff = parser.parseLengthCodedBuffer();
this.database = parser.parseNullTerminatedString();
this.charsetNumber = parser.parseUnsignedNumber(1);
};
ComChangeUserPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.command);
writer.writeNullTerminatedString(this.user);
writer.writeLengthCodedBuffer(this.scrambleBuff);
writer.writeNullTerminatedString(this.database);
writer.writeUnsignedNumber(2, this.charsetNumber);
};
});
// node_modules/mysql/lib/protocol/packets/ComPingPacket.js
var require_ComPingPacket = __commonJS((exports, module) => {
module.exports = ComPingPacket;
function ComPingPacket() {
this.command = 14;
}
ComPingPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.command);
};
ComPingPacket.prototype.parse = function(parser) {
this.command = parser.parseUnsignedNumber(1);
};
});
// node_modules/mysql/lib/protocol/packets/ComQueryPacket.js
var require_ComQueryPacket = __commonJS((exports, module) => {
module.exports = ComQueryPacket;
function ComQueryPacket(sql) {
this.command = 3;
this.sql = sql;
}
ComQueryPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.command);
writer.writeString(this.sql);
};
ComQueryPacket.prototype.parse = function(parser) {
this.command = parser.parseUnsignedNumber(1);
this.sql = parser.parsePacketTerminatedString();
};
});
// node_modules/mysql/lib/protocol/packets/ComQuitPacket.js
var require_ComQuitPacket = __commonJS((exports, module) => {
module.exports = ComQuitPacket;
function ComQuitPacket() {
this.command = 1;
}
ComQuitPacket.prototype.parse = function parse(parser) {
this.command = parser.parseUnsignedNumber(1);
};
ComQuitPacket.prototype.write = function write(writer) {
writer.writeUnsignedNumber(1, this.command);
};
});
// node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js
var require_ComStatisticsPacket = __commonJS((exports, module) => {
module.exports = ComStatisticsPacket;
function ComStatisticsPacket() {
this.command = 9;
}
ComStatisticsPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.command);
};
ComStatisticsPacket.prototype.parse = function(parser) {
this.command = parser.parseUnsignedNumber(1);
};
});
// node_modules/mysql/lib/protocol/packets/EmptyPacket.js
var require_EmptyPacket = __commonJS((exports, module) => {
module.exports = EmptyPacket;
function EmptyPacket() {
}
EmptyPacket.prototype.parse = function parse() {
};
EmptyPacket.prototype.write = function write() {
};
});
// node_modules/mysql/lib/protocol/packets/EofPacket.js
var require_EofPacket = __commonJS((exports, module) => {
module.exports = EofPacket;
function EofPacket(options) {
options = options || {};
this.fieldCount = undefined;
this.warningCount = options.warningCount;
this.serverStatus = options.serverStatus;
this.protocol41 = options.protocol41;
}
EofPacket.prototype.parse = function(parser) {
this.fieldCount = parser.parseUnsignedNumber(1);
if (this.protocol41) {
this.warningCount = parser.parseUnsignedNumber(2);
this.serverStatus = parser.parseUnsignedNumber(2);
}
};
EofPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, 254);
if (this.protocol41) {
writer.writeUnsignedNumber(2, this.warningCount);
writer.writeUnsignedNumber(2, this.serverStatus);
}
};
});
// node_modules/mysql/lib/protocol/packets/ErrorPacket.js
var require_ErrorPacket = __commonJS((exports, module) => {
module.exports = ErrorPacket;
function ErrorPacket(options) {
options = options || {};
this.fieldCount = options.fieldCount;
this.errno = options.errno;
this.sqlStateMarker = options.sqlStateMarker;
this.sqlState = options.sqlState;
this.message = options.message;
}
ErrorPacket.prototype.parse = function(parser) {
this.fieldCount = parser.parseUnsignedNumber(1);
this.errno = parser.parseUnsignedNumber(2);
if (parser.peak() === 35) {
this.sqlStateMarker = parser.parseString(1);
this.sqlState = parser.parseString(5);
}
this.message = parser.parsePacketTerminatedString();
};
ErrorPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, 255);
writer.writeUnsignedNumber(2, this.errno);
if (this.sqlStateMarker) {
writer.writeString(this.sqlStateMarker);
writer.writeString(this.sqlState);
}
writer.writeString(this.message);
};
});
// node_modules/mysql/lib/protocol/constants/types.js
var require_types = __commonJS((exports) => {
exports.DECIMAL = 0;
exports.TINY = 1;
exports.SHORT = 2;
exports.LONG = 3;
exports.FLOAT = 4;
exports.DOUBLE = 5;
exports.NULL = 6;
exports.TIMESTAMP = 7;
exports.LONGLONG = 8;
exports.INT24 = 9;
exports.DATE = 10;
exports.TIME = 11;
exports.DATETIME = 12;
exports.YEAR = 13;
exports.NEWDATE = 14;
exports.VARCHAR = 15;
exports.BIT = 16;
exports.TIMESTAMP2 = 17;
exports.DATETIME2 = 18;
exports.TIME2 = 19;
exports.JSON = 245;
exports.NEWDECIMAL = 246;
exports.ENUM = 247;
exports.SET = 248;
exports.TINY_BLOB = 249;
exports.MEDIUM_BLOB = 250;
exports.LONG_BLOB = 251;
exports.BLOB = 252;
exports.VAR_STRING = 253;
exports.STRING = 254;
exports.GEOMETRY = 255;
exports[0] = "DECIMAL";
exports[1] = "TINY";
exports[2] = "SHORT";
exports[3] = "LONG";
exports[4] = "FLOAT";
exports[5] = "DOUBLE";
exports[6] = "NULL";
exports[7] = "TIMESTAMP";
exports[8] = "LONGLONG";
exports[9] = "INT24";
exports[10] = "DATE";
exports[11] = "TIME";
exports[12] = "DATETIME";
exports[13] = "YEAR";
exports[14] = "NEWDATE";
exports[15] = "VARCHAR";
exports[16] = "BIT";
exports[17] = "TIMESTAMP2";
exports[18] = "DATETIME2";
exports[19] = "TIME2";
exports[245] = "JSON";
exports[246] = "NEWDECIMAL";
exports[247] = "ENUM";
exports[248] = "SET";
exports[249] = "TINY_BLOB";
exports[250] = "MEDIUM_BLOB";
exports[251] = "LONG_BLOB";
exports[252] = "BLOB";
exports[253] = "VAR_STRING";
exports[254] = "STRING";
exports[255] = "GEOMETRY";
});
// node_modules/mysql/lib/protocol/packets/Field.js
var require_Field = __commonJS((exports, module) => {
var Types = require_types();
module.exports = Field;
function Field(options) {
options = options || {};
this.parser = options.parser;
this.packet = options.packet;
this.db = options.packet.db;
this.table = options.packet.table;
this.name = options.packet.name;
this.type = Types[options.packet.type];
this.length = options.packet.length;
}
Field.prototype.string = function() {
return this.parser.parseLengthCodedString();
};
Field.prototype.buffer = function() {
return this.parser.parseLengthCodedBuffer();
};
Field.prototype.geometry = function() {
return this.parser.parseGeometryValue();
};
});
// node_modules/mysql/lib/protocol/packets/FieldPacket.js
var require_FieldPacket = __commonJS((exports, module) => {
module.exports = FieldPacket;
function FieldPacket(options) {
options = options || {};
this.catalog = options.catalog;
this.db = options.db;
this.table = options.table;
this.orgTable = options.orgTable;
this.name = options.name;
this.orgName = options.orgName;
this.charsetNr = options.charsetNr;
this.length = options.length;
this.type = options.type;
this.flags = options.flags;
this.decimals = options.decimals;
this.default = options.default;
this.zeroFill = options.zeroFill;
this.protocol41 = options.protocol41;
}
FieldPacket.prototype.parse = function(parser) {
if (this.protocol41) {
this.catalog = parser.parseLengthCodedString();
this.db = parser.parseLengthCodedString();
this.table = parser.parseLengthCodedString();
this.orgTable = parser.parseLengthCodedString();
this.name = parser.parseLengthCodedString();
this.orgName = parser.parseLengthCodedString();
if (parser.parseLengthCodedNumber() !== 12) {
var err = new TypeError("Received invalid field length");
err.code = "PARSER_INVALID_FIELD_LENGTH";
throw err;
}
this.charsetNr = parser.parseUnsignedNumber(2);
this.length = parser.parseUnsignedNumber(4);
this.type = parser.parseUnsignedNumber(1);
this.flags = parser.parseUnsignedNumber(2);
this.decimals = parser.parseUnsignedNumber(1);
var filler = parser.parseBuffer(2);
if (filler[0] !== 0 || filler[1] !== 0) {
var err = new TypeError("Received invalid filler");
err.code = "PARSER_INVALID_FILLER";
throw err;
}
this.zeroFill = this.flags & 64 ? true : false;
if (parser.reachedPacketEnd()) {
return;
}
this.default = parser.parseLengthCodedString();
} else {
this.table = parser.parseLengthCodedString();
this.name = parser.parseLengthCodedString();
this.length = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));
this.type = parser.parseUnsignedNumber(parser.parseUnsignedNumber(1));
}
};
FieldPacket.prototype.write = function(writer) {
if (this.protocol41) {
writer.writeLengthCodedString(this.catalog);
writer.writeLengthCodedString(this.db);
writer.writeLengthCodedString(this.table);
writer.writeLengthCodedString(this.orgTable);
writer.writeLengthCodedString(this.name);
writer.writeLengthCodedString(this.orgName);
writer.writeLengthCodedNumber(12);
writer.writeUnsignedNumber(2, this.charsetNr || 0);
writer.writeUnsignedNumber(4, this.length || 0);
writer.writeUnsignedNumber(1, this.type || 0);
writer.writeUnsignedNumber(2, this.flags || 0);
writer.writeUnsignedNumber(1, this.decimals || 0);
writer.writeFiller(2);
if (this.default !== undefined) {
writer.writeLengthCodedString(this.default);
}
} else {
writer.writeLengthCodedString(this.table);
writer.writeLengthCodedString(this.name);
writer.writeUnsignedNumber(1, 1);
writer.writeUnsignedNumber(1, this.length);
writer.writeUnsignedNumber(1, 1);
writer.writeUnsignedNumber(1, this.type);
}
};
});
// node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js
var require_HandshakeInitializationPacket = __commonJS((exports, module) => {
var Buffer2 = require_safe_buffer().Buffer;
var Client = require_client();
module.exports = HandshakeInitializationPacket;
function HandshakeInitializationPacket(options) {
options = options || {};
this.protocolVersion = options.protocolVersion;
this.serverVersion = options.serverVersion;
this.threadId = options.threadId;
this.scrambleBuff1 = options.scrambleBuff1;
this.filler1 = options.filler1;
this.serverCapabilities1 = options.serverCapabilities1;
this.serverLanguage = options.serverLanguage;
this.serverStatus = options.serverStatus;
this.serverCapabilities2 = options.serverCapabilities2;
this.scrambleLength = options.scrambleLength;
this.filler2 = options.filler2;
this.scrambleBuff2 = options.scrambleBuff2;
this.filler3 = options.filler3;
this.pluginData = options.pluginData;
this.protocol41 = options.protocol41;
if (this.protocol41) {
this.serverCapabilities1 |= Client.CLIENT_PROTOCOL_41;
}
}
HandshakeInitializationPacket.prototype.parse = function(parser) {
this.protocolVersion = parser.parseUnsignedNumber(1);
this.serverVersion = parser.parseNullTerminatedString();
this.threadId = parser.parseUnsignedNumber(4);
this.scrambleBuff1 = parser.parseBuffer(8);
this.filler1 = parser.parseFiller(1);
this.serverCapabilities1 = parser.parseUnsignedNumber(2);
this.serverLanguage = parser.parseUnsignedNumber(1);
this.serverStatus = parser.parseUnsignedNumber(2);
this.protocol41 = (this.serverCapabilities1 & 1 << 9) > 0;
if (this.protocol41) {
this.serverCapabilities2 = parser.parseUnsignedNumber(2);
this.scrambleLength = parser.parseUnsignedNumber(1);
this.filler2 = parser.parseFiller(10);
this.scrambleBuff2 = parser.parseBuffer(12);
this.filler3 = parser.parseFiller(1);
} else {
this.filler2 = parser.parseFiller(13);
}
if (parser.reachedPacketEnd()) {
return;
}
this.pluginData = parser.parsePacketTerminatedString();
var lastChar = this.pluginData.length - 1;
if (this.pluginData[lastChar] === "\0") {
this.pluginData = this.pluginData.substr(0, lastChar);
}
};
HandshakeInitializationPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.protocolVersion);
writer.writeNullTerminatedString(this.serverVersion);
writer.writeUnsignedNumber(4, this.threadId);
writer.writeBuffer(this.scrambleBuff1);
writer.writeFiller(1);
writer.writeUnsignedNumber(2, this.serverCapabilities1);
writer.writeUnsignedNumber(1, this.serverLanguage);
writer.writeUnsignedNumber(2, this.serverStatus);
if (this.protocol41) {
writer.writeUnsignedNumber(2, this.serverCapabilities2);
writer.writeUnsignedNumber(1, this.scrambleLength);
writer.writeFiller(10);
}
writer.writeNullTerminatedBuffer(this.scrambleBuff2);
if (this.pluginData !== undefined) {
writer.writeNullTerminatedString(this.pluginData);
}
};
HandshakeInitializationPacket.prototype.scrambleBuff = function() {
var buffer = null;
if (typeof this.scrambleBuff2 === "undefined") {
buffer = Buffer2.from(this.scrambleBuff1);
} else {
buffer = Buffer2.allocUnsafe(this.scrambleBuff1.length + this.scrambleBuff2.length);
this.scrambleBuff1.copy(buffer, 0);
this.scrambleBuff2.copy(buffer, this.scrambleBuff1.length);
}
return buffer;
};
});
// node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js
var require_LocalDataFilePacket = __commonJS((exports, module) => {
module.exports = LocalDataFilePacket;
function LocalDataFilePacket(data) {
this.data = data;
}
LocalDataFilePacket.prototype.write = function(writer) {
writer.writeBuffer(this.data);
};
});
// node_modules/mysql/lib/protocol/packets/LocalInfileRequestPacket.js
var require_LocalInfileRequestPacket = __commonJS((exports, module) => {
module.exports = LocalInfileRequestPacket;
function LocalInfileRequestPacket(options) {
options = options || {};
this.filename = options.filename;
}
LocalInfileRequestPacket.prototype.parse = function parse(parser) {
if (parser.parseLengthCodedNumber() !== null) {
var err = new TypeError("Received invalid field length");
err.code = "PARSER_INVALID_FIELD_LENGTH";
throw err;
}
this.filename = parser.parsePacketTerminatedString();
};
LocalInfileRequestPacket.prototype.write = function write(writer) {
writer.writeLengthCodedNumber(null);
writer.writeString(this.filename);
};
});
// node_modules/mysql/lib/protocol/packets/OkPacket.js
var require_OkPacket = __commonJS((exports, module) => {
var ER_UPDATE_INFO_REGEXP = /^[^:0-9]+: [0-9]+[^:0-9]+: ([0-9]+)[^:0-9]+: [0-9]+[^:0-9]*$/;
module.exports = OkPacket;
function OkPacket(options) {
options = options || {};
this.fieldCount = undefined;
this.affectedRows = undefined;
this.insertId = undefined;
this.serverStatus = undefined;
this.warningCount = undefined;
this.message = undefined;
this.protocol41 = options.protocol41;
}
OkPacket.prototype.parse = function(parser) {
this.fieldCount = parser.parseUnsignedNumber(1);
this.affectedRows = parser.parseLengthCodedNumber();
this.insertId = parser.parseLengthCodedNumber();
if (this.protocol41) {
this.serverStatus = parser.parseUnsignedNumber(2);
this.warningCount = parser.parseUnsignedNumber(2);
}
this.message = parser.parsePacketTerminatedString();
this.changedRows = 0;
var m = ER_UPDATE_INFO_REGEXP.exec(this.message);
if (m !== null) {
this.changedRows = parseInt(m[1], 10);
}
};
OkPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, 0);
writer.writeLengthCodedNumber(this.affectedRows || 0);
writer.writeLengthCodedNumber(this.insertId || 0);
if (this.protocol41) {
writer.writeUnsignedNumber(2, this.serverStatus || 0);
writer.writeUnsignedNumber(2, this.warningCount || 0);
}
writer.writeString(this.message);
};
});
// node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js
var require_OldPasswordPacket = __commonJS((exports, module) => {
module.exports = OldPasswordPacket;
function OldPasswordPacket(options) {
options = options || {};
this.scrambleBuff = options.scrambleBuff;
}
OldPasswordPacket.prototype.parse = function(parser) {
this.scrambleBuff = parser.parsePacketTerminatedBuffer();
};
OldPasswordPacket.prototype.write = function(writer) {
writer.writeBuffer(this.scrambleBuff);
};
});
// node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js
var require_ResultSetHeaderPacket = __commonJS((exports, module) => {
module.exports = ResultSetHeaderPacket;
function ResultSetHeaderPacket(options) {
options = options || {};
this.fieldCount = options.fieldCount;
}
ResultSetHeaderPacket.prototype.parse = function(parser) {
this.fieldCount = parser.parseLengthCodedNumber();
};
ResultSetHeaderPacket.prototype.write = function(writer) {
writer.writeLengthCodedNumber(this.fieldCount);
};
});
// node_modules/mysql/lib/protocol/packets/RowDataPacket.js
var require_RowDataPacket = __commonJS((exports, module) => {
var Types = require_types();
var Charsets = require_charsets();
var Field = require_Field();
var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53);
module.exports = RowDataPacket;
function RowDataPacket() {
}
Object.defineProperty(RowDataPacket.prototype, "parse", {
configurable: true,
enumerable: false,
value: parse
});
Object.defineProperty(RowDataPacket.prototype, "_typeCast", {
configurable: true,
enumerable: false,
value: typeCast
});
function parse(parser, fieldPackets, typeCast2, nestTables, connection) {
var self2 = this;
var next = function() {
return self2._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings);
};
for (var i = 0;i < fieldPackets.length; i++) {
var fieldPacket = fieldPackets[i];
var value;
if (typeof typeCast2 === "function") {
value = typeCast2.apply(connection, [new Field({ packet: fieldPacket, parser }), next]);
} else {
value = typeCast2 ? this._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings) : fieldPacket.charsetNr === Charsets.BINARY ? parser.parseLengthCodedBuffer() : parser.parseLengthCodedString();
}
if (typeof nestTables === "string" && nestTables.length) {
this[fieldPacket.table + nestTables + fieldPacket.name] = value;
} else if (nestTables) {
this[fieldPacket.table] = this[fieldPacket.table] || {};
this[fieldPacket.table][fieldPacket.name] = value;
} else {
this[fieldPacket.name] = value;
}
}
}
function typeCast(field, parser, timeZone, supportBigNumbers, bigNumberStrings, dateStrings) {
var numberString;
switch (field.type) {
case Types.TIMESTAMP:
case Types.TIMESTAMP2:
case Types.DATE:
case Types.DATETIME:
case Types.DATETIME2:
case Types.NEWDATE:
var dateString = parser.parseLengthCodedString();
if (typeMatch(field.type, dateStrings)) {
return dateString;
}
if (dateString === null) {
return null;
}
var originalString = dateString;
if (field.type === Types.DATE) {
dateString += " 00:00:00";
}
if (timeZone !== "local") {
dateString += " " + timeZone;
}
var dt = new Date(dateString);
if (isNaN(dt.getTime())) {
return originalString;
}
return dt;
case Types.TINY:
case Types.SHORT:
case Types.LONG:
case Types.INT24:
case Types.YEAR:
case Types.FLOAT:
case Types.DOUBLE:
numberString = parser.parseLengthCodedString();
return numberString === null || field.zeroFill && numberString[0] === "0" ? numberString : Number(numberString);
case Types.NEWDECIMAL:
case Types.LONGLONG:
numberString = parser.parseLengthCodedString();
return numberString === null || field.zeroFill && numberString[0] === "0" ? numberString : supportBigNumbers && (bigNumberStrings || Number(numberString) >= IEEE_754_BINARY_64_PRECISION || Number(numberString) <= -IEEE_754_BINARY_64_PRECISION) ? numberString : Number(numberString);
case Types.BIT:
return parser.parseLengthCodedBuffer();
case Types.STRING:
case Types.VAR_STRING:
case Types.TINY_BLOB:
case Types.MEDIUM_BLOB:
case Types.LONG_BLOB:
case Types.BLOB:
return field.charsetNr === Charsets.BINARY ? parser.parseLengthCodedBuffer() : parser.parseLengthCodedString();
case Types.GEOMETRY:
return parser.parseGeometryValue();
default:
return parser.parseLengthCodedString();
}
}
function typeMatch(type, list) {
if (Array.isArray(list)) {
return list.indexOf(Types[type]) !== -1;
} else {
return Boolean(list);
}
}
});
// node_modules/mysql/lib/protocol/packets/SSLRequestPacket.js
var require_SSLRequestPacket = __commonJS((exports, module) => {
var ClientConstants = require_client();
module.exports = SSLRequestPacket;
function SSLRequestPacket(options) {
options = options || {};
this.clientFlags = options.clientFlags | ClientConstants.CLIENT_SSL;
this.maxPacketSize = options.maxPacketSize;
this.charsetNumber = options.charsetNumber;
}
SSLRequestPacket.prototype.parse = function(parser) {
this.clientFlags = parser.parseUnsignedNumber(4);
this.maxPacketSize = parser.parseUnsignedNumber(4);
this.charsetNumber = parser.parseUnsignedNumber(1);
};
SSLRequestPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(4, this.clientFlags);
writer.writeUnsignedNumber(4, this.maxPacketSize);
writer.writeUnsignedNumber(1, this.charsetNumber);
writer.writeFiller(23);
};
});
// node_modules/mysql/lib/protocol/packets/StatisticsPacket.js
var require_StatisticsPacket = __commonJS((exports, module) => {
module.exports = StatisticsPacket;
function StatisticsPacket() {
this.message = undefined;
}
StatisticsPacket.prototype.parse = function(parser) {
this.message = parser.parsePacketTerminatedString();
var items = this.message.split(/\s\s/);
for (var i = 0;i < items.length; i++) {
var m = items[i].match(/^(.+)\:\s+(.+)$/);
if (m !== null) {
this[m[1].toLowerCase().replace(/\s/g, "_")] = Number(m[2]);
}
}
};
StatisticsPacket.prototype.write = function(writer) {
writer.writeString(this.message);
};
});
// node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js
var require_UseOldPasswordPacket = __commonJS((exports, module) => {
module.exports = UseOldPasswordPacket;
function UseOldPasswordPacket(options) {
options = options || {};
this.firstByte = options.firstByte || 254;
}
UseOldPasswordPacket.prototype.parse = function(parser) {
this.firstByte = parser.parseUnsignedNumber(1);
};
UseOldPasswordPacket.prototype.write = function(writer) {
writer.writeUnsignedNumber(1, this.firstByte);
};
});
// node_modules/mysql/lib/protocol/packets/index.js
var require_packets = __commonJS((exports) => {
exports.AuthSwitchRequestPacket = require_AuthSwitchRequestPacket();
exports.AuthSwitchResponsePacket = require_AuthSwitchResponsePacket();
exports.ClientAuthenticationPacket = require_ClientAuthenticationPacket();
exports.ComChangeUserPacket = require_ComChangeUserPacket();
exports.ComPingPacket = require_ComPingPacket();
exports.ComQueryPacket = require_ComQueryPacket();
exports.ComQuitPacket = require_ComQuitPacket();
exports.ComStatisticsPacket = require_ComStatisticsPacket();
exports.EmptyPacket = require_EmptyPacket();
exports.EofPacket = require_EofPacket();
exports.ErrorPacket = require_ErrorPacket();
exports.Field = require_Field();
exports.FieldPacket = require_FieldPacket();
exports.HandshakeInitializationPacket = require_HandshakeInitializationPacket();
exports.LocalDataFilePacket = require_LocalDataFilePacket();
exports.LocalInfileRequestPacket = require_LocalInfileRequestPacket();
exports.OkPacket = require_OkPacket();
exports.OldPasswordPacket = require_OldPasswordPacket();
exports.ResultSetHeaderPacket = require_ResultSetHeaderPacket();
exports.RowDataPacket = require_RowDataPacket();
exports.SSLRequestPacket = require_SSLRequestPacket();
exports.StatisticsPacket = require_StatisticsPacket();
exports.UseOldPasswordPacket = require_UseOldPasswordPacket();
});
// node_modules/mysql/lib/protocol/constants/errors.js
var require_errors = __commonJS((exports) => {
exports.EE_CANTCREATEFILE = 1;
exports.EE_READ = 2;
exports.EE_WRITE = 3;
exports.EE_BADCLOSE = 4;
exports.EE_OUTOFMEMORY = 5;
exports.EE_DELETE = 6;
exports.EE_LINK = 7;
exports.EE_EOFERR = 9;
exports.EE_CANTLOCK = 10;
exports.EE_CANTUNLOCK = 11;
exports.EE_DIR = 12;
exports.EE_STAT = 13;
exports.EE_CANT_CHSIZE = 14;
exports.EE_CANT_OPEN_STREAM = 15;
exports.EE_GETWD = 16;
exports.EE_SETWD = 17;
exports.EE_LINK_WARNING = 18;
exports.EE_OPEN_WARNING = 19;
exports.EE_DISK_FULL = 20;
exports.EE_CANT_MKDIR = 21;
exports.EE_UNKNOWN_CHARSET = 22;
exports.EE_OUT_OF_FILERESOURCES = 23;
exports.EE_CANT_READLINK = 24;
exports.EE_CANT_SYMLINK = 25;
exports.EE_REALPATH = 26;
exports.EE_SYNC = 27;
exports.EE_UNKNOWN_COLLATION = 28;
exports.EE_FILENOTFOUND = 29;
exports.EE_FILE_NOT_CLOSED = 30;
exports.EE_CHANGE_OWNERSHIP = 31;
exports.EE_CHANGE_PERMISSIONS = 32;
exports.EE_CANT_SEEK = 33;
exports.EE_CAPACITY_EXCEEDED = 34;
exports.HA_ERR_KEY_NOT_FOUND = 120;
exports.HA_ERR_FOUND_DUPP_KEY = 121;
exports.HA_ERR_INTERNAL_ERROR = 122;
exports.HA_ERR_RECORD_CHANGED = 123;
exports.HA_ERR_WRONG_INDEX = 124;
exports.HA_ERR_CRASHED = 126;
exports.HA_ERR_WRONG_IN_RECORD = 127;
exports.HA_ERR_OUT_OF_MEM = 128;
exports.HA_ERR_NOT_A_TABLE = 130;
exports.HA_ERR_WRONG_COMMAND = 131;
exports.HA_ERR_OLD_FILE = 132;
exports.HA_ERR_NO_ACTIVE_RECORD = 133;
exports.HA_ERR_RECORD_DELETED = 134;
exports.HA_ERR_RECORD_FILE_FULL = 135;
exports.HA_ERR_INDEX_FILE_FULL = 136;
exports.HA_ERR_END_OF_FILE = 137;
exports.HA_ERR_UNSUPPORTED = 138;
exports.HA_ERR_TOO_BIG_ROW = 139;
exports.HA_WRONG_CREATE_OPTION = 140;
exports.HA_ERR_FOUND_DUPP_UNIQUE = 141;
exports.HA_ERR_UNKNOWN_CHARSET = 142;
exports.HA_ERR_WRONG_MRG_TABLE_DEF = 143;
exports.HA_ERR_CRASHED_ON_REPAIR = 144;
exports.HA_ERR_CRASHED_ON_USAGE = 145;
exports.HA_ERR_LOCK_WAIT_TIMEOUT = 146;
exports.HA_ERR_LOCK_TABLE_FULL = 147;
exports.HA_ERR_READ_ONLY_TRANSACTION = 148;
exports.HA_ERR_LOCK_DEADLOCK = 149;
exports.HA_ERR_CANNOT_ADD_FOREIGN = 150;
exports.HA_ERR_NO_REFERENCED_ROW = 151;
exports.HA_ERR_ROW_IS_REFERENCED = 152;
exports.HA_ERR_NO_SAVEPOINT = 153;
exports.HA_ERR_NON_UNIQUE_BLOCK_SIZE = 154;
exports.HA_ERR_NO_SUCH_TABLE = 155;
exports.HA_ERR_TABLE_EXIST = 156;
exports.HA_ERR_NO_CONNECTION = 157;
exports.HA_ERR_NULL_IN_SPATIAL = 158;
exports.HA_ERR_TABLE_DEF_CHANGED = 159;
exports.HA_ERR_NO_PARTITION_FOUND = 160;
exports.HA_ERR_RBR_LOGGING_FAILED = 161;
exports.HA_ERR_DROP_INDEX_FK = 162;
exports.HA_ERR_FOREIGN_DUPLICATE_KEY = 163;
exports.HA_ERR_TABLE_NEEDS_UPGRADE = 164;
exports.HA_ERR_TABLE_READONLY = 165;
exports.HA_ERR_AUTOINC_READ_FAILED = 166;
exports.HA_ERR_AUTOINC_ERANGE = 167;
exports.HA_ERR_GENERIC = 168;
exports.HA_ERR_RECORD_IS_THE_SAME = 169;
exports.HA_ERR_LOGGING_IMPOSSIBLE = 170;
exports.HA_ERR_CORRUPT_EVENT = 171;
exports.HA_ERR_NEW_FILE = 172;
exports.HA_ERR_ROWS_EVENT_APPLY = 173;
exports.HA_ERR_INITIALIZATION = 174;
exports.HA_ERR_FILE_TOO_SHORT = 175;
exports.HA_ERR_WRONG_CRC = 176;
exports.HA_ERR_TOO_MANY_CONCURRENT_TRXS = 177;
exports.HA_ERR_NOT_IN_LOCK_PARTITIONS = 178;
exports.HA_ERR_INDEX_COL_TOO_LONG = 179;
exports.HA_ERR_INDEX_CORRUPT = 180;
exports.HA_ERR_UNDO_REC_TOO_BIG = 181;
exports.HA_FTS_INVALID_DOCID = 182;
exports.HA_ERR_TABLE_IN_FK_CHECK = 183;
exports.HA_ERR_TABLESPACE_EXISTS = 184;
exports.HA_ERR_TOO_MANY_FIELDS = 185;
exports.HA_ERR_ROW_IN_WRONG_PARTITION = 186;
exports.HA_ERR_INNODB_READ_ONLY = 187;
exports.HA_ERR_FTS_EXCEED_RESULT_CACHE_LIMIT = 188;
exports.HA_ERR_TEMP_FILE_WRITE_FAILURE = 189;
exports.HA_ERR_INNODB_FORCED_RECOVERY = 190;
exports.HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE = 191;
exports.HA_ERR_FK_DEPTH_EXCEEDED = 192;
exports.HA_MISSING_CREATE_OPTION = 193;
exports.HA_ERR_SE_OUT_OF_MEMORY = 194;
exports.HA_ERR_TABLE_CORRUPT = 195;
exports.HA_ERR_QUERY_INTERRUPTED = 196;
exports.HA_ERR_TABLESPACE_MISSING = 197;
exports.HA_ERR_TABLESPACE_IS_NOT_EMPTY = 198;
exports.HA_ERR_WRONG_FILE_NAME = 199;
exports.HA_ERR_NOT_ALLOWED_COMMAND = 200;
exports.HA_ERR_COMPUTE_FAILED = 201;
exports.ER_HASHCHK = 1000;
exports.ER_NISAMCHK = 1001;
exports.ER_NO = 1002;
exports.ER_YES = 1003;
exports.ER_CANT_CREATE_FILE = 1004;
exports.ER_CANT_CREATE_TABLE = 1005;
exports.ER_CANT_CREATE_DB = 1006;
exports.ER_DB_CREATE_EXISTS = 1007;
exports.ER_DB_DROP_EXISTS = 1008;
exports.ER_DB_DROP_DELETE = 1009;
exports.ER_DB_DROP_RMDIR = 1010;
exports.ER_CANT_DELETE_FILE = 1011;
exports.ER_CANT_FIND_SYSTEM_REC = 1012;
exports.ER_CANT_GET_STAT = 1013;
exports.ER_CANT_GET_WD = 1014;
exports.ER_CANT_LOCK = 1015;
exports.ER_CANT_OPEN_FILE = 1016;
exports.ER_FILE_NOT_FOUND = 1017;
exports.ER_CANT_READ_DIR = 1018;
exports.ER_CANT_SET_WD = 1019;
exports.ER_CHECKREAD = 1020;
exports.ER_DISK_FULL = 1021;
exports.ER_DUP_KEY = 1022;
exports.ER_ERROR_ON_CLOSE = 1023;
exports.ER_ERROR_ON_READ = 1024;
exports.ER_ERROR_ON_RENAME = 1025;
exports.ER_ERROR_ON_WRITE = 1026;
exports.ER_FILE_USED = 1027;
exports.ER_FILSORT_ABORT = 1028;
exports.ER_FORM_NOT_FOUND = 1029;
exports.ER_GET_ERRNO = 1030;
exports.ER_ILLEGAL_HA = 1031;
exports.ER_KEY_NOT_FOUND = 1032;
exports.ER_NOT_FORM_FILE = 1033;
exports.ER_NOT_KEYFILE = 1034;
exports.ER_OLD_KEYFILE = 1035;
exports.ER_OPEN_AS_READONLY = 1036;
exports.ER_OUTOFMEMORY = 1037;
exports.ER_OUT_OF_SORTMEMORY = 1038;
exports.ER_UNEXPECTED_EOF = 1039;
exports.ER_CON_COUNT_ERROR = 1040;
exports.ER_OUT_OF_RESOURCES = 1041;
exports.ER_BAD_HOST_ERROR = 1042;
exports.ER_HANDSHAKE_ERROR = 1043;
exports.ER_DBACCESS_DENIED_ERROR = 1044;
exports.ER_ACCESS_DENIED_ERROR = 1045;
exports.ER_NO_DB_ERROR = 1046;
exports.ER_UNKNOWN_COM_ERROR = 1047;
exports.ER_BAD_NULL_ERROR = 1048;
exports.ER_BAD_DB_ERROR = 1049;
exports.ER_TABLE_EXISTS_ERROR = 1050;
exports.ER_BAD_TABLE_ERROR = 1051;
exports.ER_NON_UNIQ_ERROR = 1052;
exports.ER_SERVER_SHUTDOWN = 1053;
exports.ER_BAD_FIELD_ERROR = 1054;
exports.ER_WRONG_FIELD_WITH_GROUP = 1055;
exports.ER_WRONG_GROUP_FIELD = 1056;
exports.ER_WRONG_SUM_SELECT = 1057;
exports.ER_WRONG_VALUE_COUNT = 1058;
exports.ER_TOO_LONG_IDENT = 1059;
exports.ER_DUP_FIELDNAME = 1060;
exports.ER_DUP_KEYNAME = 1061;
exports.ER_DUP_ENTRY = 1062;
exports.ER_WRONG_FIELD_SPEC = 1063;
exports.ER_PARSE_ERROR = 1064;
exports.ER_EMPTY_QUERY = 1065;
exports.ER_NONUNIQ_TABLE = 1066;
exports.ER_INVALID_DEFAULT = 1067;
exports.ER_MULTIPLE_PRI_KEY = 1068;
exports.ER_TOO_MANY_KEYS = 1069;
exports.ER_TOO_MANY_KEY_PARTS = 1070;
exports.ER_TOO_LONG_KEY = 1071;
exports.ER_KEY_COLUMN_DOES_NOT_EXITS = 1072;
exports.ER_BLOB_USED_AS_KEY = 1073;
exports.ER_TOO_BIG_FIELDLENGTH = 1074;
exports.ER_WRONG_AUTO_KEY = 1075;
exports.ER_READY = 1076;
exports.ER_NORMAL_SHUTDOWN = 1077;
exports.ER_GOT_SIGNAL = 1078;
exports.ER_SHUTDOWN_COMPLETE = 1079;
exports.ER_FORCING_CLOSE = 1080;
exports.ER_IPSOCK_ERROR = 1081;
exports.ER_NO_SUCH_INDEX = 1082;
exports.ER_WRONG_FIELD_TERMINATORS = 1083;
exports.ER_BLOBS_AND_NO_TERMINATED = 1084;
exports.ER_TEXTFILE_NOT_READABLE = 1085;
exports.ER_FILE_EXISTS_ERROR = 1086;
exports.ER_LOAD_INFO = 1087;
exports.ER_ALTER_INFO = 1088;
exports.ER_WRONG_SUB_KEY = 1089;
exports.ER_CANT_REMOVE_ALL_FIELDS = 1090;
exports.ER_CANT_DROP_FIELD_OR_KEY = 1091;
exports.ER_INSERT_INFO = 1092;
exports.ER_UPDATE_TABLE_USED = 1093;
exports.ER_NO_SUCH_THREAD = 1094;
exports.ER_KILL_DENIED_ERROR = 1095;
exports.ER_NO_TABLES_USED = 1096;
exports.ER_TOO_BIG_SET = 1097;
exports.ER_NO_UNIQUE_LOGFILE = 1098;
exports.ER_TABLE_NOT_LOCKED_FOR_WRITE = 1099;
exports.ER_TABLE_NOT_LOCKED = 1100;
exports.ER_BLOB_CANT_HAVE_DEFAULT = 1101;
exports.ER_WRONG_DB_NAME = 1102;
exports.ER_WRONG_TABLE_NAME = 1103;
exports.ER_TOO_BIG_SELECT = 1104;
exports.ER_UNKNOWN_ERROR = 1105;
exports.ER_UNKNOWN_PROCEDURE = 1106;
exports.ER_WRONG_PARAMCOUNT_TO_PROCEDURE = 1107;
exports.ER_WRONG_PARAMETERS_TO_PROCEDURE = 1108;
exports.ER_UNKNOWN_TABLE = 1109;
exports.ER_FIELD_SPECIFIED_TWICE = 1110;
exports.ER_INVALID_GROUP_FUNC_USE = 1111;
exports.ER_UNSUPPORTED_EXTENSION = 1112;
exports.ER_TABLE_MUST_HAVE_COLUMNS = 1113;
exports.ER_RECORD_FILE_FULL = 1114;
exports.ER_UNKNOWN_CHARACTER_SET = 1115;
exports.ER_TOO_MANY_TABLES = 1116;
exports.ER_TOO_MANY_FIELDS = 1117;
exports.ER_TOO_BIG_ROWSIZE = 1118;
exports.ER_STACK_OVERRUN = 1119;
exports.ER_WRONG_OUTER_JOIN = 1120;
exports.ER_NULL_COLUMN_IN_INDEX = 1121;
exports.ER_CANT_FIND_UDF = 1122;
exports.ER_CANT_INITIALIZE_UDF = 1123;
exports.ER_UDF_NO_PATHS = 1124;
exports.ER_UDF_EXISTS = 1125;
exports.ER_CANT_OPEN_LIBRARY = 1126;
exports.ER_CANT_FIND_DL_ENTRY = 1127;
exports.ER_FUNCTION_NOT_DEFINED = 1128;
exports.ER_HOST_IS_BLOCKED = 1129;
exports.ER_HOST_NOT_PRIVILEGED = 1130;
exports.ER_PASSWORD_ANONYMOUS_USER = 1131;
exports.ER_PASSWORD_NOT_ALLOWED = 1132;
exports.ER_PASSWORD_NO_MATCH = 1133;
exports.ER_UPDATE_INFO = 1134;
exports.ER_CANT_CREATE_THREAD = 1135;
exports.ER_WRONG_VALUE_COUNT_ON_ROW = 1136;
exports.ER_CANT_REOPEN_TABLE = 1137;
exports.ER_INVALID_USE_OF_NULL = 1138;
exports.ER_REGEXP_ERROR = 1139;
exports.ER_MIX_OF_GROUP_FUNC_AND_FIELDS = 1140;
exports.ER_NONEXISTING_GRANT = 1141;
exports.ER_TABLEACCESS_DENIED_ERROR = 1142;
exports.ER_COLUMNACCESS_DENIED_ERROR = 1143;
exports.ER_ILLEGAL_GRANT_FOR_TABLE = 1144;
exports.ER_GRANT_WRONG_HOST_OR_USER = 1145;
exports.ER_NO_SUCH_TABLE = 1146;
exports.ER_NONEXISTING_TABLE_GRANT = 1147;
exports.ER_NOT_ALLOWED_COMMAND = 1148;
exports.ER_SYNTAX_ERROR = 1149;
exports.ER_DELAYED_CANT_CHANGE_LOCK = 1150;
exports.ER_TOO_MANY_DELAYED_THREADS = 1151;
exports.ER_ABORTING_CONNECTION = 1152;
exports.ER_NET_PACKET_TOO_LARGE = 1153;
exports.ER_NET_READ_ERROR_FROM_PIPE = 1154;
exports.ER_NET_FCNTL_ERROR = 1155;
exports.ER_NET_PACKETS_OUT_OF_ORDER = 1156;
exports.ER_NET_UNCOMPRESS_ERROR = 1157;
exports.ER_NET_READ_ERROR = 1158;
exports.ER_NET_READ_INTERRUPTED = 1159;
exports.ER_NET_ERROR_ON_WRITE = 1160;
exports.ER_NET_WRITE_INTERRUPTED = 1161;
exports.ER_TOO_LONG_STRING = 1162;
exports.ER_TABLE_CANT_HANDLE_BLOB = 1163;
exports.ER_TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164;
exports.ER_DELAYED_INSERT_TABLE_LOCKED = 1165;
exports.ER_WRONG_COLUMN_NAME = 1166;
exports.ER_WRONG_KEY_COLUMN = 1167;
exports.ER_WRONG_MRG_TABLE = 1168;
exports.ER_DUP_UNIQUE = 1169;
exports.ER_BLOB_KEY_WITHOUT_LENGTH = 1170;
exports.ER_PRIMARY_CANT_HAVE_NULL = 1171;
exports.ER_TOO_MANY_ROWS = 1172;
exports.ER_REQUIRES_PRIMARY_KEY = 1173;
exports.ER_NO_RAID_COMPILED = 1174;
exports.ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175;
exports.ER_KEY_DOES_NOT_EXITS = 1176;
exports.ER_CHECK_NO_SUCH_TABLE = 1177;
exports.ER_CHECK_NOT_IMPLEMENTED = 1178;
exports.ER_CANT_DO_THIS_DURING_AN_TRANSACTION = 1179;
exports.ER_ERROR_DURING_COMMIT = 1180;
exports.ER_ERROR_DURING_ROLLBACK = 1181;
exports.ER_ERROR_DURING_FLUSH_LOGS = 1182;
exports.ER_ERROR_DURING_CHECKPOINT = 1183;
exports.ER_NEW_ABORTING_CONNECTION = 1184;
exports.ER_DUMP_NOT_IMPLEMENTED = 1185;
exports.ER_FLUSH_MASTER_BINLOG_CLOSED = 1186;
exports.ER_INDEX_REBUILD = 1187;
exports.ER_MASTER = 1188;
exports.ER_MASTER_NET_READ = 1189;
exports.ER_MASTER_NET_WRITE = 1190;
exports.ER_FT_MATCHING_KEY_NOT_FOUND = 1191;
exports.ER_LOCK_OR_ACTIVE_TRANSACTION = 1192;
exports.ER_UNKNOWN_SYSTEM_VARIABLE = 1193;
exports.ER_CRASHED_ON_USAGE = 1194;
exports.ER_CRASHED_ON_REPAIR = 1195;
exports.ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196;
exports.ER_TRANS_CACHE_FULL = 1197;
exports.ER_SLAVE_MUST_STOP = 1198;
exports.ER_SLAVE_NOT_RUNNING = 1199;
exports.ER_BAD_SLAVE = 1200;
exports.ER_MASTER_INFO = 1201;
exports.ER_SLAVE_THREAD = 1202;
exports.ER_TOO_MANY_USER_CONNECTIONS = 1203;
exports.ER_SET_CONSTANTS_ONLY = 1204;
exports.ER_LOCK_WAIT_TIMEOUT = 1205;
exports.ER_LOCK_TABLE_FULL = 1206;
exports.ER_READ_ONLY_TRANSACTION = 1207;
exports.ER_DROP_DB_WITH_READ_LOCK = 1208;
exports.ER_CREATE_DB_WITH_READ_LOCK = 1209;
exports.ER_WRONG_ARGUMENTS = 1210;
exports.ER_NO_PERMISSION_TO_CREATE_USER = 1211;
exports.ER_UNION_TABLES_IN_DIFFERENT_DIR = 1212;
exports.ER_LOCK_DEADLOCK = 1213;
exports.ER_TABLE_CANT_HANDLE_FT = 1214;
exports.ER_CANNOT_ADD_FOREIGN = 1215;
exports.ER_NO_REFERENCED_ROW = 1216;
exports.ER_ROW_IS_REFERENCED = 1217;
exports.ER_CONNECT_TO_MASTER = 1218;
exports.ER_QUERY_ON_MASTER = 1219;
exports.ER_ERROR_WHEN_EXECUTING_COMMAND = 1220;
exports.ER_WRONG_USAGE = 1221;
exports.ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222;
exports.ER_CANT_UPDATE_WITH_READLOCK = 1223;
exports.ER_MIXING_NOT_ALLOWED = 1224;
exports.ER_DUP_ARGUMENT = 1225;
exports.ER_USER_LIMIT_REACHED = 1226;
exports.ER_SPECIFIC_ACCESS_DENIED_ERROR = 1227;
exports.ER_LOCAL_VARIABLE = 1228;
exports.ER_GLOBAL_VARIABLE = 1229;
exports.ER_NO_DEFAULT = 1230;
exports.ER_WRONG_VALUE_FOR_VAR = 1231;
exports.ER_WRONG_TYPE_FOR_VAR = 1232;
exports.ER_VAR_CANT_BE_READ = 1233;
exports.ER_CANT_USE_OPTION_HERE = 1234;
exports.ER_NOT_SUPPORTED_YET = 1235;
exports.ER_MASTER_FATAL_ERROR_READING_BINLOG = 1236;
exports.ER_SLAVE_IGNORED_TABLE = 1237;
exports.ER_INCORRECT_GLOBAL_LOCAL_VAR = 1238;
exports.ER_WRONG_FK_DEF = 1239;
exports.ER_KEY_REF_DO_NOT_MATCH_TABLE_REF = 1240;
exports.ER_OPERAND_COLUMNS = 1241;
exports.ER_SUBQUERY_NO_1_ROW = 1242;
exports.ER_UNKNOWN_STMT_HANDLER = 1243;
exports.ER_CORRUPT_HELP_DB = 1244;
exports.ER_CYCLIC_REFERENCE = 1245;
exports.ER_AUTO_CONVERT = 1246;
exports.ER_ILLEGAL_REFERENCE = 1247;
exports.ER_DERIVED_MUST_HAVE_ALIAS = 1248;
exports.ER_SELECT_REDUCED = 1249;
exports.ER_TABLENAME_NOT_ALLOWED_HERE = 1250;
exports.ER_NOT_SUPPORTED_AUTH_MODE = 1251;
exports.ER_SPATIAL_CANT_HAVE_NULL = 1252;
exports.ER_COLLATION_CHARSET_MISMATCH = 1253;
exports.ER_SLAVE_WAS_RUNNING = 1254;
exports.ER_SLAVE_WAS_NOT_RUNNING = 1255;
exports.ER_TOO_BIG_FOR_UNCOMPRESS = 1256;
exports.ER_ZLIB_Z_MEM_ERROR = 1257;
exports.ER_ZLIB_Z_BUF_ERROR = 1258;
exports.ER_ZLIB_Z_DATA_ERROR = 1259;
exports.ER_CUT_VALUE_GROUP_CONCAT = 1260;
exports.ER_WARN_TOO_FEW_RECORDS = 1261;
exports.ER_WARN_TOO_MANY_RECORDS = 1262;
exports.ER_WARN_NULL_TO_NOTNULL = 1263;
exports.ER_WARN_DATA_OUT_OF_RANGE = 1264;
exports.WARN_DATA_TRUNCATED = 1265;
exports.ER_WARN_USING_OTHER_HANDLER = 1266;
exports.ER_CANT_AGGREGATE_2COLLATIONS = 1267;
exports.ER_DROP_USER = 1268;
exports.ER_REVOKE_GRANTS = 1269;
exports.ER_CANT_AGGREGATE_3COLLATIONS = 1270;
exports.ER_CANT_AGGREGATE_NCOLLATIONS = 1271;
exports.ER_VARIABLE_IS_NOT_STRUCT = 1272;
exports.ER_UNKNOWN_COLLATION = 1273;
exports.ER_SLAVE_IGNORED_SSL_PARAMS = 1274;
exports.ER_SERVER_IS_IN_SECURE_AUTH_MODE = 1275;
exports.ER_WARN_FIELD_RESOLVED = 1276;
exports.ER_BAD_SLAVE_UNTIL_COND = 1277;
exports.ER_MISSING_SKIP_SLAVE = 1278;
exports.ER_UNTIL_COND_IGNORED = 1279;
exports.ER_WRONG_NAME_FOR_INDEX = 1280;
exports.ER_WRONG_NAME_FOR_CATALOG = 1281;
exports.ER_WARN_QC_RESIZE = 1282;
exports.ER_BAD_FT_COLUMN = 1283;
exports.ER_UNKNOWN_KEY_CACHE = 1284;
exports.ER_WARN_HOSTNAME_WONT_WORK = 1285;
exports.ER_UNKNOWN_STORAGE_ENGINE = 1286;
exports.ER_WARN_DEPRECATED_SYNTAX = 1287;
exports.ER_NON_UPDATABLE_TABLE = 1288;
exports.ER_FEATURE_DISABLED = 1289;
exports.ER_OPTION_PREVENTS_STATEMENT = 1290;
exports.ER_DUPLICATED_VALUE_IN_TYPE = 1291;
exports.ER_TRUNCATED_WRONG_VALUE = 1292;
exports.ER_TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293;
exports.ER_INVALID_ON_UPDATE = 1294;
exports.ER_UNSUPPORTED_PS = 1295;
exports.ER_GET_ERRMSG = 1296;
exports.ER_GET_TEMPORARY_ERRMSG = 1297;
exports.ER_UNKNOWN_TIME_ZONE = 1298;
exports.ER_WARN_INVALID_TIMESTAMP = 1299;
exports.ER_INVALID_CHARACTER_STRING = 1300;
exports.ER_WARN_ALLOWED_PACKET_OVERFLOWED = 1301;
exports.ER_CONFLICTING_DECLARATIONS = 1302;
exports.ER_SP_NO_RECURSIVE_CREATE = 1303;
exports.ER_SP_ALREADY_EXISTS = 1304;
exports.ER_SP_DOES_NOT_EXIST = 1305;
exports.ER_SP_DROP_FAILED = 1306;
exports.ER_SP_STORE_FAILED = 1307;
exports.ER_SP_LILABEL_MISMATCH = 1308;
exports.ER_SP_LABEL_REDEFINE = 1309;
exports.ER_SP_LABEL_MISMATCH = 1310;
exports.ER_SP_UNINIT_VAR = 1311;
exports.ER_SP_BADSELECT = 1312;
exports.ER_SP_BADRETURN = 1313;
exports.ER_SP_BADSTATEMENT = 1314;
exports.ER_UPDATE_LOG_DEPRECATED_IGNORED = 1315;
exports.ER_UPDATE_LOG_DEPRECATED_TRANSLATED = 1316;
exports.ER_QUERY_INTERRUPTED = 1317;
exports.ER_SP_WRONG_NO_OF_ARGS = 1318;
exports.ER_SP_COND_MISMATCH = 1319;
exports.ER_SP_NORETURN = 1320;
exports.ER_SP_NORETURNEND = 1321;
exports.ER_SP_BAD_CURSOR_QUERY = 1322;
exports.ER_SP_BAD_CURSOR_SELECT = 1323;
exports.ER_SP_CURSOR_MISMATCH = 1324;
exports.ER_SP_CURSOR_ALREADY_OPEN = 1325;
exports.ER_SP_CURSOR_NOT_OPEN = 1326;
exports.ER_SP_UNDECLARED_VAR = 1327;
exports.ER_SP_WRONG_NO_OF_FETCH_ARGS = 1328;
exports.ER_SP_FETCH_NO_DATA = 1329;
exports.ER_SP_DUP_PARAM = 1330;
exports.ER_SP_DUP_VAR = 1331;
exports.ER_SP_DUP_COND = 1332;
exports.ER_SP_DUP_CURS = 1333;
exports.ER_SP_CANT_ALTER = 1334;
exports.ER_SP_SUBSELECT_NYI = 1335;
exports.ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336;
exports.ER_SP_VARCOND_AFTER_CURSHNDLR = 1337;
exports.ER_SP_CURSOR_AFTER_HANDLER = 1338;
exports.ER_SP_CASE_NOT_FOUND = 1339;
exports.ER_FPARSER_TOO_BIG_FILE = 1340;
exports.ER_FPARSER_BAD_HEADER = 1341;
exports.ER_FPARSER_EOF_IN_COMMENT = 1342;
exports.ER_FPARSER_ERROR_IN_PARAMETER = 1343;
exports.ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344;
exports.ER_VIEW_NO_EXPLAIN = 1345;
exports.ER_FRM_UNKNOWN_TYPE = 1346;
exports.ER_WRONG_OBJECT = 1347;
exports.ER_NONUPDATEABLE_COLUMN = 1348;
exports.ER_VIEW_SELECT_DERIVED = 1349;
exports.ER_VIEW_SELECT_CLAUSE = 1350;
exports.ER_VIEW_SELECT_VARIABLE = 1351;
exports.ER_VIEW_SELECT_TMPTABLE = 1352;
exports.ER_VIEW_WRONG_LIST = 1353;
exports.ER_WARN_VIEW_MERGE = 1354;
exports.ER_WARN_VIEW_WITHOUT_KEY = 1355;
exports.ER_VIEW_INVALID = 1356;
exports.ER_SP_NO_DROP_SP = 1357;
exports.ER_SP_GOTO_IN_HNDLR = 1358;
exports.ER_TRG_ALREADY_EXISTS = 1359;
exports.ER_TRG_DOES_NOT_EXIST = 1360;
exports.ER_TRG_ON_VIEW_OR_TEMP_TABLE = 1361;
exports.ER_TRG_CANT_CHANGE_ROW = 1362;
exports.ER_TRG_NO_SUCH_ROW_IN_TRG = 1363;
exports.ER_NO_DEFAULT_FOR_FIELD = 1364;
exports.ER_DIVISION_BY_ZERO = 1365;
exports.ER_TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366;
exports.ER_ILLEGAL_VALUE_FOR_TYPE = 1367;
exports.ER_VIEW_NONUPD_CHECK = 1368;
exports.ER_VIEW_CHECK_FAILED = 1369;
exports.ER_PROCACCESS_DENIED_ERROR = 1370;
exports.ER_RELAY_LOG_FAIL = 1371;
exports.ER_PASSWD_LENGTH = 1372;
exports.ER_UNKNOWN_TARGET_BINLOG = 1373;
exports.ER_IO_ERR_LOG_INDEX_READ = 1374;
exports.ER_BINLOG_PURGE_PROHIBITED = 1375;
exports.ER_FSEEK_FAIL = 1376;
exports.ER_BINLOG_PURGE_FATAL_ERR = 1377;
exports.ER_LOG_IN_USE = 1378;
exports.ER_LOG_PURGE_UNKNOWN_ERR = 1379;
exports.ER_RELAY_LOG_INIT = 1380;
exports.ER_NO_BINARY_LOGGING = 1381;
exports.ER_RESERVED_SYNTAX = 1382;
exports.ER_WSAS_FAILED = 1383;
exports.ER_DIFF_GROUPS_PROC = 1384;
exports.ER_NO_GROUP_FOR_PROC = 1385;
exports.ER_ORDER_WITH_PROC = 1386;
exports.ER_LOGGING_PROHIBIT_CHANGING_OF = 1387;
exports.ER_NO_FILE_MAPPING = 1388;
exports.ER_WRONG_MAGIC = 1389;
exports.ER_PS_MANY_PARAM = 1390;
exports.ER_KEY_PART_0 = 1391;
exports.ER_VIEW_CHECKSUM = 1392;
exports.ER_VIEW_MULTIUPDATE = 1393;
exports.ER_VIEW_NO_INSERT_FIELD_LIST = 1394;
exports.ER_VIEW_DELETE_MERGE_VIEW = 1395;
exports.ER_CANNOT_USER = 1396;
exports.ER_XAER_NOTA = 1397;
exports.ER_XAER_INVAL = 1398;
exports.ER_XAER_RMFAIL = 1399;
exports.ER_XAER_OUTSIDE = 1400;
exports.ER_XAER_RMERR = 1401;
exports.ER_XA_RBROLLBACK = 1402;
exports.ER_NONEXISTING_PROC_GRANT = 1403;
exports.ER_PROC_AUTO_GRANT_FAIL = 1404;
exports.ER_PROC_AUTO_REVOKE_FAIL = 1405;
exports.ER_DATA_TOO_LONG = 1406;
exports.ER_SP_BAD_SQLSTATE = 1407;
exports.ER_STARTUP = 1408;
exports.ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR = 1409;
exports.ER_CANT_CREATE_USER_WITH_GRANT = 1410;
exports.ER_WRONG_VALUE_FOR_TYPE = 1411;
exports.ER_TABLE_DEF_CHANGED = 1412;
exports.ER_SP_DUP_HANDLER = 1413;
exports.ER_SP_NOT_VAR_ARG = 1414;
exports.ER_SP_NO_RETSET = 1415;
exports.ER_CANT_CREATE_GEOMETRY_OBJECT = 1416;
exports.ER_FAILED_ROUTINE_BREAK_BINLOG = 1417;
exports.ER_BINLOG_UNSAFE_ROUTINE = 1418;
exports.ER_BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419;
exports.ER_EXEC_STMT_WITH_OPEN_CURSOR = 1420;
exports.ER_STMT_HAS_NO_OPEN_CURSOR = 1421;
exports.ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422;
exports.ER_NO_DEFAULT_FOR_VIEW_FIELD = 1423;
exports.ER_SP_NO_RECURSION = 1424;
exports.ER_TOO_BIG_SCALE = 1425;
exports.ER_TOO_BIG_PRECISION = 1426;
exports.ER_M_BIGGER_THAN_D = 1427;
exports.ER_WRONG_LOCK_OF_SYSTEM_TABLE = 1428;
exports.ER_CONNECT_TO_FOREIGN_DATA_SOURCE = 1429;
exports.ER_QUERY_ON_FOREIGN_DATA_SOURCE = 1430;
exports.ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431;
exports.ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432;
exports.ER_FOREIGN_DATA_STRING_INVALID = 1433;
exports.ER_CANT_CREATE_FEDERATED_TABLE = 1434;
exports.ER_TRG_IN_WRONG_SCHEMA = 1435;
exports.ER_STACK_OVERRUN_NEED_MORE = 1436;
exports.ER_TOO_LONG_BODY = 1437;
exports.ER_WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438;
exports.ER_TOO_BIG_DISPLAYWIDTH = 1439;
exports.ER_XAER_DUPID = 1440;
exports.ER_DATETIME_FUNCTION_OVERFLOW = 1441;
exports.ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG = 1442;
exports.ER_VIEW_PREVENT_UPDATE = 1443;
exports.ER_PS_NO_RECURSION = 1444;
exports.ER_SP_CANT_SET_AUTOCOMMIT = 1445;
exports.ER_MALFORMED_DEFINER = 1446;
exports.ER_VIEW_FRM_NO_USER = 1447;
exports.ER_VIEW_OTHER_USER = 1448;
exports.ER_NO_SUCH_USER = 1449;
exports.ER_FORBID_SCHEMA_CHANGE = 1450;
exports.ER_ROW_IS_REFERENCED_2 = 1451;
exports.ER_NO_REFERENCED_ROW_2 = 1452;
exports.ER_SP_BAD_VAR_SHADOW = 1453;
exports.ER_TRG_NO_DEFINER = 1454;
exports.ER_OLD_FILE_FORMAT = 1455;
exports.ER_SP_RECURSION_LIMIT = 1456;
exports.ER_SP_PROC_TABLE_CORRUPT = 1457;
exports.ER_SP_WRONG_NAME = 1458;
exports.ER_TABLE_NEEDS_UPGRADE = 1459;
exports.ER_SP_NO_AGGREGATE = 1460;
exports.ER_MAX_PREPARED_STMT_COUNT_REACHED = 1461;
exports.ER_VIEW_RECURSIVE = 1462;
exports.ER_NON_GROUPING_FIELD_USED = 1463;
exports.ER_TABLE_CANT_HANDLE_SPKEYS = 1464;
exports.ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA = 1465;
exports.ER_REMOVED_SPACES = 1466;
exports.ER_AUTOINC_READ_FAILED = 1467;
exports.ER_USERNAME = 1468;
exports.ER_HOSTNAME = 1469;
exports.ER_WRONG_STRING_LENGTH = 1470;
exports.ER_NON_INSERTABLE_TABLE = 1471;
exports.ER_ADMIN_WRONG_MRG_TABLE = 1472;
exports.ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT = 1473;
exports.ER_NAME_BECOMES_EMPTY = 1474;
exports.ER_AMBIGUOUS_FIELD_TERM = 1475;
exports.ER_FOREIGN_SERVER_EXISTS = 1476;
exports.ER_FOREIGN_SERVER_DOESNT_EXIST = 1477;
exports.ER_ILLEGAL_HA_CREATE_OPTION = 1478;
exports.ER_PARTITION_REQUIRES_VALUES_ERROR = 1479;
exports.ER_PARTITION_WRONG_VALUES_ERROR = 1480;
exports.ER_PARTITION_MAXVALUE_ERROR = 1481;
exports.ER_PARTITION_SUBPARTITION_ERROR = 1482;
exports.ER_PARTITION_SUBPART_MIX_ERROR = 1483;
exports.ER_PARTITION_WRONG_NO_PART_ERROR = 1484;
exports.ER_PARTITION_WRONG_NO_SUBPART_ERROR = 1485;
exports.ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR = 1486;
exports.ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR = 1487;
exports.ER_FIELD_NOT_FOUND_PART_ERROR = 1488;
exports.ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR = 1489;
exports.ER_INCONSISTENT_PARTITION_INFO_ERROR = 1490;
exports.ER_PARTITION_FUNC_NOT_ALLOWED_ERROR = 1491;
exports.ER_PARTITIONS_MUST_BE_DEFINED_ERROR = 1492;
exports.ER_RANGE_NOT_INCREASING_ERROR = 1493;
exports.ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR = 1494;
exports.ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR = 1495;
exports.ER_PARTITION_ENTRY_ERROR = 1496;
exports.ER_MIX_HANDLER_ERROR = 1497;
exports.ER_PARTITION_NOT_DEFINED_ERROR = 1498;
exports.ER_TOO_MANY_PARTITIONS_ERROR = 1499;
exports.ER_SUBPARTITION_ERROR = 1500;
exports.ER_CANT_CREATE_HANDLER_FILE = 1501;
exports.ER_BLOB_FIELD_IN_PART_FUNC_ERROR = 1502;
exports.ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF = 1503;
exports.ER_NO_PARTS_ERROR = 1504;
exports.ER_PARTITION_MGMT_ON_NONPARTITIONED = 1505;
exports.ER_FOREIGN_KEY_ON_PARTITIONED = 1506;
exports.ER_DROP_PARTITION_NON_EXISTENT = 1507;
exports.ER_DROP_LAST_PARTITION = 1508;
exports.ER_COALESCE_ONLY_ON_HASH_PARTITION = 1509;
exports.ER_REORG_HASH_ONLY_ON_SAME_NO = 1510;
exports.ER_REORG_NO_PARAM_ERROR = 1511;
exports.ER_ONLY_ON_RANGE_LIST_PARTITION = 1512;
exports.ER_ADD_PARTITION_SUBPART_ERROR = 1513;
exports.ER_ADD_PARTITION_NO_NEW_PARTITION = 1514;
exports.ER_COALESCE_PARTITION_NO_PARTITION = 1515;
exports.ER_REORG_PARTITION_NOT_EXIST = 1516;
exports.ER_SAME_NAME_PARTITION = 1517;
exports.ER_NO_BINLOG_ERROR = 1518;
exports.ER_CONSECUTIVE_REORG_PARTITIONS = 1519;
exports.ER_REORG_OUTSIDE_RANGE = 1520;
exports.ER_PARTITION_FUNCTION_FAILURE = 1521;
exports.ER_PART_STATE_ERROR = 1522;
exports.ER_LIMITED_PART_RANGE = 1523;
exports.ER_PLUGIN_IS_NOT_LOADED = 1524;
exports.ER_WRONG_VALUE = 1525;
exports.ER_NO_PARTITION_FOR_GIVEN_VALUE = 1526;
exports.ER_FILEGROUP_OPTION_ONLY_ONCE = 1527;
exports.ER_CREATE_FILEGROUP_FAILED = 1528;
exports.ER_DROP_FILEGROUP_FAILED = 1529;
exports.ER_TABLESPACE_AUTO_EXTEND_ERROR = 1530;
exports.ER_WRONG_SIZE_NUMBER = 1531;
exports.ER_SIZE_OVERFLOW_ERROR = 1532;
exports.ER_ALTER_FILEGROUP_FAILED = 1533;
exports.ER_BINLOG_ROW_LOGGING_FAILED = 1534;
exports.ER_BINLOG_ROW_WRONG_TABLE_DEF = 1535;
exports.ER_BINLOG_ROW_RBR_TO_SBR = 1536;
exports.ER_EVENT_ALREADY_EXISTS = 1537;
exports.ER_EVENT_STORE_FAILED = 1538;
exports.ER_EVENT_DOES_NOT_EXIST = 1539;
exports.ER_EVENT_CANT_ALTER = 1540;
exports.ER_EVENT_DROP_FAILED = 1541;
exports.ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG = 1542;
exports.ER_EVENT_ENDS_BEFORE_STARTS = 1543;
exports.ER_EVENT_EXEC_TIME_IN_THE_PAST = 1544;
exports.ER_EVENT_OPEN_TABLE_FAILED = 1545;
exports.ER_EVENT_NEITHER_M_EXPR_NOR_M_AT = 1546;
exports.ER_COL_COUNT_DOESNT_MATCH_CORRUPTED = 1547;
exports.ER_CANNOT_LOAD_FROM_TABLE = 1548;
exports.ER_EVENT_CANNOT_DELETE = 1549;
exports.ER_EVENT_COMPILE_ERROR = 1550;
exports.ER_EVENT_SAME_NAME = 1551;
exports.ER_EVENT_DATA_TOO_LONG = 1552;
exports.ER_DROP_INDEX_FK = 1553;
exports.ER_WARN_DEPRECATED_SYNTAX_WITH_VER = 1554;
exports.ER_CANT_WRITE_LOCK_LOG_TABLE = 1555;
exports.ER_CANT_LOCK_LOG_TABLE = 1556;
exports.ER_FOREIGN_DUPLICATE_KEY = 1557;
exports.ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE = 1558;
exports.ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR = 1559;
exports.ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1560;
exports.ER_NDB_CANT_SWITCH_BINLOG_FORMAT = 1561;
exports.ER_PARTITION_NO_TEMPORARY = 1562;
exports.ER_PARTITION_CONST_DOMAIN_ERROR = 1563;
exports.ER_PARTITION_FUNCTION_IS_NOT_ALLOWED = 1564;
exports.ER_DDL_LOG_ERROR = 1565;
exports.ER_NULL_IN_VALUES_LESS_THAN = 1566;
exports.ER_WRONG_PARTITION_NAME = 1567;
exports.ER_CANT_CHANGE_TX_CHARACTERISTICS = 1568;
exports.ER_DUP_ENTRY_AUTOINCREMENT_CASE = 1569;
exports.ER_EVENT_MODIFY_QUEUE_ERROR = 1570;
exports.ER_EVENT_SET_VAR_ERROR = 1571;
exports.ER_PARTITION_MERGE_ERROR = 1572;
exports.ER_CANT_ACTIVATE_LOG = 1573;
exports.ER_RBR_NOT_AVAILABLE = 1574;
exports.ER_BASE64_DECODE_ERROR = 1575;
exports.ER_EVENT_RECURSION_FORBIDDEN = 1576;
exports.ER_EVENTS_DB_ERROR = 1577;
exports.ER_ONLY_INTEGERS_ALLOWED = 1578;
exports.ER_UNSUPORTED_LOG_ENGINE = 1579;
exports.ER_BAD_LOG_STATEMENT = 1580;
exports.ER_CANT_RENAME_LOG_TABLE = 1581;
exports.ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT = 1582;
exports.ER_WRONG_PARAMETERS_TO_NATIVE_FCT = 1583;
exports.ER_WRONG_PARAMETERS_TO_STORED_FCT = 1584;
exports.ER_NATIVE_FCT_NAME_COLLISION = 1585;
exports.ER_DUP_ENTRY_WITH_KEY_NAME = 1586;
exports.ER_BINLOG_PURGE_EMFILE = 1587;
exports.ER_EVENT_CANNOT_CREATE_IN_THE_PAST = 1588;
exports.ER_EVENT_CANNOT_ALTER_IN_THE_PAST = 1589;
exports.ER_SLAVE_INCIDENT = 1590;
exports.ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT = 1591;
exports.ER_BINLOG_UNSAFE_STATEMENT = 1592;
exports.ER_SLAVE_FATAL_ERROR = 1593;
exports.ER_SLAVE_RELAY_LOG_READ_FAILURE = 1594;
exports.ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 1595;
exports.ER_SLAVE_CREATE_EVENT_FAILURE = 1596;
exports.ER_SLAVE_MASTER_COM_FAILURE = 1597;
exports.ER_BINLOG_LOGGING_IMPOSSIBLE = 1598;
exports.ER_VIEW_NO_CREATION_CTX = 1599;
exports.ER_VIEW_INVALID_CREATION_CTX = 1600;
exports.ER_SR_INVALID_CREATION_CTX = 1601;
exports.ER_TRG_CORRUPTED_FILE = 1602;
exports.ER_TRG_NO_CREATION_CTX = 1603;
exports.ER_TRG_INVALID_CREATION_CTX = 1604;
exports.ER_EVENT_INVALID_CREATION_CTX = 1605;
exports.ER_TRG_CANT_OPEN_TABLE = 1606;
exports.ER_CANT_CREATE_SROUTINE = 1607;
exports.ER_NEVER_USED = 1608;
exports.ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT = 1609;
exports.ER_SLAVE_CORRUPT_EVENT = 1610;
exports.ER_LOAD_DATA_INVALID_COLUMN = 1611;
exports.ER_LOG_PURGE_NO_FILE = 1612;
exports.ER_XA_RBTIMEOUT = 1613;
exports.ER_XA_RBDEADLOCK = 1614;
exports.ER_NEED_REPREPARE = 1615;
exports.ER_DELAYED_NOT_SUPPORTED = 1616;
exports.WARN_NO_MASTER_INFO = 1617;
exports.WARN_OPTION_IGNORED = 1618;
exports.ER_PLUGIN_DELETE_BUILTIN = 1619;
exports.WARN_PLUGIN_BUSY = 1620;
exports.ER_VARIABLE_IS_READONLY = 1621;
exports.ER_WARN_ENGINE_TRANSACTION_ROLLBACK = 1622;
exports.ER_SLAVE_HEARTBEAT_FAILURE = 1623;
exports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624;
exports.ER_NDB_REPLICATION_SCHEMA_ERROR = 1625;
exports.ER_CONFLICT_FN_PARSE_ERROR = 1626;
exports.ER_EXCEPTIONS_WRITE_ERROR = 1627;
exports.ER_TOO_LONG_TABLE_COMMENT = 1628;
exports.ER_TOO_LONG_FIELD_COMMENT = 1629;
exports.ER_FUNC_INEXISTENT_NAME_COLLISION = 1630;
exports.ER_DATABASE_NAME = 1631;
exports.ER_TABLE_NAME = 1632;
exports.ER_PARTITION_NAME = 1633;
exports.ER_SUBPARTITION_NAME = 1634;
exports.ER_TEMPORARY_NAME = 1635;
exports.ER_RENAMED_NAME = 1636;
exports.ER_TOO_MANY_CONCURRENT_TRXS = 1637;
exports.WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED = 1638;
exports.ER_DEBUG_SYNC_TIMEOUT = 1639;
exports.ER_DEBUG_SYNC_HIT_LIMIT = 1640;
exports.ER_DUP_SIGNAL_SET = 1641;
exports.ER_SIGNAL_WARN = 1642;
exports.ER_SIGNAL_NOT_FOUND = 1643;
exports.ER_SIGNAL_EXCEPTION = 1644;
exports.ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER = 1645;
exports.ER_SIGNAL_BAD_CONDITION_TYPE = 1646;
exports.WARN_COND_ITEM_TRUNCATED = 1647;
exports.ER_COND_ITEM_TOO_LONG = 1648;
exports.ER_UNKNOWN_LOCALE = 1649;
exports.ER_SLAVE_IGNORE_SERVER_IDS = 1650;
exports.ER_QUERY_CACHE_DISABLED = 1651;
exports.ER_SAME_NAME_PARTITION_FIELD = 1652;
exports.ER_PARTITION_COLUMN_LIST_ERROR = 1653;
exports.ER_WRONG_TYPE_COLUMN_VALUE_ERROR = 1654;
exports.ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR = 1655;
exports.ER_MAXVALUE_IN_VALUES_IN = 1656;
exports.ER_TOO_MANY_VALUES_ERROR = 1657;
exports.ER_ROW_SINGLE_PARTITION_FIELD_ERROR = 1658;
exports.ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD = 1659;
exports.ER_PARTITION_FIELDS_TOO_LONG = 1660;
exports.ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE = 1661;
exports.ER_BINLOG_ROW_MODE_AND_STMT_ENGINE = 1662;
exports.ER_BINLOG_UNSAFE_AND_STMT_ENGINE = 1663;
exports.ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE = 1664;
exports.ER_BINLOG_STMT_MODE_AND_ROW_ENGINE = 1665;
exports.ER_BINLOG_ROW_INJECTION_AND_STMT_MODE = 1666;
exports.ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1667;
exports.ER_BINLOG_UNSAFE_LIMIT = 1668;
exports.ER_BINLOG_UNSAFE_INSERT_DELAYED = 1669;
exports.ER_BINLOG_UNSAFE_SYSTEM_TABLE = 1670;
exports.ER_BINLOG_UNSAFE_AUTOINC_COLUMNS = 1671;
exports.ER_BINLOG_UNSAFE_UDF = 1672;
exports.ER_BINLOG_UNSAFE_SYSTEM_VARIABLE = 1673;
exports.ER_BINLOG_UNSAFE_SYSTEM_FUNCTION = 1674;
exports.ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS = 1675;
exports.ER_MESSAGE_AND_STATEMENT = 1676;
exports.ER_SLAVE_CONVERSION_FAILED = 1677;
exports.ER_SLAVE_CANT_CREATE_CONVERSION = 1678;
exports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1679;
exports.ER_PATH_LENGTH = 1680;
exports.ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT = 1681;
exports.ER_WRONG_NATIVE_TABLE_STRUCTURE = 1682;
exports.ER_WRONG_PERFSCHEMA_USAGE = 1683;
exports.ER_WARN_I_S_SKIPPED_TABLE = 1684;
exports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1685;
exports.ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT = 1686;
exports.ER_SPATIAL_MUST_HAVE_GEOM_COL = 1687;
exports.ER_TOO_LONG_INDEX_COMMENT = 1688;
exports.ER_LOCK_ABORTED = 1689;
exports.ER_DATA_OUT_OF_RANGE = 1690;
exports.ER_WRONG_SPVAR_TYPE_IN_LIMIT = 1691;
exports.ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1692;
exports.ER_BINLOG_UNSAFE_MIXED_STATEMENT = 1693;
exports.ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1694;
exports.ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN = 1695;
exports.ER_FAILED_READ_FROM_PAR_FILE = 1696;
exports.ER_VALUES_IS_NOT_INT_TYPE_ERROR = 1697;
exports.ER_ACCESS_DENIED_NO_PASSWORD_ERROR = 1698;
exports.ER_SET_PASSWORD_AUTH_PLUGIN = 1699;
exports.ER_GRANT_PLUGIN_USER_EXISTS = 1700;
exports.ER_TRUNCATE_ILLEGAL_FK = 1701;
exports.ER_PLUGIN_IS_PERMANENT = 1702;
exports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703;
exports.ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX = 1704;
exports.ER_STMT_CACHE_FULL = 1705;
exports.ER_MULTI_UPDATE_KEY_CONFLICT = 1706;
exports.ER_TABLE_NEEDS_REBUILD = 1707;
exports.WARN_OPTION_BELOW_LIMIT = 1708;
exports.ER_INDEX_COLUMN_TOO_LONG = 1709;
exports.ER_ERROR_IN_TRIGGER_BODY = 1710;
exports.ER_ERROR_IN_UNKNOWN_TRIGGER_BODY = 1711;
exports.ER_INDEX_CORRUPT = 1712;
exports.ER_UNDO_RECORD_TOO_BIG = 1713;
exports.ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT = 1714;
exports.ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE = 1715;
exports.ER_BINLOG_UNSAFE_REPLACE_SELECT = 1716;
exports.ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT = 1717;
exports.ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT = 1718;
exports.ER_BINLOG_UNSAFE_UPDATE_IGNORE = 1719;
exports.ER_PLUGIN_NO_UNINSTALL = 1720;
exports.ER_PLUGIN_NO_INSTALL = 1721;
exports.ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT = 1722;
exports.ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC = 1723;
exports.ER_BINLOG_UNSAFE_INSERT_TWO_KEYS = 1724;
exports.ER_TABLE_IN_FK_CHECK = 1725;
exports.ER_UNSUPPORTED_ENGINE = 1726;
exports.ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST = 1727;
exports.ER_CANNOT_LOAD_FROM_TABLE_V2 = 1728;
exports.ER_MASTER_DELAY_VALUE_OUT_OF_RANGE = 1729;
exports.ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT = 1730;
exports.ER_PARTITION_EXCHANGE_DIFFERENT_OPTION = 1731;
exports.ER_PARTITION_EXCHANGE_PART_TABLE = 1732;
exports.ER_PARTITION_EXCHANGE_TEMP_TABLE = 1733;
exports.ER_PARTITION_INSTEAD_OF_SUBPARTITION = 1734;
exports.ER_UNKNOWN_PARTITION = 1735;
exports.ER_TABLES_DIFFERENT_METADATA = 1736;
exports.ER_ROW_DOES_NOT_MATCH_PARTITION = 1737;
exports.ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX = 1738;
exports.ER_WARN_INDEX_NOT_APPLICABLE = 1739;
exports.ER_PARTITION_EXCHANGE_FOREIGN_KEY = 1740;
exports.ER_NO_SUCH_KEY_VALUE = 1741;
exports.ER_RPL_INFO_DATA_TOO_LONG = 1742;
exports.ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE = 1743;
exports.ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE = 1744;
exports.ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX = 1745;
exports.ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT = 1746;
exports.ER_PARTITION_CLAUSE_ON_NONPARTITIONED = 1747;
exports.ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET = 1748;
exports.ER_NO_SUCH_PARTITION = 1749;
exports.ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE = 1750;
exports.ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE = 1751;
exports.ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE = 1752;
exports.ER_MTS_FEATURE_IS_NOT_SUPPORTED = 1753;
exports.ER_MTS_UPDATED_DBS_GREATER_MAX = 1754;
exports.ER_MTS_CANT_PARALLEL = 1755;
exports.ER_MTS_INCONSISTENT_DATA = 1756;
exports.ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING = 1757;
exports.ER_DA_INVALID_CONDITION_NUMBER = 1758;
exports.ER_INSECURE_PLAIN_TEXT = 1759;
exports.ER_INSECURE_CHANGE_MASTER = 1760;
exports.ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO = 1761;
exports.ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO = 1762;
exports.ER_SQLTHREAD_WITH_SECURE_SLAVE = 1763;
exports.ER_TABLE_HAS_NO_FT = 1764;
exports.ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER = 1765;
exports.ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION = 1766;
exports.ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST = 1767;
exports.ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION = 1768;
exports.ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION = 1769;
exports.ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL = 1770;
exports.ER_SKIPPING_LOGGED_TRANSACTION = 1771;
exports.ER_MALFORMED_GTID_SET_SPECIFICATION = 1772;
exports.ER_MALFORMED_GTID_SET_ENCODING = 1773;
exports.ER_MALFORMED_GTID_SPECIFICATION = 1774;
exports.ER_GNO_EXHAUSTED = 1775;
exports.ER_BAD_SLAVE_AUTO_POSITION = 1776;
exports.ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF = 1777;
exports.ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET = 1778;
exports.ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON = 1779;
exports.ER_GTID_MODE_REQUIRES_BINLOG = 1780;
exports.ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF = 1781;
exports.ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON = 1782;
exports.ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF = 1783;
exports.ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF = 1784;
exports.ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE = 1785;
exports.ER_GTID_UNSAFE_CREATE_SELECT = 1786;
exports.ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION = 1787;
exports.ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME = 1788;
exports.ER_MASTER_HAS_PURGED_REQUIRED_GTIDS = 1789;
exports.ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID = 1790;
exports.ER_UNKNOWN_EXPLAIN_FORMAT = 1791;
exports.ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION = 1792;
exports.ER_TOO_LONG_TABLE_PARTITION_COMMENT = 1793;
exports.ER_SLAVE_CONFIGURATION = 1794;
exports.ER_INNODB_FT_LIMIT = 1795;
exports.ER_INNODB_NO_FT_TEMP_TABLE = 1796;
exports.ER_INNODB_FT_WRONG_DOCID_COLUMN = 1797;
exports.ER_INNODB_FT_WRONG_DOCID_INDEX = 1798;
exports.ER_INNODB_ONLINE_LOG_TOO_BIG = 1799;
exports.ER_UNKNOWN_ALTER_ALGORITHM = 1800;
exports.ER_UNKNOWN_ALTER_LOCK = 1801;
exports.ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS = 1802;
exports.ER_MTS_RECOVERY_FAILURE = 1803;
exports.ER_MTS_RESET_WORKERS = 1804;
exports.ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2 = 1805;
exports.ER_SLAVE_SILENT_RETRY_TRANSACTION = 1806;
exports.ER_DISCARD_FK_CHECKS_RUNNING = 1807;
exports.ER_TABLE_SCHEMA_MISMATCH = 1808;
exports.ER_TABLE_IN_SYSTEM_TABLESPACE = 1809;
exports.ER_IO_READ_ERROR = 1810;
exports.ER_IO_WRITE_ERROR = 1811;
exports.ER_TABLESPACE_MISSING = 1812;
exports.ER_TABLESPACE_EXISTS = 1813;
exports.ER_TABLESPACE_DISCARDED = 1814;
exports.ER_INTERNAL_ERROR = 1815;
exports.ER_INNODB_IMPORT_ERROR = 1816;
exports.ER_INNODB_INDEX_CORRUPT = 1817;
exports.ER_INVALID_YEAR_COLUMN_LENGTH = 1818;
exports.ER_NOT_VALID_PASSWORD = 1819;
exports.ER_MUST_CHANGE_PASSWORD = 1820;
exports.ER_FK_NO_INDEX_CHILD = 1821;
exports.ER_FK_NO_INDEX_PARENT = 1822;
exports.ER_FK_FAIL_ADD_SYSTEM = 1823;
exports.ER_FK_CANNOT_OPEN_PARENT = 1824;
exports.ER_FK_INCORRECT_OPTION = 1825;
exports.ER_FK_DUP_NAME = 1826;
exports.ER_PASSWORD_FORMAT = 1827;
exports.ER_FK_COLUMN_CANNOT_DROP = 1828;
exports.ER_FK_COLUMN_CANNOT_DROP_CHILD = 1829;
exports.ER_FK_COLUMN_NOT_NULL = 1830;
exports.ER_DUP_INDEX = 1831;
exports.ER_FK_COLUMN_CANNOT_CHANGE = 1832;
exports.ER_FK_COLUMN_CANNOT_CHANGE_CHILD = 1833;
exports.ER_FK_CANNOT_DELETE_PARENT = 1834;
exports.ER_MALFORMED_PACKET = 1835;
exports.ER_READ_ONLY_MODE = 1836;
exports.ER_GTID_NEXT_TYPE_UNDEFINED_GROUP = 1837;
exports.ER_VARIABLE_NOT_SETTABLE_IN_SP = 1838;
exports.ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF = 1839;
exports.ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY = 1840;
exports.ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY = 1841;
exports.ER_GTID_PURGED_WAS_CHANGED = 1842;
exports.ER_GTID_EXECUTED_WAS_CHANGED = 1843;
exports.ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES = 1844;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED = 1845;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON = 1846;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY = 1847;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION = 1848;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME = 1849;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE = 1850;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK = 1851;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE = 1852;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK = 1853;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC = 1854;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS = 1855;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS = 1856;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS = 1857;
exports.ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE = 1858;
exports.ER_DUP_UNKNOWN_IN_INDEX = 1859;
exports.ER_IDENT_CAUSES_TOO_LONG_PATH = 1860;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL = 1861;
exports.ER_MUST_CHANGE_PASSWORD_LOGIN = 1862;
exports.ER_ROW_IN_WRONG_PARTITION = 1863;
exports.ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX = 1864;
exports.ER_INNODB_NO_FT_USES_PARSER = 1865;
exports.ER_BINLOG_LOGICAL_CORRUPTION = 1866;
exports.ER_WARN_PURGE_LOG_IN_USE = 1867;
exports.ER_WARN_PURGE_LOG_IS_ACTIVE = 1868;
exports.ER_AUTO_INCREMENT_CONFLICT = 1869;
exports.WARN_ON_BLOCKHOLE_IN_RBR = 1870;
exports.ER_SLAVE_MI_INIT_REPOSITORY = 1871;
exports.ER_SLAVE_RLI_INIT_REPOSITORY = 1872;
exports.ER_ACCESS_DENIED_CHANGE_USER_ERROR = 1873;
exports.ER_INNODB_READ_ONLY = 1874;
exports.ER_STOP_SLAVE_SQL_THREAD_TIMEOUT = 1875;
exports.ER_STOP_SLAVE_IO_THREAD_TIMEOUT = 1876;
exports.ER_TABLE_CORRUPT = 1877;
exports.ER_TEMP_FILE_WRITE_FAILURE = 1878;
exports.ER_INNODB_FT_AUX_NOT_HEX_ID = 1879;
exports.ER_OLD_TEMPORALS_UPGRADED = 1880;
exports.ER_INNODB_FORCED_RECOVERY = 1881;
exports.ER_AES_INVALID_IV = 1882;
exports.ER_PLUGIN_CANNOT_BE_UNINSTALLED = 1883;
exports.ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_GTID_GROUP = 1884;
exports.ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER = 1885;
exports.ER_MISSING_KEY = 1886;
exports.WARN_NAMED_PIPE_ACCESS_EVERYONE = 1887;
exports.ER_FOUND_MISSING_GTIDS = 1888;
exports.ER_FILE_CORRUPT = 3000;
exports.ER_ERROR_ON_MASTER = 3001;
exports.ER_INCONSISTENT_ERROR = 3002;
exports.ER_STORAGE_ENGINE_NOT_LOADED = 3003;
exports.ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER = 3004;
exports.ER_WARN_LEGACY_SYNTAX_CONVERTED = 3005;
exports.ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN = 3006;
exports.ER_CANNOT_DISCARD_TEMPORARY_TABLE = 3007;
exports.ER_FK_DEPTH_EXCEEDED = 3008;
exports.ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2 = 3009;
exports.ER_WARN_TRIGGER_DOESNT_HAVE_CREATED = 3010;
exports.ER_REFERENCED_TRG_DOES_NOT_EXIST = 3011;
exports.ER_EXPLAIN_NOT_SUPPORTED = 3012;
exports.ER_INVALID_FIELD_SIZE = 3013;
exports.ER_MISSING_HA_CREATE_OPTION = 3014;
exports.ER_ENGINE_OUT_OF_MEMORY = 3015;
exports.ER_PASSWORD_EXPIRE_ANONYMOUS_USER = 3016;
exports.ER_SLAVE_SQL_THREAD_MUST_STOP = 3017;
exports.ER_NO_FT_MATERIALIZED_SUBQUERY = 3018;
exports.ER_INNODB_UNDO_LOG_FULL = 3019;
exports.ER_INVALID_ARGUMENT_FOR_LOGARITHM = 3020;
exports.ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP = 3021;
exports.ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO = 3022;
exports.ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS = 3023;
exports.ER_QUERY_TIMEOUT = 3024;
exports.ER_NON_RO_SELECT_DISABLE_TIMER = 3025;
exports.ER_DUP_LIST_ENTRY = 3026;
exports.ER_SQL_MODE_NO_EFFECT = 3027;
exports.ER_AGGREGATE_ORDER_FOR_UNION = 3028;
exports.ER_AGGREGATE_ORDER_NON_AGG_QUERY = 3029;
exports.ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR = 3030;
exports.ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER = 3031;
exports.ER_SERVER_OFFLINE_MODE = 3032;
exports.ER_GIS_DIFFERENT_SRIDS = 3033;
exports.ER_GIS_UNSUPPORTED_ARGUMENT = 3034;
exports.ER_GIS_UNKNOWN_ERROR = 3035;
exports.ER_GIS_UNKNOWN_EXCEPTION = 3036;
exports.ER_GIS_INVALID_DATA = 3037;
exports.ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION = 3038;
exports.ER_BOOST_GEOMETRY_CENTROID_EXCEPTION = 3039;
exports.ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION = 3040;
exports.ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION = 3041;
exports.ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION = 3042;
exports.ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION = 3043;
exports.ER_STD_BAD_ALLOC_ERROR = 3044;
exports.ER_STD_DOMAIN_ERROR = 3045;
exports.ER_STD_LENGTH_ERROR = 3046;
exports.ER_STD_INVALID_ARGUMENT = 3047;
exports.ER_STD_OUT_OF_RANGE_ERROR = 3048;
exports.ER_STD_OVERFLOW_ERROR = 3049;
exports.ER_STD_RANGE_ERROR = 3050;
exports.ER_STD_UNDERFLOW_ERROR = 3051;
exports.ER_STD_LOGIC_ERROR = 3052;
exports.ER_STD_RUNTIME_ERROR = 3053;
exports.ER_STD_UNKNOWN_EXCEPTION = 3054;
exports.ER_GIS_DATA_WRONG_ENDIANESS = 3055;
exports.ER_CHANGE_MASTER_PASSWORD_LENGTH = 3056;
exports.ER_USER_LOCK_WRONG_NAME = 3057;
exports.ER_USER_LOCK_DEADLOCK = 3058;
exports.ER_REPLACE_INACCESSIBLE_ROWS = 3059;
exports.ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS = 3060;
exports.ER_ILLEGAL_USER_VAR = 3061;
exports.ER_GTID_MODE_OFF = 3062;
exports.ER_UNSUPPORTED_BY_REPLICATION_THREAD = 3063;
exports.ER_INCORRECT_TYPE = 3064;
exports.ER_FIELD_IN_ORDER_NOT_SELECT = 3065;
exports.ER_AGGREGATE_IN_ORDER_NOT_SELECT = 3066;
exports.ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN = 3067;
exports.ER_NET_OK_PACKET_TOO_LARGE = 3068;
exports.ER_INVALID_JSON_DATA = 3069;
exports.ER_INVALID_GEOJSON_MISSING_MEMBER = 3070;
exports.ER_INVALID_GEOJSON_WRONG_TYPE = 3071;
exports.ER_INVALID_GEOJSON_UNSPECIFIED = 3072;
exports.ER_DIMENSION_UNSUPPORTED = 3073;
exports.ER_SLAVE_CHANNEL_DOES_NOT_EXIST = 3074;
exports.ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT = 3075;
exports.ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG = 3076;
exports.ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY = 3077;
exports.ER_SLAVE_CHANNEL_DELETE = 3078;
exports.ER_SLAVE_MULTIPLE_CHANNELS_CMD = 3079;
exports.ER_SLAVE_MAX_CHANNELS_EXCEEDED = 3080;
exports.ER_SLAVE_CHANNEL_MUST_STOP = 3081;
exports.ER_SLAVE_CHANNEL_NOT_RUNNING = 3082;
exports.ER_SLAVE_CHANNEL_WAS_RUNNING = 3083;
exports.ER_SLAVE_CHANNEL_WAS_NOT_RUNNING = 3084;
exports.ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP = 3085;
exports.ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER = 3086;
exports.ER_WRONG_FIELD_WITH_GROUP_V2 = 3087;
exports.ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2 = 3088;
exports.ER_WARN_DEPRECATED_SYSVAR_UPDATE = 3089;
exports.ER_WARN_DEPRECATED_SQLMODE = 3090;
exports.ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID = 3091;
exports.ER_GROUP_REPLICATION_CONFIGURATION = 3092;
exports.ER_GROUP_REPLICATION_RUNNING = 3093;
exports.ER_GROUP_REPLICATION_APPLIER_INIT_ERROR = 3094;
exports.ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT = 3095;
exports.ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR = 3096;
exports.ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR = 3097;
exports.ER_BEFORE_DML_VALIDATION_ERROR = 3098;
exports.ER_PREVENTS_VARIABLE_WITHOUT_RBR = 3099;
exports.ER_RUN_HOOK_ERROR = 3100;
exports.ER_TRANSACTION_ROLLBACK_DURING_COMMIT = 3101;
exports.ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED = 3102;
exports.ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN = 3103;
exports.ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN = 3104;
exports.ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN = 3105;
exports.ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN = 3106;
exports.ER_GENERATED_COLUMN_NON_PRIOR = 3107;
exports.ER_DEPENDENT_BY_GENERATED_COLUMN = 3108;
exports.ER_GENERATED_COLUMN_REF_AUTO_INC = 3109;
exports.ER_FEATURE_NOT_AVAILABLE = 3110;
exports.ER_CANT_SET_GTID_MODE = 3111;
exports.ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF = 3112;
exports.ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION = 3113;
exports.ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON = 3114;
exports.ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF = 3115;
exports.ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS = 3116;
exports.ER_SET_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS = 3117;
exports.ER_ACCOUNT_HAS_BEEN_LOCKED = 3118;
exports.ER_WRONG_TABLESPACE_NAME = 3119;
exports.ER_TABLESPACE_IS_NOT_EMPTY = 3120;
exports.ER_WRONG_FILE_NAME = 3121;
exports.ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION = 3122;
exports.ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR = 3123;
exports.ER_WARN_BAD_MAX_EXECUTION_TIME = 3124;
exports.ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME = 3125;
exports.ER_WARN_CONFLICTING_HINT = 3126;
exports.ER_WARN_UNKNOWN_QB_NAME = 3127;
exports.ER_UNRESOLVED_HINT_NAME = 3128;
exports.ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE = 3129;
exports.ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED = 3130;
exports.ER_LOCKING_SERVICE_WRONG_NAME = 3131;
exports.ER_LOCKING_SERVICE_DEADLOCK = 3132;
exports.ER_LOCKING_SERVICE_TIMEOUT = 3133;
exports.ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED = 3134;
exports.ER_SQL_MODE_MERGED = 3135;
exports.ER_VTOKEN_PLUGIN_TOKEN_MISMATCH = 3136;
exports.ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND = 3137;
exports.ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID = 3138;
exports.ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED = 3139;
exports.ER_INVALID_JSON_TEXT = 3140;
exports.ER_INVALID_JSON_TEXT_IN_PARAM = 3141;
exports.ER_INVALID_JSON_BINARY_DATA = 3142;
exports.ER_INVALID_JSON_PATH = 3143;
exports.ER_INVALID_JSON_CHARSET = 3144;
exports.ER_INVALID_JSON_CHARSET_IN_FUNCTION = 3145;
exports.ER_INVALID_TYPE_FOR_JSON = 3146;
exports.ER_INVALID_CAST_TO_JSON = 3147;
exports.ER_INVALID_JSON_PATH_CHARSET = 3148;
exports.ER_INVALID_JSON_PATH_WILDCARD = 3149;
exports.ER_JSON_VALUE_TOO_BIG = 3150;
exports.ER_JSON_KEY_TOO_BIG = 3151;
exports.ER_JSON_USED_AS_KEY = 3152;
exports.ER_JSON_VACUOUS_PATH = 3153;
exports.ER_JSON_BAD_ONE_OR_ALL_ARG = 3154;
exports.ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE = 3155;
exports.ER_INVALID_JSON_VALUE_FOR_CAST = 3156;
exports.ER_JSON_DOCUMENT_TOO_DEEP = 3157;
exports.ER_JSON_DOCUMENT_NULL_KEY = 3158;
exports.ER_SECURE_TRANSPORT_REQUIRED = 3159;
exports.ER_NO_SECURE_TRANSPORTS_CONFIGURED = 3160;
exports.ER_DISABLED_STORAGE_ENGINE = 3161;
exports.ER_USER_DOES_NOT_EXIST = 3162;
exports.ER_USER_ALREADY_EXISTS = 3163;
exports.ER_AUDIT_API_ABORT = 3164;
exports.ER_INVALID_JSON_PATH_ARRAY_CELL = 3165;
exports.ER_BUFPOOL_RESIZE_INPROGRESS = 3166;
exports.ER_FEATURE_DISABLED_SEE_DOC = 3167;
exports.ER_SERVER_ISNT_AVAILABLE = 3168;
exports.ER_SESSION_WAS_KILLED = 3169;
exports.ER_CAPACITY_EXCEEDED = 3170;
exports.ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER = 3171;
exports.ER_TABLE_NEEDS_UPG_PART = 3172;
exports.ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID = 3173;
exports.ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL = 3174;
exports.ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT = 3175;
exports.ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE = 3176;
exports.ER_LOCK_REFUSED_BY_ENGINE = 3177;
exports.ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN = 3178;
exports.ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE = 3179;
exports.ER_MASTER_KEY_ROTATION_ERROR_BY_SE = 3180;
exports.ER_MASTER_KEY_ROTATION_BINLOG_FAILED = 3181;
exports.ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE = 3182;
exports.ER_TABLESPACE_CANNOT_ENCRYPT = 3183;
exports.ER_INVALID_ENCRYPTION_OPTION = 3184;
exports.ER_CANNOT_FIND_KEY_IN_KEYRING = 3185;
exports.ER_CAPACITY_EXCEEDED_IN_PARSER = 3186;
exports.ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE = 3187;
exports.ER_KEYRING_UDF_KEYRING_SERVICE_ERROR = 3188;
exports.ER_USER_COLUMN_OLD_LENGTH = 3189;
exports.ER_CANT_RESET_MASTER = 3190;
exports.ER_GROUP_REPLICATION_MAX_GROUP_SIZE = 3191;
exports.ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED = 3192;
exports.ER_TABLE_REFERENCED = 3193;
exports.ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE = 3194;
exports.ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO = 3195;
exports.ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID = 3196;
exports.ER_XA_RETRY = 3197;
exports.ER_KEYRING_AWS_UDF_AWS_KMS_ERROR = 3198;
exports.ER_BINLOG_UNSAFE_XA = 3199;
exports.ER_UDF_ERROR = 3200;
exports.ER_KEYRING_MIGRATION_FAILURE = 3201;
exports.ER_KEYRING_ACCESS_DENIED_ERROR = 3202;
exports.ER_KEYRING_MIGRATION_STATUS = 3203;
exports.ER_PLUGIN_FAILED_TO_OPEN_TABLES = 3204;
exports.ER_PLUGIN_FAILED_TO_OPEN_TABLE = 3205;
exports.ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED = 3206;
exports.ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET = 3207;
exports.ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY = 3208;
exports.ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED = 3209;
exports.ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED = 3210;
exports.ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE = 3211;
exports.ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED = 3212;
exports.ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS = 3213;
exports.ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE = 3214;
exports.ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT = 3215;
exports.ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED = 3216;
exports.ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE = 3217;
exports.ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE = 3218;
exports.ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR = 3219;
exports.ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY = 3220;
exports.ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY = 3221;
exports.ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS = 3222;
exports.ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC = 3223;
exports.ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER = 3224;
exports.ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER = 3225;
exports.WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP = 3226;
exports.ER_XA_REPLICATION_FILTERS = 3227;
exports.ER_CANT_OPEN_ERROR_LOG = 3228;
exports.ER_GROUPING_ON_TIMESTAMP_IN_DST = 3229;
exports.ER_CANT_START_SERVER_NAMED_PIPE = 3230;
exports[1] = "EE_CANTCREATEFILE";
exports[2] = "EE_READ";
exports[3] = "EE_WRITE";
exports[4] = "EE_BADCLOSE";
exports[5] = "EE_OUTOFMEMORY";
exports[6] = "EE_DELETE";
exports[7] = "EE_LINK";
exports[9] = "EE_EOFERR";
exports[10] = "EE_CANTLOCK";
exports[11] = "EE_CANTUNLOCK";
exports[12] = "EE_DIR";
exports[13] = "EE_STAT";
exports[14] = "EE_CANT_CHSIZE";
exports[15] = "EE_CANT_OPEN_STREAM";
exports[16] = "EE_GETWD";
exports[17] = "EE_SETWD";
exports[18] = "EE_LINK_WARNING";
exports[19] = "EE_OPEN_WARNING";
exports[20] = "EE_DISK_FULL";
exports[21] = "EE_CANT_MKDIR";
exports[22] = "EE_UNKNOWN_CHARSET";
exports[23] = "EE_OUT_OF_FILERESOURCES";
exports[24] = "EE_CANT_READLINK";
exports[25] = "EE_CANT_SYMLINK";
exports[26] = "EE_REALPATH";
exports[27] = "EE_SYNC";
exports[28] = "EE_UNKNOWN_COLLATION";
exports[29] = "EE_FILENOTFOUND";
exports[30] = "EE_FILE_NOT_CLOSED";
exports[31] = "EE_CHANGE_OWNERSHIP";
exports[32] = "EE_CHANGE_PERMISSIONS";
exports[33] = "EE_CANT_SEEK";
exports[34] = "EE_CAPACITY_EXCEEDED";
exports[120] = "HA_ERR_KEY_NOT_FOUND";
exports[121] = "HA_ERR_FOUND_DUPP_KEY";
exports[122] = "HA_ERR_INTERNAL_ERROR";
exports[123] = "HA_ERR_RECORD_CHANGED";
exports[124] = "HA_ERR_WRONG_INDEX";
exports[126] = "HA_ERR_CRASHED";
exports[127] = "HA_ERR_WRONG_IN_RECORD";
exports[128] = "HA_ERR_OUT_OF_MEM";
exports[130] = "HA_ERR_NOT_A_TABLE";
exports[131] = "HA_ERR_WRONG_COMMAND";
exports[132] = "HA_ERR_OLD_FILE";
exports[133] = "HA_ERR_NO_ACTIVE_RECORD";
exports[134] = "HA_ERR_RECORD_DELETED";
exports[135] = "HA_ERR_RECORD_FILE_FULL";
exports[136] = "HA_ERR_INDEX_FILE_FULL";
exports[137] = "HA_ERR_END_OF_FILE";
exports[138] = "HA_ERR_UNSUPPORTED";
exports[139] = "HA_ERR_TOO_BIG_ROW";
exports[140] = "HA_WRONG_CREATE_OPTION";
exports[141] = "HA_ERR_FOUND_DUPP_UNIQUE";
exports[142] = "HA_ERR_UNKNOWN_CHARSET";
exports[143] = "HA_ERR_WRONG_MRG_TABLE_DEF";
exports[144] = "HA_ERR_CRASHED_ON_REPAIR";
exports[145] = "HA_ERR_CRASHED_ON_USAGE";
exports[146] = "HA_ERR_LOCK_WAIT_TIMEOUT";
exports[147] = "HA_ERR_LOCK_TABLE_FULL";
exports[148] = "HA_ERR_READ_ONLY_TRANSACTION";
exports[149] = "HA_ERR_LOCK_DEADLOCK";
exports[150] = "HA_ERR_CANNOT_ADD_FOREIGN";
exports[151] = "HA_ERR_NO_REFERENCED_ROW";
exports[152] = "HA_ERR_ROW_IS_REFERENCED";
exports[153] = "HA_ERR_NO_SAVEPOINT";
exports[154] = "HA_ERR_NON_UNIQUE_BLOCK_SIZE";
exports[155] = "HA_ERR_NO_SUCH_TABLE";
exports[156] = "HA_ERR_TABLE_EXIST";
exports[157] = "HA_ERR_NO_CONNECTION";
exports[158] = "HA_ERR_NULL_IN_SPATIAL";
exports[159] = "HA_ERR_TABLE_DEF_CHANGED";
exports[160] = "HA_ERR_NO_PARTITION_FOUND";
exports[161] = "HA_ERR_RBR_LOGGING_FAILED";
exports[162] = "HA_ERR_DROP_INDEX_FK";
exports[163] = "HA_ERR_FOREIGN_DUPLICATE_KEY";
exports[164] = "HA_ERR_TABLE_NEEDS_UPGRADE";
exports[165] = "HA_ERR_TABLE_READONLY";
exports[166] = "HA_ERR_AUTOINC_READ_FAILED";
exports[167] = "HA_ERR_AUTOINC_ERANGE";
exports[168] = "HA_ERR_GENERIC";
exports[169] = "HA_ERR_RECORD_IS_THE_SAME";
exports[170] = "HA_ERR_LOGGING_IMPOSSIBLE";
exports[171] = "HA_ERR_CORRUPT_EVENT";
exports[172] = "HA_ERR_NEW_FILE";
exports[173] = "HA_ERR_ROWS_EVENT_APPLY";
exports[174] = "HA_ERR_INITIALIZATION";
exports[175] = "HA_ERR_FILE_TOO_SHORT";
exports[176] = "HA_ERR_WRONG_CRC";
exports[177] = "HA_ERR_TOO_MANY_CONCURRENT_TRXS";
exports[178] = "HA_ERR_NOT_IN_LOCK_PARTITIONS";
exports[179] = "HA_ERR_INDEX_COL_TOO_LONG";
exports[180] = "HA_ERR_INDEX_CORRUPT";
exports[181] = "HA_ERR_UNDO_REC_TOO_BIG";
exports[182] = "HA_FTS_INVALID_DOCID";
exports[183] = "HA_ERR_TABLE_IN_FK_CHECK";
exports[184] = "HA_ERR_TABLESPACE_EXISTS";
exports[185] = "HA_ERR_TOO_MANY_FIELDS";
exports[186] = "HA_ERR_ROW_IN_WRONG_PARTITION";
exports[187] = "HA_ERR_INNODB_READ_ONLY";
exports[188] = "HA_ERR_FTS_EXCEED_RESULT_CACHE_LIMIT";
exports[189] = "HA_ERR_TEMP_FILE_WRITE_FAILURE";
exports[190] = "HA_ERR_INNODB_FORCED_RECOVERY";
exports[191] = "HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE";
exports[192] = "HA_ERR_FK_DEPTH_EXCEEDED";
exports[193] = "HA_MISSING_CREATE_OPTION";
exports[194] = "HA_ERR_SE_OUT_OF_MEMORY";
exports[195] = "HA_ERR_TABLE_CORRUPT";
exports[196] = "HA_ERR_QUERY_INTERRUPTED";
exports[197] = "HA_ERR_TABLESPACE_MISSING";
exports[198] = "HA_ERR_TABLESPACE_IS_NOT_EMPTY";
exports[199] = "HA_ERR_WRONG_FILE_NAME";
exports[200] = "HA_ERR_NOT_ALLOWED_COMMAND";
exports[201] = "HA_ERR_COMPUTE_FAILED";
exports[1000] = "ER_HASHCHK";
exports[1001] = "ER_NISAMCHK";
exports[1002] = "ER_NO";
exports[1003] = "ER_YES";
exports[1004] = "ER_CANT_CREATE_FILE";
exports[1005] = "ER_CANT_CREATE_TABLE";
exports[1006] = "ER_CANT_CREATE_DB";
exports[1007] = "ER_DB_CREATE_EXISTS";
exports[1008] = "ER_DB_DROP_EXISTS";
exports[1009] = "ER_DB_DROP_DELETE";
exports[1010] = "ER_DB_DROP_RMDIR";
exports[1011] = "ER_CANT_DELETE_FILE";
exports[1012] = "ER_CANT_FIND_SYSTEM_REC";
exports[1013] = "ER_CANT_GET_STAT";
exports[1014] = "ER_CANT_GET_WD";
exports[1015] = "ER_CANT_LOCK";
exports[1016] = "ER_CANT_OPEN_FILE";
exports[1017] = "ER_FILE_NOT_FOUND";
exports[1018] = "ER_CANT_READ_DIR";
exports[1019] = "ER_CANT_SET_WD";
exports[1020] = "ER_CHECKREAD";
exports[1021] = "ER_DISK_FULL";
exports[1022] = "ER_DUP_KEY";
exports[1023] = "ER_ERROR_ON_CLOSE";
exports[1024] = "ER_ERROR_ON_READ";
exports[1025] = "ER_ERROR_ON_RENAME";
exports[1026] = "ER_ERROR_ON_WRITE";
exports[1027] = "ER_FILE_USED";
exports[1028] = "ER_FILSORT_ABORT";
exports[1029] = "ER_FORM_NOT_FOUND";
exports[1030] = "ER_GET_ERRNO";
exports[1031] = "ER_ILLEGAL_HA";
exports[1032] = "ER_KEY_NOT_FOUND";
exports[1033] = "ER_NOT_FORM_FILE";
exports[1034] = "ER_NOT_KEYFILE";
exports[1035] = "ER_OLD_KEYFILE";
exports[1036] = "ER_OPEN_AS_READONLY";
exports[1037] = "ER_OUTOFMEMORY";
exports[1038] = "ER_OUT_OF_SORTMEMORY";
exports[1039] = "ER_UNEXPECTED_EOF";
exports[1040] = "ER_CON_COUNT_ERROR";
exports[1041] = "ER_OUT_OF_RESOURCES";
exports[1042] = "ER_BAD_HOST_ERROR";
exports[1043] = "ER_HANDSHAKE_ERROR";
exports[1044] = "ER_DBACCESS_DENIED_ERROR";
exports[1045] = "ER_ACCESS_DENIED_ERROR";
exports[1046] = "ER_NO_DB_ERROR";
exports[1047] = "ER_UNKNOWN_COM_ERROR";
exports[1048] = "ER_BAD_NULL_ERROR";
exports[1049] = "ER_BAD_DB_ERROR";
exports[1050] = "ER_TABLE_EXISTS_ERROR";
exports[1051] = "ER_BAD_TABLE_ERROR";
exports[1052] = "ER_NON_UNIQ_ERROR";
exports[1053] = "ER_SERVER_SHUTDOWN";
exports[1054] = "ER_BAD_FIELD_ERROR";
exports[1055] = "ER_WRONG_FIELD_WITH_GROUP";
exports[1056] = "ER_WRONG_GROUP_FIELD";
exports[1057] = "ER_WRONG_SUM_SELECT";
exports[1058] = "ER_WRONG_VALUE_COUNT";
exports[1059] = "ER_TOO_LONG_IDENT";
exports[1060] = "ER_DUP_FIELDNAME";
exports[1061] = "ER_DUP_KEYNAME";
exports[1062] = "ER_DUP_ENTRY";
exports[1063] = "ER_WRONG_FIELD_SPEC";
exports[1064] = "ER_PARSE_ERROR";
exports[1065] = "ER_EMPTY_QUERY";
exports[1066] = "ER_NONUNIQ_TABLE";
exports[1067] = "ER_INVALID_DEFAULT";
exports[1068] = "ER_MULTIPLE_PRI_KEY";
exports[1069] = "ER_TOO_MANY_KEYS";
exports[1070] = "ER_TOO_MANY_KEY_PARTS";
exports[1071] = "ER_TOO_LONG_KEY";
exports[1072] = "ER_KEY_COLUMN_DOES_NOT_EXITS";
exports[1073] = "ER_BLOB_USED_AS_KEY";
exports[1074] = "ER_TOO_BIG_FIELDLENGTH";
exports[1075] = "ER_WRONG_AUTO_KEY";
exports[1076] = "ER_READY";
exports[1077] = "ER_NORMAL_SHUTDOWN";
exports[1078] = "ER_GOT_SIGNAL";
exports[1079] = "ER_SHUTDOWN_COMPLETE";
exports[1080] = "ER_FORCING_CLOSE";
exports[1081] = "ER_IPSOCK_ERROR";
exports[1082] = "ER_NO_SUCH_INDEX";
exports[1083] = "ER_WRONG_FIELD_TERMINATORS";
exports[1084] = "ER_BLOBS_AND_NO_TERMINATED";
exports[1085] = "ER_TEXTFILE_NOT_READABLE";
exports[1086] = "ER_FILE_EXISTS_ERROR";
exports[1087] = "ER_LOAD_INFO";
exports[1088] = "ER_ALTER_INFO";
exports[1089] = "ER_WRONG_SUB_KEY";
exports[1090] = "ER_CANT_REMOVE_ALL_FIELDS";
exports[1091] = "ER_CANT_DROP_FIELD_OR_KEY";
exports[1092] = "ER_INSERT_INFO";
exports[1093] = "ER_UPDATE_TABLE_USED";
exports[1094] = "ER_NO_SUCH_THREAD";
exports[1095] = "ER_KILL_DENIED_ERROR";
exports[1096] = "ER_NO_TABLES_USED";
exports[1097] = "ER_TOO_BIG_SET";
exports[1098] = "ER_NO_UNIQUE_LOGFILE";
exports[1099] = "ER_TABLE_NOT_LOCKED_FOR_WRITE";
exports[1100] = "ER_TABLE_NOT_LOCKED";
exports[1101] = "ER_BLOB_CANT_HAVE_DEFAULT";
exports[1102] = "ER_WRONG_DB_NAME";
exports[1103] = "ER_WRONG_TABLE_NAME";
exports[1104] = "ER_TOO_BIG_SELECT";
exports[1105] = "ER_UNKNOWN_ERROR";
exports[1106] = "ER_UNKNOWN_PROCEDURE";
exports[1107] = "ER_WRONG_PARAMCOUNT_TO_PROCEDURE";
exports[1108] = "ER_WRONG_PARAMETERS_TO_PROCEDURE";
exports[1109] = "ER_UNKNOWN_TABLE";
exports[1110] = "ER_FIELD_SPECIFIED_TWICE";
exports[1111] = "ER_INVALID_GROUP_FUNC_USE";
exports[1112] = "ER_UNSUPPORTED_EXTENSION";
exports[1113] = "ER_TABLE_MUST_HAVE_COLUMNS";
exports[1114] = "ER_RECORD_FILE_FULL";
exports[1115] = "ER_UNKNOWN_CHARACTER_SET";
exports[1116] = "ER_TOO_MANY_TABLES";
exports[1117] = "ER_TOO_MANY_FIELDS";
exports[1118] = "ER_TOO_BIG_ROWSIZE";
exports[1119] = "ER_STACK_OVERRUN";
exports[1120] = "ER_WRONG_OUTER_JOIN";
exports[1121] = "ER_NULL_COLUMN_IN_INDEX";
exports[1122] = "ER_CANT_FIND_UDF";
exports[1123] = "ER_CANT_INITIALIZE_UDF";
exports[1124] = "ER_UDF_NO_PATHS";
exports[1125] = "ER_UDF_EXISTS";
exports[1126] = "ER_CANT_OPEN_LIBRARY";
exports[1127] = "ER_CANT_FIND_DL_ENTRY";
exports[1128] = "ER_FUNCTION_NOT_DEFINED";
exports[1129] = "ER_HOST_IS_BLOCKED";
exports[1130] = "ER_HOST_NOT_PRIVILEGED";
exports[1131] = "ER_PASSWORD_ANONYMOUS_USER";
exports[1132] = "ER_PASSWORD_NOT_ALLOWED";
exports[1133] = "ER_PASSWORD_NO_MATCH";
exports[1134] = "ER_UPDATE_INFO";
exports[1135] = "ER_CANT_CREATE_THREAD";
exports[1136] = "ER_WRONG_VALUE_COUNT_ON_ROW";
exports[1137] = "ER_CANT_REOPEN_TABLE";
exports[1138] = "ER_INVALID_USE_OF_NULL";
exports[1139] = "ER_REGEXP_ERROR";
exports[1140] = "ER_MIX_OF_GROUP_FUNC_AND_FIELDS";
exports[1141] = "ER_NONEXISTING_GRANT";
exports[1142] = "ER_TABLEACCESS_DENIED_ERROR";
exports[1143] = "ER_COLUMNACCESS_DENIED_ERROR";
exports[1144] = "ER_ILLEGAL_GRANT_FOR_TABLE";
exports[1145] = "ER_GRANT_WRONG_HOST_OR_USER";
exports[1146] = "ER_NO_SUCH_TABLE";
exports[1147] = "ER_NONEXISTING_TABLE_GRANT";
exports[1148] = "ER_NOT_ALLOWED_COMMAND";
exports[1149] = "ER_SYNTAX_ERROR";
exports[1150] = "ER_DELAYED_CANT_CHANGE_LOCK";
exports[1151] = "ER_TOO_MANY_DELAYED_THREADS";
exports[1152] = "ER_ABORTING_CONNECTION";
exports[1153] = "ER_NET_PACKET_TOO_LARGE";
exports[1154] = "ER_NET_READ_ERROR_FROM_PIPE";
exports[1155] = "ER_NET_FCNTL_ERROR";
exports[1156] = "ER_NET_PACKETS_OUT_OF_ORDER";
exports[1157] = "ER_NET_UNCOMPRESS_ERROR";
exports[1158] = "ER_NET_READ_ERROR";
exports[1159] = "ER_NET_READ_INTERRUPTED";
exports[1160] = "ER_NET_ERROR_ON_WRITE";
exports[1161] = "ER_NET_WRITE_INTERRUPTED";
exports[1162] = "ER_TOO_LONG_STRING";
exports[1163] = "ER_TABLE_CANT_HANDLE_BLOB";
exports[1164] = "ER_TABLE_CANT_HANDLE_AUTO_INCREMENT";
exports[1165] = "ER_DELAYED_INSERT_TABLE_LOCKED";
exports[1166] = "ER_WRONG_COLUMN_NAME";
exports[1167] = "ER_WRONG_KEY_COLUMN";
exports[1168] = "ER_WRONG_MRG_TABLE";
exports[1169] = "ER_DUP_UNIQUE";
exports[1170] = "ER_BLOB_KEY_WITHOUT_LENGTH";
exports[1171] = "ER_PRIMARY_CANT_HAVE_NULL";
exports[1172] = "ER_TOO_MANY_ROWS";
exports[1173] = "ER_REQUIRES_PRIMARY_KEY";
exports[1174] = "ER_NO_RAID_COMPILED";
exports[1175] = "ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE";
exports[1176] = "ER_KEY_DOES_NOT_EXITS";
exports[1177] = "ER_CHECK_NO_SUCH_TABLE";
exports[1178] = "ER_CHECK_NOT_IMPLEMENTED";
exports[1179] = "ER_CANT_DO_THIS_DURING_AN_TRANSACTION";
exports[1180] = "ER_ERROR_DURING_COMMIT";
exports[1181] = "ER_ERROR_DURING_ROLLBACK";
exports[1182] = "ER_ERROR_DURING_FLUSH_LOGS";
exports[1183] = "ER_ERROR_DURING_CHECKPOINT";
exports[1184] = "ER_NEW_ABORTING_CONNECTION";
exports[1185] = "ER_DUMP_NOT_IMPLEMENTED";
exports[1186] = "ER_FLUSH_MASTER_BINLOG_CLOSED";
exports[1187] = "ER_INDEX_REBUILD";
exports[1188] = "ER_MASTER";
exports[1189] = "ER_MASTER_NET_READ";
exports[1190] = "ER_MASTER_NET_WRITE";
exports[1191] = "ER_FT_MATCHING_KEY_NOT_FOUND";
exports[1192] = "ER_LOCK_OR_ACTIVE_TRANSACTION";
exports[1193] = "ER_UNKNOWN_SYSTEM_VARIABLE";
exports[1194] = "ER_CRASHED_ON_USAGE";
exports[1195] = "ER_CRASHED_ON_REPAIR";
exports[1196] = "ER_WARNING_NOT_COMPLETE_ROLLBACK";
exports[1197] = "ER_TRANS_CACHE_FULL";
exports[1198] = "ER_SLAVE_MUST_STOP";
exports[1199] = "ER_SLAVE_NOT_RUNNING";
exports[1200] = "ER_BAD_SLAVE";
exports[1201] = "ER_MASTER_INFO";
exports[1202] = "ER_SLAVE_THREAD";
exports[1203] = "ER_TOO_MANY_USER_CONNECTIONS";
exports[1204] = "ER_SET_CONSTANTS_ONLY";
exports[1205] = "ER_LOCK_WAIT_TIMEOUT";
exports[1206] = "ER_LOCK_TABLE_FULL";
exports[1207] = "ER_READ_ONLY_TRANSACTION";
exports[1208] = "ER_DROP_DB_WITH_READ_LOCK";
exports[1209] = "ER_CREATE_DB_WITH_READ_LOCK";
exports[1210] = "ER_WRONG_ARGUMENTS";
exports[1211] = "ER_NO_PERMISSION_TO_CREATE_USER";
exports[1212] = "ER_UNION_TABLES_IN_DIFFERENT_DIR";
exports[1213] = "ER_LOCK_DEADLOCK";
exports[1214] = "ER_TABLE_CANT_HANDLE_FT";
exports[1215] = "ER_CANNOT_ADD_FOREIGN";
exports[1216] = "ER_NO_REFERENCED_ROW";
exports[1217] = "ER_ROW_IS_REFERENCED";
exports[1218] = "ER_CONNECT_TO_MASTER";
exports[1219] = "ER_QUERY_ON_MASTER";
exports[1220] = "ER_ERROR_WHEN_EXECUTING_COMMAND";
exports[1221] = "ER_WRONG_USAGE";
exports[1222] = "ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT";
exports[1223] = "ER_CANT_UPDATE_WITH_READLOCK";
exports[1224] = "ER_MIXING_NOT_ALLOWED";
exports[1225] = "ER_DUP_ARGUMENT";
exports[1226] = "ER_USER_LIMIT_REACHED";
exports[1227] = "ER_SPECIFIC_ACCESS_DENIED_ERROR";
exports[1228] = "ER_LOCAL_VARIABLE";
exports[1229] = "ER_GLOBAL_VARIABLE";
exports[1230] = "ER_NO_DEFAULT";
exports[1231] = "ER_WRONG_VALUE_FOR_VAR";
exports[1232] = "ER_WRONG_TYPE_FOR_VAR";
exports[1233] = "ER_VAR_CANT_BE_READ";
exports[1234] = "ER_CANT_USE_OPTION_HERE";
exports[1235] = "ER_NOT_SUPPORTED_YET";
exports[1236] = "ER_MASTER_FATAL_ERROR_READING_BINLOG";
exports[1237] = "ER_SLAVE_IGNORED_TABLE";
exports[1238] = "ER_INCORRECT_GLOBAL_LOCAL_VAR";
exports[1239] = "ER_WRONG_FK_DEF";
exports[1240] = "ER_KEY_REF_DO_NOT_MATCH_TABLE_REF";
exports[1241] = "ER_OPERAND_COLUMNS";
exports[1242] = "ER_SUBQUERY_NO_1_ROW";
exports[1243] = "ER_UNKNOWN_STMT_HANDLER";
exports[1244] = "ER_CORRUPT_HELP_DB";
exports[1245] = "ER_CYCLIC_REFERENCE";
exports[1246] = "ER_AUTO_CONVERT";
exports[1247] = "ER_ILLEGAL_REFERENCE";
exports[1248] = "ER_DERIVED_MUST_HAVE_ALIAS";
exports[1249] = "ER_SELECT_REDUCED";
exports[1250] = "ER_TABLENAME_NOT_ALLOWED_HERE";
exports[1251] = "ER_NOT_SUPPORTED_AUTH_MODE";
exports[1252] = "ER_SPATIAL_CANT_HAVE_NULL";
exports[1253] = "ER_COLLATION_CHARSET_MISMATCH";
exports[1254] = "ER_SLAVE_WAS_RUNNING";
exports[1255] = "ER_SLAVE_WAS_NOT_RUNNING";
exports[1256] = "ER_TOO_BIG_FOR_UNCOMPRESS";
exports[1257] = "ER_ZLIB_Z_MEM_ERROR";
exports[1258] = "ER_ZLIB_Z_BUF_ERROR";
exports[1259] = "ER_ZLIB_Z_DATA_ERROR";
exports[1260] = "ER_CUT_VALUE_GROUP_CONCAT";
exports[1261] = "ER_WARN_TOO_FEW_RECORDS";
exports[1262] = "ER_WARN_TOO_MANY_RECORDS";
exports[1263] = "ER_WARN_NULL_TO_NOTNULL";
exports[1264] = "ER_WARN_DATA_OUT_OF_RANGE";
exports[1265] = "WARN_DATA_TRUNCATED";
exports[1266] = "ER_WARN_USING_OTHER_HANDLER";
exports[1267] = "ER_CANT_AGGREGATE_2COLLATIONS";
exports[1268] = "ER_DROP_USER";
exports[1269] = "ER_REVOKE_GRANTS";
exports[1270] = "ER_CANT_AGGREGATE_3COLLATIONS";
exports[1271] = "ER_CANT_AGGREGATE_NCOLLATIONS";
exports[1272] = "ER_VARIABLE_IS_NOT_STRUCT";
exports[1273] = "ER_UNKNOWN_COLLATION";
exports[1274] = "ER_SLAVE_IGNORED_SSL_PARAMS";
exports[1275] = "ER_SERVER_IS_IN_SECURE_AUTH_MODE";
exports[1276] = "ER_WARN_FIELD_RESOLVED";
exports[1277] = "ER_BAD_SLAVE_UNTIL_COND";
exports[1278] = "ER_MISSING_SKIP_SLAVE";
exports[1279] = "ER_UNTIL_COND_IGNORED";
exports[1280] = "ER_WRONG_NAME_FOR_INDEX";
exports[1281] = "ER_WRONG_NAME_FOR_CATALOG";
exports[1282] = "ER_WARN_QC_RESIZE";
exports[1283] = "ER_BAD_FT_COLUMN";
exports[1284] = "ER_UNKNOWN_KEY_CACHE";
exports[1285] = "ER_WARN_HOSTNAME_WONT_WORK";
exports[1286] = "ER_UNKNOWN_STORAGE_ENGINE";
exports[1287] = "ER_WARN_DEPRECATED_SYNTAX";
exports[1288] = "ER_NON_UPDATABLE_TABLE";
exports[1289] = "ER_FEATURE_DISABLED";
exports[1290] = "ER_OPTION_PREVENTS_STATEMENT";
exports[1291] = "ER_DUPLICATED_VALUE_IN_TYPE";
exports[1292] = "ER_TRUNCATED_WRONG_VALUE";
exports[1293] = "ER_TOO_MUCH_AUTO_TIMESTAMP_COLS";
exports[1294] = "ER_INVALID_ON_UPDATE";
exports[1295] = "ER_UNSUPPORTED_PS";
exports[1296] = "ER_GET_ERRMSG";
exports[1297] = "ER_GET_TEMPORARY_ERRMSG";
exports[1298] = "ER_UNKNOWN_TIME_ZONE";
exports[1299] = "ER_WARN_INVALID_TIMESTAMP";
exports[1300] = "ER_INVALID_CHARACTER_STRING";
exports[1301] = "ER_WARN_ALLOWED_PACKET_OVERFLOWED";
exports[1302] = "ER_CONFLICTING_DECLARATIONS";
exports[1303] = "ER_SP_NO_RECURSIVE_CREATE";
exports[1304] = "ER_SP_ALREADY_EXISTS";
exports[1305] = "ER_SP_DOES_NOT_EXIST";
exports[1306] = "ER_SP_DROP_FAILED";
exports[1307] = "ER_SP_STORE_FAILED";
exports[1308] = "ER_SP_LILABEL_MISMATCH";
exports[1309] = "ER_SP_LABEL_REDEFINE";
exports[1310] = "ER_SP_LABEL_MISMATCH";
exports[1311] = "ER_SP_UNINIT_VAR";
exports[1312] = "ER_SP_BADSELECT";
exports[1313] = "ER_SP_BADRETURN";
exports[1314] = "ER_SP_BADSTATEMENT";
exports[1315] = "ER_UPDATE_LOG_DEPRECATED_IGNORED";
exports[1316] = "ER_UPDATE_LOG_DEPRECATED_TRANSLATED";
exports[1317] = "ER_QUERY_INTERRUPTED";
exports[1318] = "ER_SP_WRONG_NO_OF_ARGS";
exports[1319] = "ER_SP_COND_MISMATCH";
exports[1320] = "ER_SP_NORETURN";
exports[1321] = "ER_SP_NORETURNEND";
exports[1322] = "ER_SP_BAD_CURSOR_QUERY";
exports[1323] = "ER_SP_BAD_CURSOR_SELECT";
exports[1324] = "ER_SP_CURSOR_MISMATCH";
exports[1325] = "ER_SP_CURSOR_ALREADY_OPEN";
exports[1326] = "ER_SP_CURSOR_NOT_OPEN";
exports[1327] = "ER_SP_UNDECLARED_VAR";
exports[1328] = "ER_SP_WRONG_NO_OF_FETCH_ARGS";
exports[1329] = "ER_SP_FETCH_NO_DATA";
exports[1330] = "ER_SP_DUP_PARAM";
exports[1331] = "ER_SP_DUP_VAR";
exports[1332] = "ER_SP_DUP_COND";
exports[1333] = "ER_SP_DUP_CURS";
exports[1334] = "ER_SP_CANT_ALTER";
exports[1335] = "ER_SP_SUBSELECT_NYI";
exports[1336] = "ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG";
exports[1337] = "ER_SP_VARCOND_AFTER_CURSHNDLR";
exports[1338] = "ER_SP_CURSOR_AFTER_HANDLER";
exports[1339] = "ER_SP_CASE_NOT_FOUND";
exports[1340] = "ER_FPARSER_TOO_BIG_FILE";
exports[1341] = "ER_FPARSER_BAD_HEADER";
exports[1342] = "ER_FPARSER_EOF_IN_COMMENT";
exports[1343] = "ER_FPARSER_ERROR_IN_PARAMETER";
exports[1344] = "ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER";
exports[1345] = "ER_VIEW_NO_EXPLAIN";
exports[1346] = "ER_FRM_UNKNOWN_TYPE";
exports[1347] = "ER_WRONG_OBJECT";
exports[1348] = "ER_NONUPDATEABLE_COLUMN";
exports[1349] = "ER_VIEW_SELECT_DERIVED";
exports[1350] = "ER_VIEW_SELECT_CLAUSE";
exports[1351] = "ER_VIEW_SELECT_VARIABLE";
exports[1352] = "ER_VIEW_SELECT_TMPTABLE";
exports[1353] = "ER_VIEW_WRONG_LIST";
exports[1354] = "ER_WARN_VIEW_MERGE";
exports[1355] = "ER_WARN_VIEW_WITHOUT_KEY";
exports[1356] = "ER_VIEW_INVALID";
exports[1357] = "ER_SP_NO_DROP_SP";
exports[1358] = "ER_SP_GOTO_IN_HNDLR";
exports[1359] = "ER_TRG_ALREADY_EXISTS";
exports[1360] = "ER_TRG_DOES_NOT_EXIST";
exports[1361] = "ER_TRG_ON_VIEW_OR_TEMP_TABLE";
exports[1362] = "ER_TRG_CANT_CHANGE_ROW";
exports[1363] = "ER_TRG_NO_SUCH_ROW_IN_TRG";
exports[1364] = "ER_NO_DEFAULT_FOR_FIELD";
exports[1365] = "ER_DIVISION_BY_ZERO";
exports[1366] = "ER_TRUNCATED_WRONG_VALUE_FOR_FIELD";
exports[1367] = "ER_ILLEGAL_VALUE_FOR_TYPE";
exports[1368] = "ER_VIEW_NONUPD_CHECK";
exports[1369] = "ER_VIEW_CHECK_FAILED";
exports[1370] = "ER_PROCACCESS_DENIED_ERROR";
exports[1371] = "ER_RELAY_LOG_FAIL";
exports[1372] = "ER_PASSWD_LENGTH";
exports[1373] = "ER_UNKNOWN_TARGET_BINLOG";
exports[1374] = "ER_IO_ERR_LOG_INDEX_READ";
exports[1375] = "ER_BINLOG_PURGE_PROHIBITED";
exports[1376] = "ER_FSEEK_FAIL";
exports[1377] = "ER_BINLOG_PURGE_FATAL_ERR";
exports[1378] = "ER_LOG_IN_USE";
exports[1379] = "ER_LOG_PURGE_UNKNOWN_ERR";
exports[1380] = "ER_RELAY_LOG_INIT";
exports[1381] = "ER_NO_BINARY_LOGGING";
exports[1382] = "ER_RESERVED_SYNTAX";
exports[1383] = "ER_WSAS_FAILED";
exports[1384] = "ER_DIFF_GROUPS_PROC";
exports[1385] = "ER_NO_GROUP_FOR_PROC";
exports[1386] = "ER_ORDER_WITH_PROC";
exports[1387] = "ER_LOGGING_PROHIBIT_CHANGING_OF";
exports[1388] = "ER_NO_FILE_MAPPING";
exports[1389] = "ER_WRONG_MAGIC";
exports[1390] = "ER_PS_MANY_PARAM";
exports[1391] = "ER_KEY_PART_0";
exports[1392] = "ER_VIEW_CHECKSUM";
exports[1393] = "ER_VIEW_MULTIUPDATE";
exports[1394] = "ER_VIEW_NO_INSERT_FIELD_LIST";
exports[1395] = "ER_VIEW_DELETE_MERGE_VIEW";
exports[1396] = "ER_CANNOT_USER";
exports[1397] = "ER_XAER_NOTA";
exports[1398] = "ER_XAER_INVAL";
exports[1399] = "ER_XAER_RMFAIL";
exports[1400] = "ER_XAER_OUTSIDE";
exports[1401] = "ER_XAER_RMERR";
exports[1402] = "ER_XA_RBROLLBACK";
exports[1403] = "ER_NONEXISTING_PROC_GRANT";
exports[1404] = "ER_PROC_AUTO_GRANT_FAIL";
exports[1405] = "ER_PROC_AUTO_REVOKE_FAIL";
exports[1406] = "ER_DATA_TOO_LONG";
exports[1407] = "ER_SP_BAD_SQLSTATE";
exports[1408] = "ER_STARTUP";
exports[1409] = "ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR";
exports[1410] = "ER_CANT_CREATE_USER_WITH_GRANT";
exports[1411] = "ER_WRONG_VALUE_FOR_TYPE";
exports[1412] = "ER_TABLE_DEF_CHANGED";
exports[1413] = "ER_SP_DUP_HANDLER";
exports[1414] = "ER_SP_NOT_VAR_ARG";
exports[1415] = "ER_SP_NO_RETSET";
exports[1416] = "ER_CANT_CREATE_GEOMETRY_OBJECT";
exports[1417] = "ER_FAILED_ROUTINE_BREAK_BINLOG";
exports[1418] = "ER_BINLOG_UNSAFE_ROUTINE";
exports[1419] = "ER_BINLOG_CREATE_ROUTINE_NEED_SUPER";
exports[1420] = "ER_EXEC_STMT_WITH_OPEN_CURSOR";
exports[1421] = "ER_STMT_HAS_NO_OPEN_CURSOR";
exports[1422] = "ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG";
exports[1423] = "ER_NO_DEFAULT_FOR_VIEW_FIELD";
exports[1424] = "ER_SP_NO_RECURSION";
exports[1425] = "ER_TOO_BIG_SCALE";
exports[1426] = "ER_TOO_BIG_PRECISION";
exports[1427] = "ER_M_BIGGER_THAN_D";
exports[1428] = "ER_WRONG_LOCK_OF_SYSTEM_TABLE";
exports[1429] = "ER_CONNECT_TO_FOREIGN_DATA_SOURCE";
exports[1430] = "ER_QUERY_ON_FOREIGN_DATA_SOURCE";
exports[1431] = "ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST";
exports[1432] = "ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE";
exports[1433] = "ER_FOREIGN_DATA_STRING_INVALID";
exports[1434] = "ER_CANT_CREATE_FEDERATED_TABLE";
exports[1435] = "ER_TRG_IN_WRONG_SCHEMA";
exports[1436] = "ER_STACK_OVERRUN_NEED_MORE";
exports[1437] = "ER_TOO_LONG_BODY";
exports[1438] = "ER_WARN_CANT_DROP_DEFAULT_KEYCACHE";
exports[1439] = "ER_TOO_BIG_DISPLAYWIDTH";
exports[1440] = "ER_XAER_DUPID";
exports[1441] = "ER_DATETIME_FUNCTION_OVERFLOW";
exports[1442] = "ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG";
exports[1443] = "ER_VIEW_PREVENT_UPDATE";
exports[1444] = "ER_PS_NO_RECURSION";
exports[1445] = "ER_SP_CANT_SET_AUTOCOMMIT";
exports[1446] = "ER_MALFORMED_DEFINER";
exports[1447] = "ER_VIEW_FRM_NO_USER";
exports[1448] = "ER_VIEW_OTHER_USER";
exports[1449] = "ER_NO_SUCH_USER";
exports[1450] = "ER_FORBID_SCHEMA_CHANGE";
exports[1451] = "ER_ROW_IS_REFERENCED_2";
exports[1452] = "ER_NO_REFERENCED_ROW_2";
exports[1453] = "ER_SP_BAD_VAR_SHADOW";
exports[1454] = "ER_TRG_NO_DEFINER";
exports[1455] = "ER_OLD_FILE_FORMAT";
exports[1456] = "ER_SP_RECURSION_LIMIT";
exports[1457] = "ER_SP_PROC_TABLE_CORRUPT";
exports[1458] = "ER_SP_WRONG_NAME";
exports[1459] = "ER_TABLE_NEEDS_UPGRADE";
exports[1460] = "ER_SP_NO_AGGREGATE";
exports[1461] = "ER_MAX_PREPARED_STMT_COUNT_REACHED";
exports[1462] = "ER_VIEW_RECURSIVE";
exports[1463] = "ER_NON_GROUPING_FIELD_USED";
exports[1464] = "ER_TABLE_CANT_HANDLE_SPKEYS";
exports[1465] = "ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA";
exports[1466] = "ER_REMOVED_SPACES";
exports[1467] = "ER_AUTOINC_READ_FAILED";
exports[1468] = "ER_USERNAME";
exports[1469] = "ER_HOSTNAME";
exports[1470] = "ER_WRONG_STRING_LENGTH";
exports[1471] = "ER_NON_INSERTABLE_TABLE";
exports[1472] = "ER_ADMIN_WRONG_MRG_TABLE";
exports[1473] = "ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT";
exports[1474] = "ER_NAME_BECOMES_EMPTY";
exports[1475] = "ER_AMBIGUOUS_FIELD_TERM";
exports[1476] = "ER_FOREIGN_SERVER_EXISTS";
exports[1477] = "ER_FOREIGN_SERVER_DOESNT_EXIST";
exports[1478] = "ER_ILLEGAL_HA_CREATE_OPTION";
exports[1479] = "ER_PARTITION_REQUIRES_VALUES_ERROR";
exports[1480] = "ER_PARTITION_WRONG_VALUES_ERROR";
exports[1481] = "ER_PARTITION_MAXVALUE_ERROR";
exports[1482] = "ER_PARTITION_SUBPARTITION_ERROR";
exports[1483] = "ER_PARTITION_SUBPART_MIX_ERROR";
exports[1484] = "ER_PARTITION_WRONG_NO_PART_ERROR";
exports[1485] = "ER_PARTITION_WRONG_NO_SUBPART_ERROR";
exports[1486] = "ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR";
exports[1487] = "ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR";
exports[1488] = "ER_FIELD_NOT_FOUND_PART_ERROR";
exports[1489] = "ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR";
exports[1490] = "ER_INCONSISTENT_PARTITION_INFO_ERROR";
exports[1491] = "ER_PARTITION_FUNC_NOT_ALLOWED_ERROR";
exports[1492] = "ER_PARTITIONS_MUST_BE_DEFINED_ERROR";
exports[1493] = "ER_RANGE_NOT_INCREASING_ERROR";
exports[1494] = "ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR";
exports[1495] = "ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR";
exports[1496] = "ER_PARTITION_ENTRY_ERROR";
exports[1497] = "ER_MIX_HANDLER_ERROR";
exports[1498] = "ER_PARTITION_NOT_DEFINED_ERROR";
exports[1499] = "ER_TOO_MANY_PARTITIONS_ERROR";
exports[1500] = "ER_SUBPARTITION_ERROR";
exports[1501] = "ER_CANT_CREATE_HANDLER_FILE";
exports[1502] = "ER_BLOB_FIELD_IN_PART_FUNC_ERROR";
exports[1503] = "ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF";
exports[1504] = "ER_NO_PARTS_ERROR";
exports[1505] = "ER_PARTITION_MGMT_ON_NONPARTITIONED";
exports[1506] = "ER_FOREIGN_KEY_ON_PARTITIONED";
exports[1507] = "ER_DROP_PARTITION_NON_EXISTENT";
exports[1508] = "ER_DROP_LAST_PARTITION";
exports[1509] = "ER_COALESCE_ONLY_ON_HASH_PARTITION";
exports[1510] = "ER_REORG_HASH_ONLY_ON_SAME_NO";
exports[1511] = "ER_REORG_NO_PARAM_ERROR";
exports[1512] = "ER_ONLY_ON_RANGE_LIST_PARTITION";
exports[1513] = "ER_ADD_PARTITION_SUBPART_ERROR";
exports[1514] = "ER_ADD_PARTITION_NO_NEW_PARTITION";
exports[1515] = "ER_COALESCE_PARTITION_NO_PARTITION";
exports[1516] = "ER_REORG_PARTITION_NOT_EXIST";
exports[1517] = "ER_SAME_NAME_PARTITION";
exports[1518] = "ER_NO_BINLOG_ERROR";
exports[1519] = "ER_CONSECUTIVE_REORG_PARTITIONS";
exports[1520] = "ER_REORG_OUTSIDE_RANGE";
exports[1521] = "ER_PARTITION_FUNCTION_FAILURE";
exports[1522] = "ER_PART_STATE_ERROR";
exports[1523] = "ER_LIMITED_PART_RANGE";
exports[1524] = "ER_PLUGIN_IS_NOT_LOADED";
exports[1525] = "ER_WRONG_VALUE";
exports[1526] = "ER_NO_PARTITION_FOR_GIVEN_VALUE";
exports[1527] = "ER_FILEGROUP_OPTION_ONLY_ONCE";
exports[1528] = "ER_CREATE_FILEGROUP_FAILED";
exports[1529] = "ER_DROP_FILEGROUP_FAILED";
exports[1530] = "ER_TABLESPACE_AUTO_EXTEND_ERROR";
exports[1531] = "ER_WRONG_SIZE_NUMBER";
exports[1532] = "ER_SIZE_OVERFLOW_ERROR";
exports[1533] = "ER_ALTER_FILEGROUP_FAILED";
exports[1534] = "ER_BINLOG_ROW_LOGGING_FAILED";
exports[1535] = "ER_BINLOG_ROW_WRONG_TABLE_DEF";
exports[1536] = "ER_BINLOG_ROW_RBR_TO_SBR";
exports[1537] = "ER_EVENT_ALREADY_EXISTS";
exports[1538] = "ER_EVENT_STORE_FAILED";
exports[1539] = "ER_EVENT_DOES_NOT_EXIST";
exports[1540] = "ER_EVENT_CANT_ALTER";
exports[1541] = "ER_EVENT_DROP_FAILED";
exports[1542] = "ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG";
exports[1543] = "ER_EVENT_ENDS_BEFORE_STARTS";
exports[1544] = "ER_EVENT_EXEC_TIME_IN_THE_PAST";
exports[1545] = "ER_EVENT_OPEN_TABLE_FAILED";
exports[1546] = "ER_EVENT_NEITHER_M_EXPR_NOR_M_AT";
exports[1547] = "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED";
exports[1548] = "ER_CANNOT_LOAD_FROM_TABLE";
exports[1549] = "ER_EVENT_CANNOT_DELETE";
exports[1550] = "ER_EVENT_COMPILE_ERROR";
exports[1551] = "ER_EVENT_SAME_NAME";
exports[1552] = "ER_EVENT_DATA_TOO_LONG";
exports[1553] = "ER_DROP_INDEX_FK";
exports[1554] = "ER_WARN_DEPRECATED_SYNTAX_WITH_VER";
exports[1555] = "ER_CANT_WRITE_LOCK_LOG_TABLE";
exports[1556] = "ER_CANT_LOCK_LOG_TABLE";
exports[1557] = "ER_FOREIGN_DUPLICATE_KEY";
exports[1558] = "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE";
exports[1559] = "ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR";
exports[1560] = "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT";
exports[1561] = "ER_NDB_CANT_SWITCH_BINLOG_FORMAT";
exports[1562] = "ER_PARTITION_NO_TEMPORARY";
exports[1563] = "ER_PARTITION_CONST_DOMAIN_ERROR";
exports[1564] = "ER_PARTITION_FUNCTION_IS_NOT_ALLOWED";
exports[1565] = "ER_DDL_LOG_ERROR";
exports[1566] = "ER_NULL_IN_VALUES_LESS_THAN";
exports[1567] = "ER_WRONG_PARTITION_NAME";
exports[1568] = "ER_CANT_CHANGE_TX_CHARACTERISTICS";
exports[1569] = "ER_DUP_ENTRY_AUTOINCREMENT_CASE";
exports[1570] = "ER_EVENT_MODIFY_QUEUE_ERROR";
exports[1571] = "ER_EVENT_SET_VAR_ERROR";
exports[1572] = "ER_PARTITION_MERGE_ERROR";
exports[1573] = "ER_CANT_ACTIVATE_LOG";
exports[1574] = "ER_RBR_NOT_AVAILABLE";
exports[1575] = "ER_BASE64_DECODE_ERROR";
exports[1576] = "ER_EVENT_RECURSION_FORBIDDEN";
exports[1577] = "ER_EVENTS_DB_ERROR";
exports[1578] = "ER_ONLY_INTEGERS_ALLOWED";
exports[1579] = "ER_UNSUPORTED_LOG_ENGINE";
exports[1580] = "ER_BAD_LOG_STATEMENT";
exports[1581] = "ER_CANT_RENAME_LOG_TABLE";
exports[1582] = "ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT";
exports[1583] = "ER_WRONG_PARAMETERS_TO_NATIVE_FCT";
exports[1584] = "ER_WRONG_PARAMETERS_TO_STORED_FCT";
exports[1585] = "ER_NATIVE_FCT_NAME_COLLISION";
exports[1586] = "ER_DUP_ENTRY_WITH_KEY_NAME";
exports[1587] = "ER_BINLOG_PURGE_EMFILE";
exports[1588] = "ER_EVENT_CANNOT_CREATE_IN_THE_PAST";
exports[1589] = "ER_EVENT_CANNOT_ALTER_IN_THE_PAST";
exports[1590] = "ER_SLAVE_INCIDENT";
exports[1591] = "ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT";
exports[1592] = "ER_BINLOG_UNSAFE_STATEMENT";
exports[1593] = "ER_SLAVE_FATAL_ERROR";
exports[1594] = "ER_SLAVE_RELAY_LOG_READ_FAILURE";
exports[1595] = "ER_SLAVE_RELAY_LOG_WRITE_FAILURE";
exports[1596] = "ER_SLAVE_CREATE_EVENT_FAILURE";
exports[1597] = "ER_SLAVE_MASTER_COM_FAILURE";
exports[1598] = "ER_BINLOG_LOGGING_IMPOSSIBLE";
exports[1599] = "ER_VIEW_NO_CREATION_CTX";
exports[1600] = "ER_VIEW_INVALID_CREATION_CTX";
exports[1601] = "ER_SR_INVALID_CREATION_CTX";
exports[1602] = "ER_TRG_CORRUPTED_FILE";
exports[1603] = "ER_TRG_NO_CREATION_CTX";
exports[1604] = "ER_TRG_INVALID_CREATION_CTX";
exports[1605] = "ER_EVENT_INVALID_CREATION_CTX";
exports[1606] = "ER_TRG_CANT_OPEN_TABLE";
exports[1607] = "ER_CANT_CREATE_SROUTINE";
exports[1608] = "ER_NEVER_USED";
exports[1609] = "ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT";
exports[1610] = "ER_SLAVE_CORRUPT_EVENT";
exports[1611] = "ER_LOAD_DATA_INVALID_COLUMN";
exports[1612] = "ER_LOG_PURGE_NO_FILE";
exports[1613] = "ER_XA_RBTIMEOUT";
exports[1614] = "ER_XA_RBDEADLOCK";
exports[1615] = "ER_NEED_REPREPARE";
exports[1616] = "ER_DELAYED_NOT_SUPPORTED";
exports[1617] = "WARN_NO_MASTER_INFO";
exports[1618] = "WARN_OPTION_IGNORED";
exports[1619] = "ER_PLUGIN_DELETE_BUILTIN";
exports[1620] = "WARN_PLUGIN_BUSY";
exports[1621] = "ER_VARIABLE_IS_READONLY";
exports[1622] = "ER_WARN_ENGINE_TRANSACTION_ROLLBACK";
exports[1623] = "ER_SLAVE_HEARTBEAT_FAILURE";
exports[1624] = "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE";
exports[1625] = "ER_NDB_REPLICATION_SCHEMA_ERROR";
exports[1626] = "ER_CONFLICT_FN_PARSE_ERROR";
exports[1627] = "ER_EXCEPTIONS_WRITE_ERROR";
exports[1628] = "ER_TOO_LONG_TABLE_COMMENT";
exports[1629] = "ER_TOO_LONG_FIELD_COMMENT";
exports[1630] = "ER_FUNC_INEXISTENT_NAME_COLLISION";
exports[1631] = "ER_DATABASE_NAME";
exports[1632] = "ER_TABLE_NAME";
exports[1633] = "ER_PARTITION_NAME";
exports[1634] = "ER_SUBPARTITION_NAME";
exports[1635] = "ER_TEMPORARY_NAME";
exports[1636] = "ER_RENAMED_NAME";
exports[1637] = "ER_TOO_MANY_CONCURRENT_TRXS";
exports[1638] = "WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED";
exports[1639] = "ER_DEBUG_SYNC_TIMEOUT";
exports[1640] = "ER_DEBUG_SYNC_HIT_LIMIT";
exports[1641] = "ER_DUP_SIGNAL_SET";
exports[1642] = "ER_SIGNAL_WARN";
exports[1643] = "ER_SIGNAL_NOT_FOUND";
exports[1644] = "ER_SIGNAL_EXCEPTION";
exports[1645] = "ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER";
exports[1646] = "ER_SIGNAL_BAD_CONDITION_TYPE";
exports[1647] = "WARN_COND_ITEM_TRUNCATED";
exports[1648] = "ER_COND_ITEM_TOO_LONG";
exports[1649] = "ER_UNKNOWN_LOCALE";
exports[1650] = "ER_SLAVE_IGNORE_SERVER_IDS";
exports[1651] = "ER_QUERY_CACHE_DISABLED";
exports[1652] = "ER_SAME_NAME_PARTITION_FIELD";
exports[1653] = "ER_PARTITION_COLUMN_LIST_ERROR";
exports[1654] = "ER_WRONG_TYPE_COLUMN_VALUE_ERROR";
exports[1655] = "ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR";
exports[1656] = "ER_MAXVALUE_IN_VALUES_IN";
exports[1657] = "ER_TOO_MANY_VALUES_ERROR";
exports[1658] = "ER_ROW_SINGLE_PARTITION_FIELD_ERROR";
exports[1659] = "ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD";
exports[1660] = "ER_PARTITION_FIELDS_TOO_LONG";
exports[1661] = "ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE";
exports[1662] = "ER_BINLOG_ROW_MODE_AND_STMT_ENGINE";
exports[1663] = "ER_BINLOG_UNSAFE_AND_STMT_ENGINE";
exports[1664] = "ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE";
exports[1665] = "ER_BINLOG_STMT_MODE_AND_ROW_ENGINE";
exports[1666] = "ER_BINLOG_ROW_INJECTION_AND_STMT_MODE";
exports[1667] = "ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE";
exports[1668] = "ER_BINLOG_UNSAFE_LIMIT";
exports[1669] = "ER_BINLOG_UNSAFE_INSERT_DELAYED";
exports[1670] = "ER_BINLOG_UNSAFE_SYSTEM_TABLE";
exports[1671] = "ER_BINLOG_UNSAFE_AUTOINC_COLUMNS";
exports[1672] = "ER_BINLOG_UNSAFE_UDF";
exports[1673] = "ER_BINLOG_UNSAFE_SYSTEM_VARIABLE";
exports[1674] = "ER_BINLOG_UNSAFE_SYSTEM_FUNCTION";
exports[1675] = "ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS";
exports[1676] = "ER_MESSAGE_AND_STATEMENT";
exports[1677] = "ER_SLAVE_CONVERSION_FAILED";
exports[1678] = "ER_SLAVE_CANT_CREATE_CONVERSION";
exports[1679] = "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT";
exports[1680] = "ER_PATH_LENGTH";
exports[1681] = "ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT";
exports[1682] = "ER_WRONG_NATIVE_TABLE_STRUCTURE";
exports[1683] = "ER_WRONG_PERFSCHEMA_USAGE";
exports[1684] = "ER_WARN_I_S_SKIPPED_TABLE";
exports[1685] = "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT";
exports[1686] = "ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT";
exports[1687] = "ER_SPATIAL_MUST_HAVE_GEOM_COL";
exports[1688] = "ER_TOO_LONG_INDEX_COMMENT";
exports[1689] = "ER_LOCK_ABORTED";
exports[1690] = "ER_DATA_OUT_OF_RANGE";
exports[1691] = "ER_WRONG_SPVAR_TYPE_IN_LIMIT";
exports[1692] = "ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE";
exports[1693] = "ER_BINLOG_UNSAFE_MIXED_STATEMENT";
exports[1694] = "ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN";
exports[1695] = "ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN";
exports[1696] = "ER_FAILED_READ_FROM_PAR_FILE";
exports[1697] = "ER_VALUES_IS_NOT_INT_TYPE_ERROR";
exports[1698] = "ER_ACCESS_DENIED_NO_PASSWORD_ERROR";
exports[1699] = "ER_SET_PASSWORD_AUTH_PLUGIN";
exports[1700] = "ER_GRANT_PLUGIN_USER_EXISTS";
exports[1701] = "ER_TRUNCATE_ILLEGAL_FK";
exports[1702] = "ER_PLUGIN_IS_PERMANENT";
exports[1703] = "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN";
exports[1704] = "ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX";
exports[1705] = "ER_STMT_CACHE_FULL";
exports[1706] = "ER_MULTI_UPDATE_KEY_CONFLICT";
exports[1707] = "ER_TABLE_NEEDS_REBUILD";
exports[1708] = "WARN_OPTION_BELOW_LIMIT";
exports[1709] = "ER_INDEX_COLUMN_TOO_LONG";
exports[1710] = "ER_ERROR_IN_TRIGGER_BODY";
exports[1711] = "ER_ERROR_IN_UNKNOWN_TRIGGER_BODY";
exports[1712] = "ER_INDEX_CORRUPT";
exports[1713] = "ER_UNDO_RECORD_TOO_BIG";
exports[1714] = "ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT";
exports[1715] = "ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE";
exports[1716] = "ER_BINLOG_UNSAFE_REPLACE_SELECT";
exports[1717] = "ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT";
exports[1718] = "ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT";
exports[1719] = "ER_BINLOG_UNSAFE_UPDATE_IGNORE";
exports[1720] = "ER_PLUGIN_NO_UNINSTALL";
exports[1721] = "ER_PLUGIN_NO_INSTALL";
exports[1722] = "ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT";
exports[1723] = "ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC";
exports[1724] = "ER_BINLOG_UNSAFE_INSERT_TWO_KEYS";
exports[1725] = "ER_TABLE_IN_FK_CHECK";
exports[1726] = "ER_UNSUPPORTED_ENGINE";
exports[1727] = "ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST";
exports[1728] = "ER_CANNOT_LOAD_FROM_TABLE_V2";
exports[1729] = "ER_MASTER_DELAY_VALUE_OUT_OF_RANGE";
exports[1730] = "ER_ONLY_FD_AND_RBR_EVENTS_ALLOWED_IN_BINLOG_STATEMENT";
exports[1731] = "ER_PARTITION_EXCHANGE_DIFFERENT_OPTION";
exports[1732] = "ER_PARTITION_EXCHANGE_PART_TABLE";
exports[1733] = "ER_PARTITION_EXCHANGE_TEMP_TABLE";
exports[1734] = "ER_PARTITION_INSTEAD_OF_SUBPARTITION";
exports[1735] = "ER_UNKNOWN_PARTITION";
exports[1736] = "ER_TABLES_DIFFERENT_METADATA";
exports[1737] = "ER_ROW_DOES_NOT_MATCH_PARTITION";
exports[1738] = "ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX";
exports[1739] = "ER_WARN_INDEX_NOT_APPLICABLE";
exports[1740] = "ER_PARTITION_EXCHANGE_FOREIGN_KEY";
exports[1741] = "ER_NO_SUCH_KEY_VALUE";
exports[1742] = "ER_RPL_INFO_DATA_TOO_LONG";
exports[1743] = "ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE";
exports[1744] = "ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE";
exports[1745] = "ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX";
exports[1746] = "ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT";
exports[1747] = "ER_PARTITION_CLAUSE_ON_NONPARTITIONED";
exports[1748] = "ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET";
exports[1749] = "ER_NO_SUCH_PARTITION";
exports[1750] = "ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE";
exports[1751] = "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE";
exports[1752] = "ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE";
exports[1753] = "ER_MTS_FEATURE_IS_NOT_SUPPORTED";
exports[1754] = "ER_MTS_UPDATED_DBS_GREATER_MAX";
exports[1755] = "ER_MTS_CANT_PARALLEL";
exports[1756] = "ER_MTS_INCONSISTENT_DATA";
exports[1757] = "ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING";
exports[1758] = "ER_DA_INVALID_CONDITION_NUMBER";
exports[1759] = "ER_INSECURE_PLAIN_TEXT";
exports[1760] = "ER_INSECURE_CHANGE_MASTER";
exports[1761] = "ER_FOREIGN_DUPLICATE_KEY_WITH_CHILD_INFO";
exports[1762] = "ER_FOREIGN_DUPLICATE_KEY_WITHOUT_CHILD_INFO";
exports[1763] = "ER_SQLTHREAD_WITH_SECURE_SLAVE";
exports[1764] = "ER_TABLE_HAS_NO_FT";
exports[1765] = "ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER";
exports[1766] = "ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION";
exports[1767] = "ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST";
exports[1768] = "ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION";
exports[1769] = "ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION";
exports[1770] = "ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL";
exports[1771] = "ER_SKIPPING_LOGGED_TRANSACTION";
exports[1772] = "ER_MALFORMED_GTID_SET_SPECIFICATION";
exports[1773] = "ER_MALFORMED_GTID_SET_ENCODING";
exports[1774] = "ER_MALFORMED_GTID_SPECIFICATION";
exports[1775] = "ER_GNO_EXHAUSTED";
exports[1776] = "ER_BAD_SLAVE_AUTO_POSITION";
exports[1777] = "ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF";
exports[1778] = "ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET";
exports[1779] = "ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON";
exports[1780] = "ER_GTID_MODE_REQUIRES_BINLOG";
exports[1781] = "ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF";
exports[1782] = "ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON";
exports[1783] = "ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF";
exports[1784] = "ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF";
exports[1785] = "ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE";
exports[1786] = "ER_GTID_UNSAFE_CREATE_SELECT";
exports[1787] = "ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION";
exports[1788] = "ER_GTID_MODE_CAN_ONLY_CHANGE_ONE_STEP_AT_A_TIME";
exports[1789] = "ER_MASTER_HAS_PURGED_REQUIRED_GTIDS";
exports[1790] = "ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID";
exports[1791] = "ER_UNKNOWN_EXPLAIN_FORMAT";
exports[1792] = "ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION";
exports[1793] = "ER_TOO_LONG_TABLE_PARTITION_COMMENT";
exports[1794] = "ER_SLAVE_CONFIGURATION";
exports[1795] = "ER_INNODB_FT_LIMIT";
exports[1796] = "ER_INNODB_NO_FT_TEMP_TABLE";
exports[1797] = "ER_INNODB_FT_WRONG_DOCID_COLUMN";
exports[1798] = "ER_INNODB_FT_WRONG_DOCID_INDEX";
exports[1799] = "ER_INNODB_ONLINE_LOG_TOO_BIG";
exports[1800] = "ER_UNKNOWN_ALTER_ALGORITHM";
exports[1801] = "ER_UNKNOWN_ALTER_LOCK";
exports[1802] = "ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS";
exports[1803] = "ER_MTS_RECOVERY_FAILURE";
exports[1804] = "ER_MTS_RESET_WORKERS";
exports[1805] = "ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2";
exports[1806] = "ER_SLAVE_SILENT_RETRY_TRANSACTION";
exports[1807] = "ER_DISCARD_FK_CHECKS_RUNNING";
exports[1808] = "ER_TABLE_SCHEMA_MISMATCH";
exports[1809] = "ER_TABLE_IN_SYSTEM_TABLESPACE";
exports[1810] = "ER_IO_READ_ERROR";
exports[1811] = "ER_IO_WRITE_ERROR";
exports[1812] = "ER_TABLESPACE_MISSING";
exports[1813] = "ER_TABLESPACE_EXISTS";
exports[1814] = "ER_TABLESPACE_DISCARDED";
exports[1815] = "ER_INTERNAL_ERROR";
exports[1816] = "ER_INNODB_IMPORT_ERROR";
exports[1817] = "ER_INNODB_INDEX_CORRUPT";
exports[1818] = "ER_INVALID_YEAR_COLUMN_LENGTH";
exports[1819] = "ER_NOT_VALID_PASSWORD";
exports[1820] = "ER_MUST_CHANGE_PASSWORD";
exports[1821] = "ER_FK_NO_INDEX_CHILD";
exports[1822] = "ER_FK_NO_INDEX_PARENT";
exports[1823] = "ER_FK_FAIL_ADD_SYSTEM";
exports[1824] = "ER_FK_CANNOT_OPEN_PARENT";
exports[1825] = "ER_FK_INCORRECT_OPTION";
exports[1826] = "ER_FK_DUP_NAME";
exports[1827] = "ER_PASSWORD_FORMAT";
exports[1828] = "ER_FK_COLUMN_CANNOT_DROP";
exports[1829] = "ER_FK_COLUMN_CANNOT_DROP_CHILD";
exports[1830] = "ER_FK_COLUMN_NOT_NULL";
exports[1831] = "ER_DUP_INDEX";
exports[1832] = "ER_FK_COLUMN_CANNOT_CHANGE";
exports[1833] = "ER_FK_COLUMN_CANNOT_CHANGE_CHILD";
exports[1834] = "ER_FK_CANNOT_DELETE_PARENT";
exports[1835] = "ER_MALFORMED_PACKET";
exports[1836] = "ER_READ_ONLY_MODE";
exports[1837] = "ER_GTID_NEXT_TYPE_UNDEFINED_GROUP";
exports[1838] = "ER_VARIABLE_NOT_SETTABLE_IN_SP";
exports[1839] = "ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF";
exports[1840] = "ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY";
exports[1841] = "ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY";
exports[1842] = "ER_GTID_PURGED_WAS_CHANGED";
exports[1843] = "ER_GTID_EXECUTED_WAS_CHANGED";
exports[1844] = "ER_BINLOG_STMT_MODE_AND_NO_REPL_TABLES";
exports[1845] = "ER_ALTER_OPERATION_NOT_SUPPORTED";
exports[1846] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON";
exports[1847] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COPY";
exports[1848] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_PARTITION";
exports[1849] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME";
exports[1850] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE";
exports[1851] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK";
exports[1852] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_IGNORE";
exports[1853] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK";
exports[1854] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC";
exports[1855] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS";
exports[1856] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_CHANGE_FTS";
exports[1857] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FTS";
exports[1858] = "ER_SQL_SLAVE_SKIP_COUNTER_NOT_SETTABLE_IN_GTID_MODE";
exports[1859] = "ER_DUP_UNKNOWN_IN_INDEX";
exports[1860] = "ER_IDENT_CAUSES_TOO_LONG_PATH";
exports[1861] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL";
exports[1862] = "ER_MUST_CHANGE_PASSWORD_LOGIN";
exports[1863] = "ER_ROW_IN_WRONG_PARTITION";
exports[1864] = "ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX";
exports[1865] = "ER_INNODB_NO_FT_USES_PARSER";
exports[1866] = "ER_BINLOG_LOGICAL_CORRUPTION";
exports[1867] = "ER_WARN_PURGE_LOG_IN_USE";
exports[1868] = "ER_WARN_PURGE_LOG_IS_ACTIVE";
exports[1869] = "ER_AUTO_INCREMENT_CONFLICT";
exports[1870] = "WARN_ON_BLOCKHOLE_IN_RBR";
exports[1871] = "ER_SLAVE_MI_INIT_REPOSITORY";
exports[1872] = "ER_SLAVE_RLI_INIT_REPOSITORY";
exports[1873] = "ER_ACCESS_DENIED_CHANGE_USER_ERROR";
exports[1874] = "ER_INNODB_READ_ONLY";
exports[1875] = "ER_STOP_SLAVE_SQL_THREAD_TIMEOUT";
exports[1876] = "ER_STOP_SLAVE_IO_THREAD_TIMEOUT";
exports[1877] = "ER_TABLE_CORRUPT";
exports[1878] = "ER_TEMP_FILE_WRITE_FAILURE";
exports[1879] = "ER_INNODB_FT_AUX_NOT_HEX_ID";
exports[1880] = "ER_OLD_TEMPORALS_UPGRADED";
exports[1881] = "ER_INNODB_FORCED_RECOVERY";
exports[1882] = "ER_AES_INVALID_IV";
exports[1883] = "ER_PLUGIN_CANNOT_BE_UNINSTALLED";
exports[1884] = "ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_GTID_GROUP";
exports[1885] = "ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER";
exports[1886] = "ER_MISSING_KEY";
exports[1887] = "WARN_NAMED_PIPE_ACCESS_EVERYONE";
exports[1888] = "ER_FOUND_MISSING_GTIDS";
exports[3000] = "ER_FILE_CORRUPT";
exports[3001] = "ER_ERROR_ON_MASTER";
exports[3002] = "ER_INCONSISTENT_ERROR";
exports[3003] = "ER_STORAGE_ENGINE_NOT_LOADED";
exports[3004] = "ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER";
exports[3005] = "ER_WARN_LEGACY_SYNTAX_CONVERTED";
exports[3006] = "ER_BINLOG_UNSAFE_FULLTEXT_PLUGIN";
exports[3007] = "ER_CANNOT_DISCARD_TEMPORARY_TABLE";
exports[3008] = "ER_FK_DEPTH_EXCEEDED";
exports[3009] = "ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2";
exports[3010] = "ER_WARN_TRIGGER_DOESNT_HAVE_CREATED";
exports[3011] = "ER_REFERENCED_TRG_DOES_NOT_EXIST";
exports[3012] = "ER_EXPLAIN_NOT_SUPPORTED";
exports[3013] = "ER_INVALID_FIELD_SIZE";
exports[3014] = "ER_MISSING_HA_CREATE_OPTION";
exports[3015] = "ER_ENGINE_OUT_OF_MEMORY";
exports[3016] = "ER_PASSWORD_EXPIRE_ANONYMOUS_USER";
exports[3017] = "ER_SLAVE_SQL_THREAD_MUST_STOP";
exports[3018] = "ER_NO_FT_MATERIALIZED_SUBQUERY";
exports[3019] = "ER_INNODB_UNDO_LOG_FULL";
exports[3020] = "ER_INVALID_ARGUMENT_FOR_LOGARITHM";
exports[3021] = "ER_SLAVE_CHANNEL_IO_THREAD_MUST_STOP";
exports[3022] = "ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO";
exports[3023] = "ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS";
exports[3024] = "ER_QUERY_TIMEOUT";
exports[3025] = "ER_NON_RO_SELECT_DISABLE_TIMER";
exports[3026] = "ER_DUP_LIST_ENTRY";
exports[3027] = "ER_SQL_MODE_NO_EFFECT";
exports[3028] = "ER_AGGREGATE_ORDER_FOR_UNION";
exports[3029] = "ER_AGGREGATE_ORDER_NON_AGG_QUERY";
exports[3030] = "ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR";
exports[3031] = "ER_DONT_SUPPORT_SLAVE_PRESERVE_COMMIT_ORDER";
exports[3032] = "ER_SERVER_OFFLINE_MODE";
exports[3033] = "ER_GIS_DIFFERENT_SRIDS";
exports[3034] = "ER_GIS_UNSUPPORTED_ARGUMENT";
exports[3035] = "ER_GIS_UNKNOWN_ERROR";
exports[3036] = "ER_GIS_UNKNOWN_EXCEPTION";
exports[3037] = "ER_GIS_INVALID_DATA";
exports[3038] = "ER_BOOST_GEOMETRY_EMPTY_INPUT_EXCEPTION";
exports[3039] = "ER_BOOST_GEOMETRY_CENTROID_EXCEPTION";
exports[3040] = "ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION";
exports[3041] = "ER_BOOST_GEOMETRY_TURN_INFO_EXCEPTION";
exports[3042] = "ER_BOOST_GEOMETRY_SELF_INTERSECTION_POINT_EXCEPTION";
exports[3043] = "ER_BOOST_GEOMETRY_UNKNOWN_EXCEPTION";
exports[3044] = "ER_STD_BAD_ALLOC_ERROR";
exports[3045] = "ER_STD_DOMAIN_ERROR";
exports[3046] = "ER_STD_LENGTH_ERROR";
exports[3047] = "ER_STD_INVALID_ARGUMENT";
exports[3048] = "ER_STD_OUT_OF_RANGE_ERROR";
exports[3049] = "ER_STD_OVERFLOW_ERROR";
exports[3050] = "ER_STD_RANGE_ERROR";
exports[3051] = "ER_STD_UNDERFLOW_ERROR";
exports[3052] = "ER_STD_LOGIC_ERROR";
exports[3053] = "ER_STD_RUNTIME_ERROR";
exports[3054] = "ER_STD_UNKNOWN_EXCEPTION";
exports[3055] = "ER_GIS_DATA_WRONG_ENDIANESS";
exports[3056] = "ER_CHANGE_MASTER_PASSWORD_LENGTH";
exports[3057] = "ER_USER_LOCK_WRONG_NAME";
exports[3058] = "ER_USER_LOCK_DEADLOCK";
exports[3059] = "ER_REPLACE_INACCESSIBLE_ROWS";
exports[3060] = "ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS";
exports[3061] = "ER_ILLEGAL_USER_VAR";
exports[3062] = "ER_GTID_MODE_OFF";
exports[3063] = "ER_UNSUPPORTED_BY_REPLICATION_THREAD";
exports[3064] = "ER_INCORRECT_TYPE";
exports[3065] = "ER_FIELD_IN_ORDER_NOT_SELECT";
exports[3066] = "ER_AGGREGATE_IN_ORDER_NOT_SELECT";
exports[3067] = "ER_INVALID_RPL_WILD_TABLE_FILTER_PATTERN";
exports[3068] = "ER_NET_OK_PACKET_TOO_LARGE";
exports[3069] = "ER_INVALID_JSON_DATA";
exports[3070] = "ER_INVALID_GEOJSON_MISSING_MEMBER";
exports[3071] = "ER_INVALID_GEOJSON_WRONG_TYPE";
exports[3072] = "ER_INVALID_GEOJSON_UNSPECIFIED";
exports[3073] = "ER_DIMENSION_UNSUPPORTED";
exports[3074] = "ER_SLAVE_CHANNEL_DOES_NOT_EXIST";
exports[3075] = "ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT";
exports[3076] = "ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG";
exports[3077] = "ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY";
exports[3078] = "ER_SLAVE_CHANNEL_DELETE";
exports[3079] = "ER_SLAVE_MULTIPLE_CHANNELS_CMD";
exports[3080] = "ER_SLAVE_MAX_CHANNELS_EXCEEDED";
exports[3081] = "ER_SLAVE_CHANNEL_MUST_STOP";
exports[3082] = "ER_SLAVE_CHANNEL_NOT_RUNNING";
exports[3083] = "ER_SLAVE_CHANNEL_WAS_RUNNING";
exports[3084] = "ER_SLAVE_CHANNEL_WAS_NOT_RUNNING";
exports[3085] = "ER_SLAVE_CHANNEL_SQL_THREAD_MUST_STOP";
exports[3086] = "ER_SLAVE_CHANNEL_SQL_SKIP_COUNTER";
exports[3087] = "ER_WRONG_FIELD_WITH_GROUP_V2";
exports[3088] = "ER_MIX_OF_GROUP_FUNC_AND_FIELDS_V2";
exports[3089] = "ER_WARN_DEPRECATED_SYSVAR_UPDATE";
exports[3090] = "ER_WARN_DEPRECATED_SQLMODE";
exports[3091] = "ER_CANNOT_LOG_PARTIAL_DROP_DATABASE_WITH_GTID";
exports[3092] = "ER_GROUP_REPLICATION_CONFIGURATION";
exports[3093] = "ER_GROUP_REPLICATION_RUNNING";
exports[3094] = "ER_GROUP_REPLICATION_APPLIER_INIT_ERROR";
exports[3095] = "ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT";
exports[3096] = "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERROR";
exports[3097] = "ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR";
exports[3098] = "ER_BEFORE_DML_VALIDATION_ERROR";
exports[3099] = "ER_PREVENTS_VARIABLE_WITHOUT_RBR";
exports[3100] = "ER_RUN_HOOK_ERROR";
exports[3101] = "ER_TRANSACTION_ROLLBACK_DURING_COMMIT";
exports[3102] = "ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED";
exports[3103] = "ER_UNSUPPORTED_ALTER_INPLACE_ON_VIRTUAL_COLUMN";
exports[3104] = "ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN";
exports[3105] = "ER_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN";
exports[3106] = "ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN";
exports[3107] = "ER_GENERATED_COLUMN_NON_PRIOR";
exports[3108] = "ER_DEPENDENT_BY_GENERATED_COLUMN";
exports[3109] = "ER_GENERATED_COLUMN_REF_AUTO_INC";
exports[3110] = "ER_FEATURE_NOT_AVAILABLE";
exports[3111] = "ER_CANT_SET_GTID_MODE";
exports[3112] = "ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF";
exports[3113] = "ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION";
exports[3114] = "ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON";
exports[3115] = "ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF";
exports[3116] = "ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS";
exports[3117] = "ER_SET_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS";
exports[3118] = "ER_ACCOUNT_HAS_BEEN_LOCKED";
exports[3119] = "ER_WRONG_TABLESPACE_NAME";
exports[3120] = "ER_TABLESPACE_IS_NOT_EMPTY";
exports[3121] = "ER_WRONG_FILE_NAME";
exports[3122] = "ER_BOOST_GEOMETRY_INCONSISTENT_TURNS_EXCEPTION";
exports[3123] = "ER_WARN_OPTIMIZER_HINT_SYNTAX_ERROR";
exports[3124] = "ER_WARN_BAD_MAX_EXECUTION_TIME";
exports[3125] = "ER_WARN_UNSUPPORTED_MAX_EXECUTION_TIME";
exports[3126] = "ER_WARN_CONFLICTING_HINT";
exports[3127] = "ER_WARN_UNKNOWN_QB_NAME";
exports[3128] = "ER_UNRESOLVED_HINT_NAME";
exports[3129] = "ER_WARN_ON_MODIFYING_GTID_EXECUTED_TABLE";
exports[3130] = "ER_PLUGGABLE_PROTOCOL_COMMAND_NOT_SUPPORTED";
exports[3131] = "ER_LOCKING_SERVICE_WRONG_NAME";
exports[3132] = "ER_LOCKING_SERVICE_DEADLOCK";
exports[3133] = "ER_LOCKING_SERVICE_TIMEOUT";
exports[3134] = "ER_GIS_MAX_POINTS_IN_GEOMETRY_OVERFLOWED";
exports[3135] = "ER_SQL_MODE_MERGED";
exports[3136] = "ER_VTOKEN_PLUGIN_TOKEN_MISMATCH";
exports[3137] = "ER_VTOKEN_PLUGIN_TOKEN_NOT_FOUND";
exports[3138] = "ER_CANT_SET_VARIABLE_WHEN_OWNING_GTID";
exports[3139] = "ER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED";
exports[3140] = "ER_INVALID_JSON_TEXT";
exports[3141] = "ER_INVALID_JSON_TEXT_IN_PARAM";
exports[3142] = "ER_INVALID_JSON_BINARY_DATA";
exports[3143] = "ER_INVALID_JSON_PATH";
exports[3144] = "ER_INVALID_JSON_CHARSET";
exports[3145] = "ER_INVALID_JSON_CHARSET_IN_FUNCTION";
exports[3146] = "ER_INVALID_TYPE_FOR_JSON";
exports[3147] = "ER_INVALID_CAST_TO_JSON";
exports[3148] = "ER_INVALID_JSON_PATH_CHARSET";
exports[3149] = "ER_INVALID_JSON_PATH_WILDCARD";
exports[3150] = "ER_JSON_VALUE_TOO_BIG";
exports[3151] = "ER_JSON_KEY_TOO_BIG";
exports[3152] = "ER_JSON_USED_AS_KEY";
exports[3153] = "ER_JSON_VACUOUS_PATH";
exports[3154] = "ER_JSON_BAD_ONE_OR_ALL_ARG";
exports[3155] = "ER_NUMERIC_JSON_VALUE_OUT_OF_RANGE";
exports[3156] = "ER_INVALID_JSON_VALUE_FOR_CAST";
exports[3157] = "ER_JSON_DOCUMENT_TOO_DEEP";
exports[3158] = "ER_JSON_DOCUMENT_NULL_KEY";
exports[3159] = "ER_SECURE_TRANSPORT_REQUIRED";
exports[3160] = "ER_NO_SECURE_TRANSPORTS_CONFIGURED";
exports[3161] = "ER_DISABLED_STORAGE_ENGINE";
exports[3162] = "ER_USER_DOES_NOT_EXIST";
exports[3163] = "ER_USER_ALREADY_EXISTS";
exports[3164] = "ER_AUDIT_API_ABORT";
exports[3165] = "ER_INVALID_JSON_PATH_ARRAY_CELL";
exports[3166] = "ER_BUFPOOL_RESIZE_INPROGRESS";
exports[3167] = "ER_FEATURE_DISABLED_SEE_DOC";
exports[3168] = "ER_SERVER_ISNT_AVAILABLE";
exports[3169] = "ER_SESSION_WAS_KILLED";
exports[3170] = "ER_CAPACITY_EXCEEDED";
exports[3171] = "ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER";
exports[3172] = "ER_TABLE_NEEDS_UPG_PART";
exports[3173] = "ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID";
exports[3174] = "ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL";
exports[3175] = "ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT";
exports[3176] = "ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE";
exports[3177] = "ER_LOCK_REFUSED_BY_ENGINE";
exports[3178] = "ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN";
exports[3179] = "ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE";
exports[3180] = "ER_MASTER_KEY_ROTATION_ERROR_BY_SE";
exports[3181] = "ER_MASTER_KEY_ROTATION_BINLOG_FAILED";
exports[3182] = "ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE";
exports[3183] = "ER_TABLESPACE_CANNOT_ENCRYPT";
exports[3184] = "ER_INVALID_ENCRYPTION_OPTION";
exports[3185] = "ER_CANNOT_FIND_KEY_IN_KEYRING";
exports[3186] = "ER_CAPACITY_EXCEEDED_IN_PARSER";
exports[3187] = "ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE";
exports[3188] = "ER_KEYRING_UDF_KEYRING_SERVICE_ERROR";
exports[3189] = "ER_USER_COLUMN_OLD_LENGTH";
exports[3190] = "ER_CANT_RESET_MASTER";
exports[3191] = "ER_GROUP_REPLICATION_MAX_GROUP_SIZE";
exports[3192] = "ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED";
exports[3193] = "ER_TABLE_REFERENCED";
exports[3194] = "ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE";
exports[3195] = "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO";
exports[3196] = "ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID";
exports[3197] = "ER_XA_RETRY";
exports[3198] = "ER_KEYRING_AWS_UDF_AWS_KMS_ERROR";
exports[3199] = "ER_BINLOG_UNSAFE_XA";
exports[3200] = "ER_UDF_ERROR";
exports[3201] = "ER_KEYRING_MIGRATION_FAILURE";
exports[3202] = "ER_KEYRING_ACCESS_DENIED_ERROR";
exports[3203] = "ER_KEYRING_MIGRATION_STATUS";
exports[3204] = "ER_PLUGIN_FAILED_TO_OPEN_TABLES";
exports[3205] = "ER_PLUGIN_FAILED_TO_OPEN_TABLE";
exports[3206] = "ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED";
exports[3207] = "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET";
exports[3208] = "ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY";
exports[3209] = "ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED";
exports[3210] = "ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED";
exports[3211] = "ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE";
exports[3212] = "ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED";
exports[3213] = "ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS";
exports[3214] = "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE";
exports[3215] = "ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT";
exports[3216] = "ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED";
exports[3217] = "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE";
exports[3218] = "ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE";
exports[3219] = "ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR";
exports[3220] = "ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY";
exports[3221] = "ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY";
exports[3222] = "ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS";
exports[3223] = "ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC";
exports[3224] = "ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER";
exports[3225] = "ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER";
exports[3226] = "WARN_DEPRECATED_MAXDB_SQL_MODE_FOR_TIMESTAMP";
exports[3227] = "ER_XA_REPLICATION_FILTERS";
exports[3228] = "ER_CANT_OPEN_ERROR_LOG";
exports[3229] = "ER_GROUPING_ON_TIMESTAMP_IN_DST";
exports[3230] = "ER_CANT_START_SERVER_NAMED_PIPE";
});
// node_modules/mysql/lib/protocol/Timer.js
var require_Timer = __commonJS((exports, module) => {
var Timers = __require("timers");
module.exports = Timer;
function Timer(object) {
this._object = object;
this._timeout = null;
}
Timer.prototype.active = function active() {
if (this._timeout) {
if (this._timeout.refresh) {
this._timeout.refresh();
} else {
Timers.active(this._timeout);
}
}
};
Timer.prototype.start = function start(msecs) {
this.stop();
this._timeout = Timers.setTimeout(this._onTimeout.bind(this), msecs);
};
Timer.prototype.stop = function stop() {
if (this._timeout) {
Timers.clearTimeout(this._timeout);
this._timeout = null;
}
};
Timer.prototype._onTimeout = function _onTimeout() {
return this._object._onTimeout();
};
});
// node_modules/mysql/lib/protocol/sequences/Sequence.js
var require_Sequence = __commonJS((exports, module) => {
var Util = __require("util");
var EventEmitter = __require("events").EventEmitter;
var Packets = require_packets();
var ErrorConstants = require_errors();
var Timer = require_Timer();
var listenerCount = EventEmitter.listenerCount || function(emitter, type) {
return emitter.listeners(type).length;
};
var LONG_STACK_DELIMITER = "\n --------------------\n";
module.exports = Sequence;
Util.inherits(Sequence, EventEmitter);
function Sequence(options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
EventEmitter.call(this);
options = options || {};
this._callback = callback;
this._callSite = null;
this._ended = false;
this._timeout = options.timeout;
this._timer = new Timer(this);
}
Sequence.determinePacket = function(byte) {
switch (byte) {
case 0:
return Packets.OkPacket;
case 254:
return Packets.EofPacket;
case 255:
return Packets.ErrorPacket;
default:
return;
}
};
Sequence.prototype.hasErrorHandler = function() {
return Boolean(this._callback) || listenerCount(this, "error") > 1;
};
Sequence.prototype._packetToError = function(packet) {
var code = ErrorConstants[packet.errno] || "UNKNOWN_CODE_PLEASE_REPORT";
var err = new Error(code + ": " + packet.message);
err.code = code;
err.errno = packet.errno;
err.sqlMessage = packet.message;
err.sqlState = packet.sqlState;
return err;
};
Sequence.prototype.end = function(err) {
if (this._ended) {
return;
}
this._ended = true;
if (err) {
this._addLongStackTrace(err);
}
this._callSite = null;
try {
if (err) {
this.emit("error", err);
}
} finally {
try {
if (this._callback) {
this._callback.apply(this, arguments);
}
} finally {
this.emit("end");
}
}
};
Sequence.prototype["OkPacket"] = function(packet) {
this.end(null, packet);
};
Sequence.prototype["ErrorPacket"] = function(packet) {
this.end(this._packetToError(packet));
};
Sequence.prototype.start = function() {
};
Sequence.prototype._addLongStackTrace = function _addLongStackTrace(err) {
var callSiteStack = this._callSite && this._callSite.stack;
if (!callSiteStack || typeof callSiteStack !== "string") {
return;
}
if (err.stack.indexOf(LONG_STACK_DELIMITER) !== -1) {
return;
}
var index = callSiteStack.indexOf("\n");
if (index !== -1) {
err.stack += LONG_STACK_DELIMITER + callSiteStack.substr(index + 1);
}
};
Sequence.prototype._onTimeout = function _onTimeout() {
this.emit("timeout");
};
});
// node_modules/mysql/lib/protocol/Auth.js
var require_Auth = __commonJS((exports) => {
var Buffer2 = require_safe_buffer().Buffer;
var Crypto = __require("crypto");
var Auth = exports;
function auth(name, data, options) {
options = options || {};
switch (name) {
case "mysql_native_password":
return Auth.token(options.password, data.slice(0, 20));
default:
return;
}
}
Auth.auth = auth;
function sha1(msg) {
var hash = Crypto.createHash("sha1");
hash.update(msg, "binary");
return hash.digest("binary");
}
Auth.sha1 = sha1;
function xor(a, b) {
a = Buffer2.from(a, "binary");
b = Buffer2.from(b, "binary");
var result = Buffer2.allocUnsafe(a.length);
for (var i = 0;i < a.length; i++) {
result[i] = a[i] ^ b[i];
}
return result;
}
Auth.xor = xor;
Auth.token = function(password, scramble) {
if (!password) {
return Buffer2.alloc(0);
}
var stage1 = sha1(Buffer2.from(password, "utf8").toString("binary"));
var stage2 = sha1(stage1);
var stage3 = sha1(scramble.toString("binary") + stage2);
return xor(stage3, stage1);
};
Auth.hashPassword = function(password) {
var nr = [20528, 22325];
var add = 7;
var nr2 = [4660, 22129];
var result = Buffer2.alloc(8);
if (typeof password === "string") {
password = Buffer2.from(password);
}
for (var i = 0;i < password.length; i++) {
var c = password[i];
if (c === 32 || c === 9) {
continue;
}
nr = this.xor32(nr, this.add32(this.mul32(this.add32(this.and32(nr, [0, 63]), [0, add]), [0, c]), this.shl32(nr, 8)));
nr2 = this.add32(nr2, this.xor32(this.shl32(nr2, 8), nr));
add += c;
}
this.int31Write(result, nr, 0);
this.int31Write(result, nr2, 4);
return result;
};
Auth.randomInit = function(seed1, seed2) {
return {
max_value: 1073741823,
max_value_dbl: 1073741823,
seed1: seed1 % 1073741823,
seed2: seed2 % 1073741823
};
};
Auth.myRnd = function(r) {
r.seed1 = (r.seed1 * 3 + r.seed2) % r.max_value;
r.seed2 = (r.seed1 + r.seed2 + 33) % r.max_value;
return r.seed1 / r.max_value_dbl;
};
Auth.scramble323 = function(message, password) {
if (!password) {
return Buffer2.alloc(0);
}
var to = Buffer2.allocUnsafe(8);
var hashPass = this.hashPassword(password);
var hashMessage = this.hashPassword(message.slice(0, 8));
var seed1 = this.int32Read(hashPass, 0) ^ this.int32Read(hashMessage, 0);
var seed2 = this.int32Read(hashPass, 4) ^ this.int32Read(hashMessage, 4);
var r = this.randomInit(seed1, seed2);
for (var i = 0;i < 8; i++) {
to[i] = Math.floor(this.myRnd(r) * 31) + 64;
}
var extra = Math.floor(this.myRnd(r) * 31);
for (var i = 0;i < 8; i++) {
to[i] ^= extra;
}
return to;
};
Auth.xor32 = function(a, b) {
return [a[0] ^ b[0], a[1] ^ b[1]];
};
Auth.add32 = function(a, b) {
var w1 = a[1] + b[1];
var w2 = a[0] + b[0] + ((w1 & 4294901760) >> 16);
return [w2 & 65535, w1 & 65535];
};
Auth.mul32 = function(a, b) {
var w1 = a[1] * b[1];
var w2 = (a[1] * b[1] >> 16 & 65535) + (a[0] * b[1] & 65535) + (a[1] * b[0] & 65535);
return [w2 & 65535, w1 & 65535];
};
Auth.and32 = function(a, b) {
return [a[0] & b[0], a[1] & b[1]];
};
Auth.shl32 = function(a, b) {
var w1 = a[1] << b;
var w2 = a[0] << b | (w1 & 4294901760) >> 16;
return [w2 & 65535, w1 & 65535];
};
Auth.int31Write = function(buffer, number, offset) {
buffer[offset] = number[0] >> 8 & 127;
buffer[offset + 1] = number[0] & 255;
buffer[offset + 2] = number[1] >> 8 & 255;
buffer[offset + 3] = number[1] & 255;
};
Auth.int32Read = function(buffer, offset) {
return (buffer[offset] << 24) + (buffer[offset + 1] << 16) + (buffer[offset + 2] << 8) + buffer[offset + 3];
};
});
// node_modules/mysql/lib/protocol/sequences/ChangeUser.js
var require_ChangeUser = __commonJS((exports, module) => {
var Sequence = require_Sequence();
var Util = __require("util");
var Packets = require_packets();
var Auth = require_Auth();
module.exports = ChangeUser;
Util.inherits(ChangeUser, Sequence);
function ChangeUser(options, callback) {
Sequence.call(this, options, callback);
this._user = options.user;
this._password = options.password;
this._database = options.database;
this._charsetNumber = options.charsetNumber;
this._currentConfig = options.currentConfig;
}
ChangeUser.prototype.determinePacket = function determinePacket(firstByte) {
switch (firstByte) {
case 254:
return Packets.AuthSwitchRequestPacket;
case 255:
return Packets.ErrorPacket;
default:
return;
}
};
ChangeUser.prototype.start = function(handshakeInitializationPacket) {
var scrambleBuff = handshakeInitializationPacket.scrambleBuff();
scrambleBuff = Auth.token(this._password, scrambleBuff);
var packet = new Packets.ComChangeUserPacket({
user: this._user,
scrambleBuff,
database: this._database,
charsetNumber: this._charsetNumber
});
this._currentConfig.user = this._user;
this._currentConfig.password = this._password;
this._currentConfig.database = this._database;
this._currentConfig.charsetNumber = this._charsetNumber;
this.emit("packet", packet);
};
ChangeUser.prototype["AuthSwitchRequestPacket"] = function(packet) {
var name = packet.authMethodName;
var data = Auth.auth(name, packet.authMethodData, {
password: this._password
});
if (data !== undefined) {
this.emit("packet", new Packets.AuthSwitchResponsePacket({
data
}));
} else {
var err = new Error("MySQL is requesting the " + name + " authentication method, which is not supported.");
err.code = "UNSUPPORTED_AUTH_METHOD";
err.fatal = true;
this.end(err);
}
};
ChangeUser.prototype["ErrorPacket"] = function(packet) {
var err = this._packetToError(packet);
err.fatal = true;
this.end(err);
};
});
// node_modules/mysql/lib/protocol/sequences/Handshake.js
var require_Handshake = __commonJS((exports, module) => {
var Sequence = require_Sequence();
var Util = __require("util");
var Packets = require_packets();
var Auth = require_Auth();
var ClientConstants = require_client();
module.exports = Handshake;
Util.inherits(Handshake, Sequence);
function Handshake(options, callback) {
Sequence.call(this, options, callback);
options = options || {};
this._config = options.config;
this._handshakeInitializationPacket = null;
}
Handshake.prototype.determinePacket = function determinePacket(firstByte, parser) {
if (firstByte === 255) {
return Packets.ErrorPacket;
}
if (!this._handshakeInitializationPacket) {
return Packets.HandshakeInitializationPacket;
}
if (firstByte === 254) {
return parser.packetLength() === 1 ? Packets.UseOldPasswordPacket : Packets.AuthSwitchRequestPacket;
}
return;
};
Handshake.prototype["AuthSwitchRequestPacket"] = function(packet) {
var name = packet.authMethodName;
var data = Auth.auth(name, packet.authMethodData, {
password: this._config.password
});
if (data !== undefined) {
this.emit("packet", new Packets.AuthSwitchResponsePacket({
data
}));
} else {
var err = new Error("MySQL is requesting the " + name + " authentication method, which is not supported.");
err.code = "UNSUPPORTED_AUTH_METHOD";
err.fatal = true;
this.end(err);
}
};
Handshake.prototype["HandshakeInitializationPacket"] = function(packet) {
this._handshakeInitializationPacket = packet;
this._config.protocol41 = packet.protocol41;
var serverSSLSupport = packet.serverCapabilities1 & ClientConstants.CLIENT_SSL;
if (this._config.ssl) {
if (!serverSSLSupport) {
var err = new Error("Server does not support secure connection");
err.code = "HANDSHAKE_NO_SSL_SUPPORT";
err.fatal = true;
this.end(err);
return;
}
this._config.clientFlags |= ClientConstants.CLIENT_SSL;
this.emit("packet", new Packets.SSLRequestPacket({
clientFlags: this._config.clientFlags,
maxPacketSize: this._config.maxPacketSize,
charsetNumber: this._config.charsetNumber
}));
this.emit("start-tls");
} else {
this._sendCredentials();
}
};
Handshake.prototype._tlsUpgradeCompleteHandler = function() {
this._sendCredentials();
};
Handshake.prototype._sendCredentials = function() {
var packet = this._handshakeInitializationPacket;
this.emit("packet", new Packets.ClientAuthenticationPacket({
clientFlags: this._config.clientFlags,
maxPacketSize: this._config.maxPacketSize,
charsetNumber: this._config.charsetNumber,
user: this._config.user,
database: this._config.database,
protocol41: packet.protocol41,
scrambleBuff: packet.protocol41 ? Auth.token(this._config.password, packet.scrambleBuff()) : Auth.scramble323(packet.scrambleBuff(), this._config.password)
}));
};
Handshake.prototype["UseOldPasswordPacket"] = function() {
if (!this._config.insecureAuth) {
var err = new Error("MySQL server is requesting the old and insecure pre-4.1 auth mechanism. " + "Upgrade the user password or use the {insecureAuth: true} option.");
err.code = "HANDSHAKE_INSECURE_AUTH";
err.fatal = true;
this.end(err);
return;
}
this.emit("packet", new Packets.OldPasswordPacket({
scrambleBuff: Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._config.password)
}));
};
Handshake.prototype["ErrorPacket"] = function(packet) {
var err = this._packetToError(packet, true);
err.fatal = true;
this.end(err);
};
});
// node_modules/mysql/lib/protocol/sequences/Ping.js
var require_Ping = __commonJS((exports, module) => {
var Sequence = require_Sequence();
var Util = __require("util");
var Packets = require_packets();
module.exports = Ping;
Util.inherits(Ping, Sequence);
function Ping(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
Sequence.call(this, options, callback);
}
Ping.prototype.start = function() {
this.emit("packet", new Packets.ComPingPacket);
};
});
// node_modules/mysql/lib/protocol/ResultSet.js
var require_ResultSet = __commonJS((exports, module) => {
module.exports = ResultSet;
function ResultSet(resultSetHeaderPacket) {
this.resultSetHeaderPacket = resultSetHeaderPacket;
this.fieldPackets = [];
this.eofPackets = [];
this.rows = [];
}
});
// node_modules/mysql/lib/protocol/constants/server_status.js
var require_server_status = __commonJS((exports) => {
exports.SERVER_STATUS_IN_TRANS = 1;
exports.SERVER_STATUS_AUTOCOMMIT = 2;
exports.SERVER_MORE_RESULTS_EXISTS = 8;
exports.SERVER_QUERY_NO_GOOD_INDEX_USED = 16;
exports.SERVER_QUERY_NO_INDEX_USED = 32;
exports.SERVER_STATUS_CURSOR_EXISTS = 64;
exports.SERVER_STATUS_LAST_ROW_SENT = 128;
exports.SERVER_STATUS_DB_DROPPED = 256;
exports.SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512;
exports.SERVER_STATUS_METADATA_CHANGED = 1024;
exports.SERVER_QUERY_WAS_SLOW = 2048;
exports.SERVER_PS_OUT_PARAMS = 4096;
});
// node_modules/process-nextick-args/index.js
var require_process_nextick_args = __commonJS((exports, module) => {
if (typeof process === "undefined" || !process.version || process.version.indexOf("v0.") === 0 || process.version.indexOf("v1.") === 0 && process.version.indexOf("v1.8.") !== 0) {
module.exports = { nextTick };
} else {
module.exports = process;
}
function nextTick(fn, arg1, arg2, arg3) {
if (typeof fn !== "function") {
throw new TypeError('"callback" argument must be a function');
}
var len = arguments.length;
var args, i;
switch (len) {
case 0:
case 1:
return process.nextTick(fn);
case 2:
return process.nextTick(function afterTickOne() {
fn.call(null, arg1);
});
case 3:
return process.nextTick(function afterTickTwo() {
fn.call(null, arg1, arg2);
});
case 4:
return process.nextTick(function afterTickThree() {
fn.call(null, arg1, arg2, arg3);
});
default:
args = new Array(len - 1);
i = 0;
while (i < args.length) {
args[i++] = arguments[i];
}
return process.nextTick(function afterTick() {
fn.apply(null, args);
});
}
}
});
// node_modules/isarray/index.js
var require_isarray = __commonJS((exports, module) => {
var toString = {}.toString;
module.exports = Array.isArray || function(arr) {
return toString.call(arr) == "[object Array]";
};
});
// node_modules/core-util-is/lib/util.js
var require_util = __commonJS((exports) => {
function isArray(arg) {
if (Array.isArray) {
return Array.isArray(arg);
}
return objectToString(arg) === "[object Array]";
}
exports.isArray = isArray;
function isBoolean(arg) {
return typeof arg === "boolean";
}
exports.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === "number";
}
exports.isNumber = isNumber;
function isString(arg) {
return typeof arg === "string";
}
exports.isString = isString;
function isSymbol(arg) {
return typeof arg === "symbol";
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === undefined;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
return objectToString(re) === "[object RegExp]";
}
exports.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === "object" && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
return objectToString(d) === "[object Date]";
}
exports.isDate = isDate;
function isError(e) {
return objectToString(e) === "[object Error]" || e instanceof Error;
}
exports.isError = isError;
function isFunction(arg) {
return typeof arg === "function";
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || typeof arg === "undefined";
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = __require("buffer").Buffer.isBuffer;
function objectToString(o) {
return Object.prototype.toString.call(o);
}
});
// node_modules/inherits/inherits_browser.js
var require_inherits_browser = __commonJS((exports, module) => {
if (typeof Object.create === "function") {
module.exports = function inherits(ctor, superCtor) {
if (superCtor) {
ctor.super_ = superCtor;
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
}
};
} else {
module.exports = function inherits(ctor, superCtor) {
if (superCtor) {
ctor.super_ = superCtor;
var TempCtor = function() {
};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor;
ctor.prototype.constructor = ctor;
}
};
}
});
// node_modules/inherits/inherits.js
var require_inherits = __commonJS((exports, module) => {
try {
util = __require("util");
if (typeof util.inherits !== "function")
throw "";
module.exports = util.inherits;
} catch (e) {
module.exports = require_inherits_browser();
}
var util;
});
// node_modules/readable-stream/lib/internal/streams/BufferList.js
var require_BufferList2 = __commonJS((exports, module) => {
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var Buffer2 = require_safe_buffer().Buffer;
var util = __require("util");
function copyBuffer(src, target, offset) {
src.copy(target, offset);
}
module.exports = function() {
function BufferList() {
_classCallCheck(this, BufferList);
this.head = null;
this.tail = null;
this.length = 0;
}
BufferList.prototype.push = function push(v) {
var entry = { data: v, next: null };
if (this.length > 0)
this.tail.next = entry;
else
this.head = entry;
this.tail = entry;
++this.length;
};
BufferList.prototype.unshift = function unshift(v) {
var entry = { data: v, next: this.head };
if (this.length === 0)
this.tail = entry;
this.head = entry;
++this.length;
};
BufferList.prototype.shift = function shift() {
if (this.length === 0)
return;
var ret = this.head.data;
if (this.length === 1)
this.head = this.tail = null;
else
this.head = this.head.next;
--this.length;
return ret;
};
BufferList.prototype.clear = function clear() {
this.head = this.tail = null;
this.length = 0;
};
BufferList.prototype.join = function join(s) {
if (this.length === 0)
return "";
var p = this.head;
var ret = "" + p.data;
while (p = p.next) {
ret += s + p.data;
}
return ret;
};
BufferList.prototype.concat = function concat(n) {
if (this.length === 0)
return Buffer2.alloc(0);
if (this.length === 1)
return this.head.data;
var ret = Buffer2.allocUnsafe(n >>> 0);
var p = this.head;
var i = 0;
while (p) {
copyBuffer(p.data, ret, i);
i += p.data.length;
p = p.next;
}
return ret;
};
return BufferList;
}();
if (util && util.inspect && util.inspect.custom) {
module.exports.prototype[util.inspect.custom] = function() {
var obj = util.inspect({ length: this.length });
return this.constructor.name + " " + obj;
};
}
});
// node_modules/readable-stream/lib/internal/streams/destroy.js
var require_destroy = __commonJS((exports, module) => {
var pna = require_process_nextick_args();
function destroy(err, cb) {
var _this = this;
var readableDestroyed = this._readableState && this._readableState.destroyed;
var writableDestroyed = this._writableState && this._writableState.destroyed;
if (readableDestroyed || writableDestroyed) {
if (cb) {
cb(err);
} else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
pna.nextTick(emitErrorNT, this, err);
}
return this;
}
if (this._readableState) {
this._readableState.destroyed = true;
}
if (this._writableState) {
this._writableState.destroyed = true;
}
this._destroy(err || null, function(err2) {
if (!cb && err2) {
pna.nextTick(emitErrorNT, _this, err2);
if (_this._writableState) {
_this._writableState.errorEmitted = true;
}
} else if (cb) {
cb(err2);
}
});
return this;
}
function undestroy() {
if (this._readableState) {
this._readableState.destroyed = false;
this._readableState.reading = false;
this._readableState.ended = false;
this._readableState.endEmitted = false;
}
if (this._writableState) {
this._writableState.destroyed = false;
this._writableState.ended = false;
this._writableState.ending = false;
this._writableState.finished = false;
this._writableState.errorEmitted = false;
}
}
function emitErrorNT(self2, err) {
self2.emit("error", err);
}
module.exports = {
destroy,
undestroy
};
});
// node_modules/util-deprecate/node.js
var require_node = __commonJS((exports, module) => {
module.exports = __require("util").deprecate;
});
// node_modules/readable-stream/lib/_stream_writable.js
var require__stream_writable = __commonJS((exports, module) => {
var pna = require_process_nextick_args();
module.exports = Writable;
function CorkedRequest(state) {
var _this = this;
this.next = null;
this.entry = null;
this.finish = function() {
onCorkedFinish(_this, state);
};
}
var asyncWrite = ["v0.10", "v0.9."].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
var Duplex;
Writable.WritableState = WritableState;
var util = Object.create(require_util());
util.inherits = require_inherits();
var internalUtil = {
deprecate: require_node()
};
var Stream = __require("stream");
var Buffer2 = require_safe_buffer().Buffer;
var OurUint8Array = global.Uint8Array || function() {
};
function _uint8ArrayToBuffer(chunk) {
return Buffer2.from(chunk);
}
function _isUint8Array(obj) {
return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array;
}
var destroyImpl = require_destroy();
util.inherits(Writable, Stream);
function nop() {
}
function WritableState(options, stream) {
Duplex = Duplex || require__stream_duplex();
options = options || {};
var isDuplex = stream instanceof Duplex;
this.objectMode = !!options.objectMode;
if (isDuplex)
this.objectMode = this.objectMode || !!options.writableObjectMode;
var hwm = options.highWaterMark;
var writableHwm = options.writableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0)
this.highWaterMark = hwm;
else if (isDuplex && (writableHwm || writableHwm === 0))
this.highWaterMark = writableHwm;
else
this.highWaterMark = defaultHwm;
this.highWaterMark = Math.floor(this.highWaterMark);
this.finalCalled = false;
this.needDrain = false;
this.ending = false;
this.ended = false;
this.finished = false;
this.destroyed = false;
var noDecode = options.decodeStrings === false;
this.decodeStrings = !noDecode;
this.defaultEncoding = options.defaultEncoding || "utf8";
this.length = 0;
this.writing = false;
this.corked = 0;
this.sync = true;
this.bufferProcessing = false;
this.onwrite = function(er) {
onwrite(stream, er);
};
this.writecb = null;
this.writelen = 0;
this.bufferedRequest = null;
this.lastBufferedRequest = null;
this.pendingcb = 0;
this.prefinished = false;
this.errorEmitted = false;
this.bufferedRequestCount = 0;
this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
var current = this.bufferedRequest;
var out = [];
while (current) {
out.push(current);
current = current.next;
}
return out;
};
(function() {
try {
Object.defineProperty(WritableState.prototype, "buffer", {
get: internalUtil.deprecate(function() {
return this.getBuffer();
}, "_writableState.buffer is deprecated. Use _writableState.getBuffer " + "instead.", "DEP0003")
});
} catch (_) {
}
})();
var realHasInstance;
if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
realHasInstance = Function.prototype[Symbol.hasInstance];
Object.defineProperty(Writable, Symbol.hasInstance, {
value: function(object) {
if (realHasInstance.call(this, object))
return true;
if (this !== Writable)
return false;
return object && object._writableState instanceof WritableState;
}
});
} else {
realHasInstance = function(object) {
return object instanceof this;
};
}
function Writable(options) {
Duplex = Duplex || require__stream_duplex();
if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
return new Writable(options);
}
this._writableState = new WritableState(options, this);
this.writable = true;
if (options) {
if (typeof options.write === "function")
this._write = options.write;
if (typeof options.writev === "function")
this._writev = options.writev;
if (typeof options.destroy === "function")
this._destroy = options.destroy;
if (typeof options.final === "function")
this._final = options.final;
}
Stream.call(this);
}
Writable.prototype.pipe = function() {
this.emit("error", new Error("Cannot pipe, not readable"));
};
function writeAfterEnd(stream, cb) {
var er = new Error("write after end");
stream.emit("error", er);
pna.nextTick(cb, er);
}
function validChunk(stream, state, chunk, cb) {
var valid = true;
var er = false;
if (chunk === null) {
er = new TypeError("May not write null values to stream");
} else if (typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
er = new TypeError("Invalid non-string/buffer chunk");
}
if (er) {
stream.emit("error", er);
pna.nextTick(cb, er);
valid = false;
}
return valid;
}
Writable.prototype.write = function(chunk, encoding, cb) {
var state = this._writableState;
var ret = false;
var isBuf = !state.objectMode && _isUint8Array(chunk);
if (isBuf && !Buffer2.isBuffer(chunk)) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (typeof encoding === "function") {
cb = encoding;
encoding = null;
}
if (isBuf)
encoding = "buffer";
else if (!encoding)
encoding = state.defaultEncoding;
if (typeof cb !== "function")
cb = nop;
if (state.ended)
writeAfterEnd(this, cb);
else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
}
return ret;
};
Writable.prototype.cork = function() {
var state = this._writableState;
state.corked++;
};
Writable.prototype.uncork = function() {
var state = this._writableState;
if (state.corked) {
state.corked--;
if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest)
clearBuffer(this, state);
}
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
if (typeof encoding === "string")
encoding = encoding.toLowerCase();
if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1))
throw new TypeError("Unknown encoding: " + encoding);
this._writableState.defaultEncoding = encoding;
return this;
};
function decodeChunk(state, chunk, encoding) {
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
chunk = Buffer2.from(chunk, encoding);
}
return chunk;
}
Object.defineProperty(Writable.prototype, "writableHighWaterMark", {
enumerable: false,
get: function() {
return this._writableState.highWaterMark;
}
});
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = "buffer";
chunk = newChunk;
}
}
var len = state.objectMode ? 1 : chunk.length;
state.length += len;
var ret = state.length < state.highWaterMark;
if (!ret)
state.needDrain = true;
if (state.writing || state.corked) {
var last = state.lastBufferedRequest;
state.lastBufferedRequest = {
chunk,
encoding,
isBuf,
callback: cb,
next: null
};
if (last) {
last.next = state.lastBufferedRequest;
} else {
state.bufferedRequest = state.lastBufferedRequest;
}
state.bufferedRequestCount += 1;
} else {
doWrite(stream, state, false, len, chunk, encoding, cb);
}
return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
state.writelen = len;
state.writecb = cb;
state.writing = true;
state.sync = true;
if (writev)
stream._writev(chunk, state.onwrite);
else
stream._write(chunk, encoding, state.onwrite);
state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) {
pna.nextTick(cb, er);
pna.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit("error", er);
} else {
cb(er);
stream._writableState.errorEmitted = true;
stream.emit("error", er);
finishMaybe(stream, state);
}
}
function onwriteStateUpdate(state) {
state.writing = false;
state.writecb = null;
state.length -= state.writelen;
state.writelen = 0;
}
function onwrite(stream, er) {
var state = stream._writableState;
var sync = state.sync;
var cb = state.writecb;
onwriteStateUpdate(state);
if (er)
onwriteError(stream, state, sync, er, cb);
else {
var finished = needFinish(state);
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
clearBuffer(stream, state);
}
if (sync) {
asyncWrite(afterWrite, stream, state, finished, cb);
} else {
afterWrite(stream, state, finished, cb);
}
}
}
function afterWrite(stream, state, finished, cb) {
if (!finished)
onwriteDrain(stream, state);
state.pendingcb--;
cb();
finishMaybe(stream, state);
}
function onwriteDrain(stream, state) {
if (state.length === 0 && state.needDrain) {
state.needDrain = false;
stream.emit("drain");
}
}
function clearBuffer(stream, state) {
state.bufferProcessing = true;
var entry = state.bufferedRequest;
if (stream._writev && entry && entry.next) {
var l = state.bufferedRequestCount;
var buffer = new Array(l);
var holder = state.corkedRequestsFree;
holder.entry = entry;
var count = 0;
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf)
allBuffers = false;
entry = entry.next;
count += 1;
}
buffer.allBuffers = allBuffers;
doWrite(stream, state, true, state.length, buffer, "", holder.finish);
state.pendingcb++;
state.lastBufferedRequest = null;
if (holder.next) {
state.corkedRequestsFree = holder.next;
holder.next = null;
} else {
state.corkedRequestsFree = new CorkedRequest(state);
}
state.bufferedRequestCount = 0;
} else {
while (entry) {
var chunk = entry.chunk;
var encoding = entry.encoding;
var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, false, len, chunk, encoding, cb);
entry = entry.next;
state.bufferedRequestCount--;
if (state.writing) {
break;
}
}
if (entry === null)
state.lastBufferedRequest = null;
}
state.bufferedRequest = entry;
state.bufferProcessing = false;
}
Writable.prototype._write = function(chunk, encoding, cb) {
cb(new Error("_write() is not implemented"));
};
Writable.prototype._writev = null;
Writable.prototype.end = function(chunk, encoding, cb) {
var state = this._writableState;
if (typeof chunk === "function") {
cb = chunk;
chunk = null;
encoding = null;
} else if (typeof encoding === "function") {
cb = encoding;
encoding = null;
}
if (chunk !== null && chunk !== undefined)
this.write(chunk, encoding);
if (state.corked) {
state.corked = 1;
this.uncork();
}
if (!state.ending && !state.finished)
endWritable(this, state, cb);
};
function needFinish(state) {
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
stream._final(function(err) {
state.pendingcb--;
if (err) {
stream.emit("error", err);
}
state.prefinished = true;
stream.emit("prefinish");
finishMaybe(stream, state);
});
}
function prefinish(stream, state) {
if (!state.prefinished && !state.finalCalled) {
if (typeof stream._final === "function") {
state.pendingcb++;
state.finalCalled = true;
pna.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit("prefinish");
}
}
}
function finishMaybe(stream, state) {
var need = needFinish(state);
if (need) {
prefinish(stream, state);
if (state.pendingcb === 0) {
state.finished = true;
stream.emit("finish");
}
}
return need;
}
function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished)
pna.nextTick(cb);
else
stream.once("finish", cb);
}
state.ended = true;
stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
var entry = corkReq.entry;
corkReq.entry = null;
while (entry) {
var cb = entry.callback;
state.pendingcb--;
cb(err);
entry = entry.next;
}
if (state.corkedRequestsFree) {
state.corkedRequestsFree.next = corkReq;
} else {
state.corkedRequestsFree = corkReq;
}
}
Object.defineProperty(Writable.prototype, "destroyed", {
get: function() {
if (this._writableState === undefined) {
return false;
}
return this._writableState.destroyed;
},
set: function(value) {
if (!this._writableState) {
return;
}
this._writableState.destroyed = value;
}
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function(err, cb) {
this.end();
cb(err);
};
});
// node_modules/readable-stream/lib/_stream_duplex.js
var require__stream_duplex = __commonJS((exports, module) => {
var pna = require_process_nextick_args();
var objectKeys = Object.keys || function(obj) {
var keys2 = [];
for (var key in obj) {
keys2.push(key);
}
return keys2;
};
module.exports = Duplex;
var util = Object.create(require_util());
util.inherits = require_inherits();
var Readable = require__stream_readable();
var Writable = require__stream_writable();
util.inherits(Duplex, Readable);
{
keys = objectKeys(Writable.prototype);
for (v = 0;v < keys.length; v++) {
method = keys[v];
if (!Duplex.prototype[method])
Duplex.prototype[method] = Writable.prototype[method];
}
}
var keys;
var method;
var v;
function Duplex(options) {
if (!(this instanceof Duplex))
return new Duplex(options);
Readable.call(this, options);
Writable.call(this, options);
if (options && options.readable === false)
this.readable = false;
if (options && options.writable === false)
this.writable = false;
this.allowHalfOpen = true;
if (options && options.allowHalfOpen === false)
this.allowHalfOpen = false;
this.once("end", onend);
}
Object.defineProperty(Duplex.prototype, "writableHighWaterMark", {
enumerable: false,
get: function() {
return this._writableState.highWaterMark;
}
});
function onend() {
if (this.allowHalfOpen || this._writableState.ended)
return;
pna.nextTick(onEndNT, this);
}
function onEndNT(self2) {
self2.end();
}
Object.defineProperty(Duplex.prototype, "destroyed", {
get: function() {
if (this._readableState === undefined || this._writableState === undefined) {
return false;
}
return this._readableState.destroyed && this._writableState.destroyed;
},
set: function(value) {
if (this._readableState === undefined || this._writableState === undefined) {
return;
}
this._readableState.destroyed = value;
this._writableState.destroyed = value;
}
});
Duplex.prototype._destroy = function(err, cb) {
this.push(null);
this.end();
pna.nextTick(cb, err);
};
});
// node_modules/string_decoder/lib/string_decoder.js
var require_string_decoder = __commonJS((exports) => {
var Buffer2 = require_safe_buffer().Buffer;
var isEncoding = Buffer2.isEncoding || function(encoding) {
encoding = "" + encoding;
switch (encoding && encoding.toLowerCase()) {
case "hex":
case "utf8":
case "utf-8":
case "ascii":
case "binary":
case "base64":
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
case "raw":
return true;
default:
return false;
}
};
function _normalizeEncoding(enc) {
if (!enc)
return "utf8";
var retried;
while (true) {
switch (enc) {
case "utf8":
case "utf-8":
return "utf8";
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return "utf16le";
case "latin1":
case "binary":
return "latin1";
case "base64":
case "ascii":
case "hex":
return enc;
default:
if (retried)
return;
enc = ("" + enc).toLowerCase();
retried = true;
}
}
}
function normalizeEncoding(enc) {
var nenc = _normalizeEncoding(enc);
if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc)))
throw new Error("Unknown encoding: " + enc);
return nenc || enc;
}
exports.StringDecoder = StringDecoder;
function StringDecoder(encoding) {
this.encoding = normalizeEncoding(encoding);
var nb;
switch (this.encoding) {
case "utf16le":
this.text = utf16Text;
this.end = utf16End;
nb = 4;
break;
case "utf8":
this.fillLast = utf8FillLast;
nb = 4;
break;
case "base64":
this.text = base64Text;
this.end = base64End;
nb = 3;
break;
default:
this.write = simpleWrite;
this.end = simpleEnd;
return;
}
this.lastNeed = 0;
this.lastTotal = 0;
this.lastChar = Buffer2.allocUnsafe(nb);
}
StringDecoder.prototype.write = function(buf) {
if (buf.length === 0)
return "";
var r;
var i;
if (this.lastNeed) {
r = this.fillLast(buf);
if (r === undefined)
return "";
i = this.lastNeed;
this.lastNeed = 0;
} else {
i = 0;
}
if (i < buf.length)
return r ? r + this.text(buf, i) : this.text(buf, i);
return r || "";
};
StringDecoder.prototype.end = utf8End;
StringDecoder.prototype.text = utf8Text;
StringDecoder.prototype.fillLast = function(buf) {
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
this.lastNeed -= buf.length;
};
function utf8CheckByte(byte) {
if (byte <= 127)
return 0;
else if (byte >> 5 === 6)
return 2;
else if (byte >> 4 === 14)
return 3;
else if (byte >> 3 === 30)
return 4;
return byte >> 6 === 2 ? -1 : -2;
}
function utf8CheckIncomplete(self2, buf, i) {
var j = buf.length - 1;
if (j < i)
return 0;
var nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0)
self2.lastNeed = nb - 1;
return nb;
}
if (--j < i || nb === -2)
return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0)
self2.lastNeed = nb - 2;
return nb;
}
if (--j < i || nb === -2)
return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) {
if (nb === 2)
nb = 0;
else
self2.lastNeed = nb - 3;
}
return nb;
}
return 0;
}
function utf8CheckExtraBytes(self2, buf, p) {
if ((buf[0] & 192) !== 128) {
self2.lastNeed = 0;
return "\uFFFD";
}
if (self2.lastNeed > 1 && buf.length > 1) {
if ((buf[1] & 192) !== 128) {
self2.lastNeed = 1;
return "\uFFFD";
}
if (self2.lastNeed > 2 && buf.length > 2) {
if ((buf[2] & 192) !== 128) {
self2.lastNeed = 2;
return "\uFFFD";
}
}
}
}
function utf8FillLast(buf) {
var p = this.lastTotal - this.lastNeed;
var r = utf8CheckExtraBytes(this, buf, p);
if (r !== undefined)
return r;
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, p, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, p, 0, buf.length);
this.lastNeed -= buf.length;
}
function utf8Text(buf, i) {
var total = utf8CheckIncomplete(this, buf, i);
if (!this.lastNeed)
return buf.toString("utf8", i);
this.lastTotal = total;
var end = buf.length - (total - this.lastNeed);
buf.copy(this.lastChar, 0, end);
return buf.toString("utf8", i, end);
}
function utf8End(buf) {
var r = buf && buf.length ? this.write(buf) : "";
if (this.lastNeed)
return r + "\uFFFD";
return r;
}
function utf16Text(buf, i) {
if ((buf.length - i) % 2 === 0) {
var r = buf.toString("utf16le", i);
if (r) {
var c = r.charCodeAt(r.length - 1);
if (c >= 55296 && c <= 56319) {
this.lastNeed = 2;
this.lastTotal = 4;
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
return r.slice(0, -1);
}
}
return r;
}
this.lastNeed = 1;
this.lastTotal = 2;
this.lastChar[0] = buf[buf.length - 1];
return buf.toString("utf16le", i, buf.length - 1);
}
function utf16End(buf) {
var r = buf && buf.length ? this.write(buf) : "";
if (this.lastNeed) {
var end = this.lastTotal - this.lastNeed;
return r + this.lastChar.toString("utf16le", 0, end);
}
return r;
}
function base64Text(buf, i) {
var n = (buf.length - i) % 3;
if (n === 0)
return buf.toString("base64", i);
this.lastNeed = 3 - n;
this.lastTotal = 3;
if (n === 1) {
this.lastChar[0] = buf[buf.length - 1];
} else {
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
}
return buf.toString("base64", i, buf.length - n);
}
function base64End(buf) {
var r = buf && buf.length ? this.write(buf) : "";
if (this.lastNeed)
return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
return r;
}
function simpleWrite(buf) {
return buf.toString(this.encoding);
}
function simpleEnd(buf) {
return buf && buf.length ? this.write(buf) : "";
}
});
// node_modules/readable-stream/lib/_stream_readable.js
var require__stream_readable = __commonJS((exports, module) => {
var pna = require_process_nextick_args();
module.exports = Readable;
var isArray = require_isarray();
var Duplex;
Readable.ReadableState = ReadableState;
var EE = __require("events").EventEmitter;
var EElistenerCount = function(emitter, type) {
return emitter.listeners(type).length;
};
var Stream = __require("stream");
var Buffer2 = require_safe_buffer().Buffer;
var OurUint8Array = global.Uint8Array || function() {
};
function _uint8ArrayToBuffer(chunk) {
return Buffer2.from(chunk);
}
function _isUint8Array(obj) {
return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array;
}
var util = Object.create(require_util());
util.inherits = require_inherits();
var debugUtil = __require("util");
var debug = undefined;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog("stream");
} else {
debug = function() {
};
}
var BufferList = require_BufferList2();
var destroyImpl = require_destroy();
var StringDecoder;
util.inherits(Readable, Stream);
var kProxyEvents = ["error", "close", "destroy", "pause", "resume"];
function prependListener(emitter, event, fn) {
if (typeof emitter.prependListener === "function")
return emitter.prependListener(event, fn);
if (!emitter._events || !emitter._events[event])
emitter.on(event, fn);
else if (isArray(emitter._events[event]))
emitter._events[event].unshift(fn);
else
emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream) {
Duplex = Duplex || require__stream_duplex();
options = options || {};
var isDuplex = stream instanceof Duplex;
this.objectMode = !!options.objectMode;
if (isDuplex)
this.objectMode = this.objectMode || !!options.readableObjectMode;
var hwm = options.highWaterMark;
var readableHwm = options.readableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0)
this.highWaterMark = hwm;
else if (isDuplex && (readableHwm || readableHwm === 0))
this.highWaterMark = readableHwm;
else
this.highWaterMark = defaultHwm;
this.highWaterMark = Math.floor(this.highWaterMark);
this.buffer = new BufferList;
this.length = 0;
this.pipes = null;
this.pipesCount = 0;
this.flowing = null;
this.ended = false;
this.endEmitted = false;
this.reading = false;
this.sync = true;
this.needReadable = false;
this.emittedReadable = false;
this.readableListening = false;
this.resumeScheduled = false;
this.destroyed = false;
this.defaultEncoding = options.defaultEncoding || "utf8";
this.awaitDrain = 0;
this.readingMore = false;
this.decoder = null;
this.encoding = null;
if (options.encoding) {
if (!StringDecoder)
StringDecoder = require_string_decoder().StringDecoder;
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
}
function Readable(options) {
Duplex = Duplex || require__stream_duplex();
if (!(this instanceof Readable))
return new Readable(options);
this._readableState = new ReadableState(options, this);
this.readable = true;
if (options) {
if (typeof options.read === "function")
this._read = options.read;
if (typeof options.destroy === "function")
this._destroy = options.destroy;
}
Stream.call(this);
}
Object.defineProperty(Readable.prototype, "destroyed", {
get: function() {
if (this._readableState === undefined) {
return false;
}
return this._readableState.destroyed;
},
set: function(value) {
if (!this._readableState) {
return;
}
this._readableState.destroyed = value;
}
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function(err, cb) {
this.push(null);
cb(err);
};
Readable.prototype.push = function(chunk, encoding) {
var state = this._readableState;
var skipChunkCheck;
if (!state.objectMode) {
if (typeof chunk === "string") {
encoding = encoding || state.defaultEncoding;
if (encoding !== state.encoding) {
chunk = Buffer2.from(chunk, encoding);
encoding = "";
}
skipChunkCheck = true;
}
} else {
skipChunkCheck = true;
}
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};
Readable.prototype.unshift = function(chunk) {
return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
var state = stream._readableState;
if (chunk === null) {
state.reading = false;
onEofChunk(stream, state);
} else {
var er;
if (!skipChunkCheck)
er = chunkInvalid(state, chunk);
if (er) {
stream.emit("error", er);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer2.prototype) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (addToFront) {
if (state.endEmitted)
stream.emit("error", new Error("stream.unshift() after end event"));
else
addChunk(stream, state, chunk, true);
} else if (state.ended) {
stream.emit("error", new Error("stream.push() after EOF"));
} else {
state.reading = false;
if (state.decoder && !encoding) {
chunk = state.decoder.write(chunk);
if (state.objectMode || chunk.length !== 0)
addChunk(stream, state, chunk, false);
else
maybeReadMore(stream, state);
} else {
addChunk(stream, state, chunk, false);
}
}
} else if (!addToFront) {
state.reading = false;
}
}
return needMoreData(state);
}
function addChunk(stream, state, chunk, addToFront) {
if (state.flowing && state.length === 0 && !state.sync) {
stream.emit("data", chunk);
stream.read(0);
} else {
state.length += state.objectMode ? 1 : chunk.length;
if (addToFront)
state.buffer.unshift(chunk);
else
state.buffer.push(chunk);
if (state.needReadable)
emitReadable(stream);
}
maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
var er;
if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== undefined && !state.objectMode) {
er = new TypeError("Invalid non-string/buffer chunk");
}
return er;
}
function needMoreData(state) {
return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
}
Readable.prototype.isPaused = function() {
return this._readableState.flowing === false;
};
Readable.prototype.setEncoding = function(enc) {
if (!StringDecoder)
StringDecoder = require_string_decoder().StringDecoder;
this._readableState.decoder = new StringDecoder(enc);
this._readableState.encoding = enc;
return this;
};
var MAX_HWM = 8388608;
function computeNewHighWaterMark(n) {
if (n >= MAX_HWM) {
n = MAX_HWM;
} else {
n--;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
n++;
}
return n;
}
function howMuchToRead(n, state) {
if (n <= 0 || state.length === 0 && state.ended)
return 0;
if (state.objectMode)
return 1;
if (n !== n) {
if (state.flowing && state.length)
return state.buffer.head.data.length;
else
return state.length;
}
if (n > state.highWaterMark)
state.highWaterMark = computeNewHighWaterMark(n);
if (n <= state.length)
return n;
if (!state.ended) {
state.needReadable = true;
return 0;
}
return state.length;
}
Readable.prototype.read = function(n) {
debug("read", n);
n = parseInt(n, 10);
var state = this._readableState;
var nOrig = n;
if (n !== 0)
state.emittedReadable = false;
if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
debug("read: emitReadable", state.length, state.ended);
if (state.length === 0 && state.ended)
endReadable(this);
else
emitReadable(this);
return null;
}
n = howMuchToRead(n, state);
if (n === 0 && state.ended) {
if (state.length === 0)
endReadable(this);
return null;
}
var doRead = state.needReadable;
debug("need readable", doRead);
if (state.length === 0 || state.length - n < state.highWaterMark) {
doRead = true;
debug("length less than watermark", doRead);
}
if (state.ended || state.reading) {
doRead = false;
debug("reading or ended", doRead);
} else if (doRead) {
debug("do read");
state.reading = true;
state.sync = true;
if (state.length === 0)
state.needReadable = true;
this._read(state.highWaterMark);
state.sync = false;
if (!state.reading)
n = howMuchToRead(nOrig, state);
}
var ret;
if (n > 0)
ret = fromList(n, state);
else
ret = null;
if (ret === null) {
state.needReadable = true;
n = 0;
} else {
state.length -= n;
}
if (state.length === 0) {
if (!state.ended)
state.needReadable = true;
if (nOrig !== n && state.ended)
endReadable(this);
}
if (ret !== null)
this.emit("data", ret);
return ret;
};
function onEofChunk(stream, state) {
if (state.ended)
return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
state.length += state.objectMode ? 1 : chunk.length;
}
}
state.ended = true;
emitReadable(stream);
}
function emitReadable(stream) {
var state = stream._readableState;
state.needReadable = false;
if (!state.emittedReadable) {
debug("emitReadable", state.flowing);
state.emittedReadable = true;
if (state.sync)
pna.nextTick(emitReadable_, stream);
else
emitReadable_(stream);
}
}
function emitReadable_(stream) {
debug("emit readable");
stream.emit("readable");
flow(stream);
}
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
pna.nextTick(maybeReadMore_, stream, state);
}
}
function maybeReadMore_(stream, state) {
var len = state.length;
while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
debug("maybeReadMore read 0");
stream.read(0);
if (len === state.length)
break;
else
len = state.length;
}
state.readingMore = false;
}
Readable.prototype._read = function(n) {
this.emit("error", new Error("_read() is not implemented"));
};
Readable.prototype.pipe = function(dest, pipeOpts) {
var src = this;
var state = this._readableState;
switch (state.pipesCount) {
case 0:
state.pipes = dest;
break;
case 1:
state.pipes = [state.pipes, dest];
break;
default:
state.pipes.push(dest);
break;
}
state.pipesCount += 1;
debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
var endFn = doEnd ? onend : unpipe;
if (state.endEmitted)
pna.nextTick(endFn);
else
src.once("end", endFn);
dest.on("unpipe", onunpipe);
function onunpipe(readable, unpipeInfo) {
debug("onunpipe");
if (readable === src) {
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
unpipeInfo.hasUnpiped = true;
cleanup();
}
}
}
function onend() {
debug("onend");
dest.end();
}
var ondrain = pipeOnDrain(src);
dest.on("drain", ondrain);
var cleanedUp = false;
function cleanup() {
debug("cleanup");
dest.removeListener("close", onclose);
dest.removeListener("finish", onfinish);
dest.removeListener("drain", ondrain);
dest.removeListener("error", onerror);
dest.removeListener("unpipe", onunpipe);
src.removeListener("end", onend);
src.removeListener("end", unpipe);
src.removeListener("data", ondata);
cleanedUp = true;
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain))
ondrain();
}
var increasedAwaitDrain = false;
src.on("data", ondata);
function ondata(chunk) {
debug("ondata");
increasedAwaitDrain = false;
var ret = dest.write(chunk);
if (ret === false && !increasedAwaitDrain) {
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
debug("false write response, pause", src._readableState.awaitDrain);
src._readableState.awaitDrain++;
increasedAwaitDrain = true;
}
src.pause();
}
}
function onerror(er) {
debug("onerror", er);
unpipe();
dest.removeListener("error", onerror);
if (EElistenerCount(dest, "error") === 0)
dest.emit("error", er);
}
prependListener(dest, "error", onerror);
function onclose() {
dest.removeListener("finish", onfinish);
unpipe();
}
dest.once("close", onclose);
function onfinish() {
debug("onfinish");
dest.removeListener("close", onclose);
unpipe();
}
dest.once("finish", onfinish);
function unpipe() {
debug("unpipe");
src.unpipe(dest);
}
dest.emit("pipe", src);
if (!state.flowing) {
debug("pipe resume");
src.resume();
}
return dest;
};
function pipeOnDrain(src) {
return function() {
var state = src._readableState;
debug("pipeOnDrain", state.awaitDrain);
if (state.awaitDrain)
state.awaitDrain--;
if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
state.flowing = true;
flow(src);
}
};
}
Readable.prototype.unpipe = function(dest) {
var state = this._readableState;
var unpipeInfo = { hasUnpiped: false };
if (state.pipesCount === 0)
return this;
if (state.pipesCount === 1) {
if (dest && dest !== state.pipes)
return this;
if (!dest)
dest = state.pipes;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
if (dest)
dest.emit("unpipe", this, unpipeInfo);
return this;
}
if (!dest) {
var dests = state.pipes;
var len = state.pipesCount;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
for (var i = 0;i < len; i++) {
dests[i].emit("unpipe", this, unpipeInfo);
}
return this;
}
var index = indexOf(state.pipes, dest);
if (index === -1)
return this;
state.pipes.splice(index, 1);
state.pipesCount -= 1;
if (state.pipesCount === 1)
state.pipes = state.pipes[0];
dest.emit("unpipe", this, unpipeInfo);
return this;
};
Readable.prototype.on = function(ev, fn) {
var res = Stream.prototype.on.call(this, ev, fn);
if (ev === "data") {
if (this._readableState.flowing !== false)
this.resume();
} else if (ev === "readable") {
var state = this._readableState;
if (!state.endEmitted && !state.readableListening) {
state.readableListening = state.needReadable = true;
state.emittedReadable = false;
if (!state.reading) {
pna.nextTick(nReadingNextTick, this);
} else if (state.length) {
emitReadable(this);
}
}
}
return res;
};
Readable.prototype.addListener = Readable.prototype.on;
function nReadingNextTick(self2) {
debug("readable nexttick read 0");
self2.read(0);
}
Readable.prototype.resume = function() {
var state = this._readableState;
if (!state.flowing) {
debug("resume");
state.flowing = true;
resume(this, state);
}
return this;
};
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
pna.nextTick(resume_, stream, state);
}
}
function resume_(stream, state) {
if (!state.reading) {
debug("resume read 0");
stream.read(0);
}
state.resumeScheduled = false;
state.awaitDrain = 0;
stream.emit("resume");
flow(stream);
if (state.flowing && !state.reading)
stream.read(0);
}
Readable.prototype.pause = function() {
debug("call pause flowing=%j", this._readableState.flowing);
if (this._readableState.flowing !== false) {
debug("pause");
this._readableState.flowing = false;
this.emit("pause");
}
return this;
};
function flow(stream) {
var state = stream._readableState;
debug("flow", state.flowing);
while (state.flowing && stream.read() !== null) {
}
}
Readable.prototype.wrap = function(stream) {
var _this = this;
var state = this._readableState;
var paused = false;
stream.on("end", function() {
debug("wrapped end");
if (state.decoder && !state.ended) {
var chunk = state.decoder.end();
if (chunk && chunk.length)
_this.push(chunk);
}
_this.push(null);
});
stream.on("data", function(chunk) {
debug("wrapped data");
if (state.decoder)
chunk = state.decoder.write(chunk);
if (state.objectMode && (chunk === null || chunk === undefined))
return;
else if (!state.objectMode && (!chunk || !chunk.length))
return;
var ret = _this.push(chunk);
if (!ret) {
paused = true;
stream.pause();
}
});
for (var i in stream) {
if (this[i] === undefined && typeof stream[i] === "function") {
this[i] = function(method) {
return function() {
return stream[method].apply(stream, arguments);
};
}(i);
}
}
for (var n = 0;n < kProxyEvents.length; n++) {
stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
}
this._read = function(n2) {
debug("wrapped _read", n2);
if (paused) {
paused = false;
stream.resume();
}
};
return this;
};
Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
enumerable: false,
get: function() {
return this._readableState.highWaterMark;
}
});
Readable._fromList = fromList;
function fromList(n, state) {
if (state.length === 0)
return null;
var ret;
if (state.objectMode)
ret = state.buffer.shift();
else if (!n || n >= state.length) {
if (state.decoder)
ret = state.buffer.join("");
else if (state.buffer.length === 1)
ret = state.buffer.head.data;
else
ret = state.buffer.concat(state.length);
state.buffer.clear();
} else {
ret = fromListPartial(n, state.buffer, state.decoder);
}
return ret;
}
function fromListPartial(n, list, hasStrings) {
var ret;
if (n < list.head.data.length) {
ret = list.head.data.slice(0, n);
list.head.data = list.head.data.slice(n);
} else if (n === list.head.data.length) {
ret = list.shift();
} else {
ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
}
return ret;
}
function copyFromBufferString(n, list) {
var p = list.head;
var c = 1;
var ret = p.data;
n -= ret.length;
while (p = p.next) {
var str = p.data;
var nb = n > str.length ? str.length : n;
if (nb === str.length)
ret += str;
else
ret += str.slice(0, n);
n -= nb;
if (n === 0) {
if (nb === str.length) {
++c;
if (p.next)
list.head = p.next;
else
list.head = list.tail = null;
} else {
list.head = p;
p.data = str.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
function copyFromBuffer(n, list) {
var ret = Buffer2.allocUnsafe(n);
var p = list.head;
var c = 1;
p.data.copy(ret);
n -= p.data.length;
while (p = p.next) {
var buf = p.data;
var nb = n > buf.length ? buf.length : n;
buf.copy(ret, ret.length - n, 0, nb);
n -= nb;
if (n === 0) {
if (nb === buf.length) {
++c;
if (p.next)
list.head = p.next;
else
list.head = list.tail = null;
} else {
list.head = p;
p.data = buf.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
if (state.length > 0)
throw new Error('"endReadable()" called on non-empty stream');
if (!state.endEmitted) {
state.ended = true;
pna.nextTick(endReadableNT, state, stream);
}
}
function endReadableNT(state, stream) {
if (!state.endEmitted && state.length === 0) {
state.endEmitted = true;
stream.readable = false;
stream.emit("end");
}
}
function indexOf(xs, x) {
for (var i = 0, l = xs.length;i < l; i++) {
if (xs[i] === x)
return i;
}
return -1;
}
});
// node_modules/readable-stream/lib/_stream_transform.js
var require__stream_transform = __commonJS((exports, module) => {
module.exports = Transform;
var Duplex = require__stream_duplex();
var util = Object.create(require_util());
util.inherits = require_inherits();
util.inherits(Transform, Duplex);
function afterTransform(er, data) {
var ts = this._transformState;
ts.transforming = false;
var cb = ts.writecb;
if (!cb) {
return this.emit("error", new Error("write callback called multiple times"));
}
ts.writechunk = null;
ts.writecb = null;
if (data != null)
this.push(data);
cb(er);
var rs = this._readableState;
rs.reading = false;
if (rs.needReadable || rs.length < rs.highWaterMark) {
this._read(rs.highWaterMark);
}
}
function Transform(options) {
if (!(this instanceof Transform))
return new Transform(options);
Duplex.call(this, options);
this._transformState = {
afterTransform: afterTransform.bind(this),
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: null
};
this._readableState.needReadable = true;
this._readableState.sync = false;
if (options) {
if (typeof options.transform === "function")
this._transform = options.transform;
if (typeof options.flush === "function")
this._flush = options.flush;
}
this.on("prefinish", prefinish);
}
function prefinish() {
var _this = this;
if (typeof this._flush === "function") {
this._flush(function(er, data) {
done(_this, er, data);
});
} else {
done(this, null, null);
}
}
Transform.prototype.push = function(chunk, encoding) {
this._transformState.needTransform = false;
return Duplex.prototype.push.call(this, chunk, encoding);
};
Transform.prototype._transform = function(chunk, encoding, cb) {
throw new Error("_transform() is not implemented");
};
Transform.prototype._write = function(chunk, encoding, cb) {
var ts = this._transformState;
ts.writecb = cb;
ts.writechunk = chunk;
ts.writeencoding = encoding;
if (!ts.transforming) {
var rs = this._readableState;
if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark)
this._read(rs.highWaterMark);
}
};
Transform.prototype._read = function(n) {
var ts = this._transformState;
if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
ts.transforming = true;
this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
} else {
ts.needTransform = true;
}
};
Transform.prototype._destroy = function(err, cb) {
var _this2 = this;
Duplex.prototype._destroy.call(this, err, function(err2) {
cb(err2);
_this2.emit("close");
});
};
function done(stream, er, data) {
if (er)
return stream.emit("error", er);
if (data != null)
stream.push(data);
if (stream._writableState.length)
throw new Error("Calling transform done when ws.length != 0");
if (stream._transformState.transforming)
throw new Error("Calling transform done when still transforming");
return stream.push(null);
}
});
// node_modules/readable-stream/lib/_stream_passthrough.js
var require__stream_passthrough = __commonJS((exports, module) => {
module.exports = PassThrough;
var Transform = require__stream_transform();
var util = Object.create(require_util());
util.inherits = require_inherits();
util.inherits(PassThrough, Transform);
function PassThrough(options) {
if (!(this instanceof PassThrough))
return new PassThrough(options);
Transform.call(this, options);
}
PassThrough.prototype._transform = function(chunk, encoding, cb) {
cb(null, chunk);
};
});
// node_modules/readable-stream/readable.js
var require_readable = __commonJS((exports, module) => {
var Stream = __require("stream");
if (process.env.READABLE_STREAM === "disable" && Stream) {
module.exports = Stream;
exports = module.exports = Stream.Readable;
exports.Readable = Stream.Readable;
exports.Writable = Stream.Writable;
exports.Duplex = Stream.Duplex;
exports.Transform = Stream.Transform;
exports.PassThrough = Stream.PassThrough;
exports.Stream = Stream;
} else {
exports = module.exports = require__stream_readable();
exports.Stream = Stream || exports;
exports.Readable = exports;
exports.Writable = require__stream_writable();
exports.Duplex = require__stream_duplex();
exports.Transform = require__stream_transform();
exports.PassThrough = require__stream_passthrough();
}
});
// node_modules/mysql/lib/protocol/sequences/Query.js
var require_Query = __commonJS((exports, module) => {
var ClientConstants = require_client();
var fs2 = __require("fs");
var Packets = require_packets();
var ResultSet = require_ResultSet();
var Sequence = require_Sequence();
var ServerStatus = require_server_status();
var Readable = require_readable();
var Util = __require("util");
module.exports = Query;
Util.inherits(Query, Sequence);
function Query(options, callback) {
Sequence.call(this, options, callback);
this.sql = options.sql;
this.values = options.values;
this.typeCast = options.typeCast === undefined ? true : options.typeCast;
this.nestTables = options.nestTables || false;
this._resultSet = null;
this._results = [];
this._fields = [];
this._index = 0;
this._loadError = null;
}
Query.prototype.start = function() {
this.emit("packet", new Packets.ComQueryPacket(this.sql));
};
Query.prototype.determinePacket = function determinePacket(byte, parser) {
var resultSet = this._resultSet;
if (!resultSet) {
switch (byte) {
case 0:
return Packets.OkPacket;
case 251:
return Packets.LocalInfileRequestPacket;
case 255:
return Packets.ErrorPacket;
default:
return Packets.ResultSetHeaderPacket;
}
}
if (resultSet.eofPackets.length === 0) {
return resultSet.fieldPackets.length < resultSet.resultSetHeaderPacket.fieldCount ? Packets.FieldPacket : Packets.EofPacket;
}
if (byte === 255) {
return Packets.ErrorPacket;
}
if (byte === 254 && parser.packetLength() < 9) {
return Packets.EofPacket;
}
return Packets.RowDataPacket;
};
Query.prototype["OkPacket"] = function(packet) {
try {
if (!this._callback) {
this.emit("result", packet, this._index);
} else {
this._results.push(packet);
this._fields.push(undefined);
}
} finally {
this._index++;
this._resultSet = null;
this._handleFinalResultPacket(packet);
}
};
Query.prototype["ErrorPacket"] = function(packet) {
var err = this._packetToError(packet);
var results = this._results.length > 0 ? this._results : undefined;
var fields = this._fields.length > 0 ? this._fields : undefined;
err.index = this._index;
err.sql = this.sql;
this.end(err, results, fields);
};
Query.prototype["LocalInfileRequestPacket"] = function(packet) {
if (this._connection.config.clientFlags & ClientConstants.CLIENT_LOCAL_FILES) {
this._sendLocalDataFile(packet.filename);
} else {
this._loadError = new Error("Load local files command is disabled");
this._loadError.code = "LOCAL_FILES_DISABLED";
this._loadError.fatal = false;
this.emit("packet", new Packets.EmptyPacket);
}
};
Query.prototype["ResultSetHeaderPacket"] = function(packet) {
this._resultSet = new ResultSet(packet);
};
Query.prototype["FieldPacket"] = function(packet) {
this._resultSet.fieldPackets.push(packet);
};
Query.prototype["EofPacket"] = function(packet) {
this._resultSet.eofPackets.push(packet);
if (this._resultSet.eofPackets.length === 1 && !this._callback) {
this.emit("fields", this._resultSet.fieldPackets, this._index);
}
if (this._resultSet.eofPackets.length !== 2) {
return;
}
if (this._callback) {
this._results.push(this._resultSet.rows);
this._fields.push(this._resultSet.fieldPackets);
}
this._index++;
this._resultSet = null;
this._handleFinalResultPacket(packet);
};
Query.prototype._handleFinalResultPacket = function(packet) {
if (packet.serverStatus & ServerStatus.SERVER_MORE_RESULTS_EXISTS) {
return;
}
var results = this._results.length > 1 ? this._results : this._results[0];
var fields = this._fields.length > 1 ? this._fields : this._fields[0];
this.end(this._loadError, results, fields);
};
Query.prototype["RowDataPacket"] = function(packet, parser, connection) {
packet.parse(parser, this._resultSet.fieldPackets, this.typeCast, this.nestTables, connection);
if (this._callback) {
this._resultSet.rows.push(packet);
} else {
this.emit("result", packet, this._index);
}
};
Query.prototype._sendLocalDataFile = function(path) {
var self2 = this;
var localStream = fs2.createReadStream(path, {
flag: "r",
encoding: null,
autoClose: true
});
this.on("pause", function() {
localStream.pause();
});
this.on("resume", function() {
localStream.resume();
});
localStream.on("data", function(data) {
self2.emit("packet", new Packets.LocalDataFilePacket(data));
});
localStream.on("error", function(err) {
self2._loadError = err;
localStream.emit("end");
});
localStream.on("end", function() {
self2.emit("packet", new Packets.EmptyPacket);
});
};
Query.prototype.stream = function(options) {
var self2 = this;
options = options || {};
options.objectMode = true;
var stream = new Readable(options);
stream._read = function() {
self2._connection && self2._connection.resume();
};
stream.once("end", function() {
process.nextTick(function() {
stream.emit("close");
});
});
this.on("result", function(row, i) {
if (!stream.push(row))
self2._connection.pause();
stream.emit("result", row, i);
});
this.on("error", function(err) {
stream.emit("error", err);
});
this.on("end", function() {
stream.push(null);
});
this.on("fields", function(fields, i) {
stream.emit("fields", fields, i);
});
return stream;
};
});
// node_modules/mysql/lib/protocol/sequences/Quit.js
var require_Quit = __commonJS((exports, module) => {
var Sequence = require_Sequence();
var Util = __require("util");
var Packets = require_packets();
module.exports = Quit;
Util.inherits(Quit, Sequence);
function Quit(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
Sequence.call(this, options, callback);
this._started = false;
}
Quit.prototype.end = function end(err) {
if (this._ended) {
return;
}
if (!this._started) {
Sequence.prototype.end.call(this, err);
return;
}
if (err && err.code === "ECONNRESET" && err.syscall === "read") {
Sequence.prototype.end.call(this);
return;
}
Sequence.prototype.end.call(this, err);
};
Quit.prototype.start = function() {
this._started = true;
this.emit("packet", new Packets.ComQuitPacket);
};
});
// node_modules/mysql/lib/protocol/sequences/Statistics.js
var require_Statistics = __commonJS((exports, module) => {
var Sequence = require_Sequence();
var Util = __require("util");
var Packets = require_packets();
module.exports = Statistics;
Util.inherits(Statistics, Sequence);
function Statistics(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
Sequence.call(this, options, callback);
}
Statistics.prototype.start = function() {
this.emit("packet", new Packets.ComStatisticsPacket);
};
Statistics.prototype["StatisticsPacket"] = function(packet) {
this.end(null, packet);
};
Statistics.prototype.determinePacket = function determinePacket(firstByte) {
if (firstByte === 85) {
return Packets.StatisticsPacket;
}
return;
};
});
// node_modules/mysql/lib/protocol/sequences/index.js
var require_sequences = __commonJS((exports) => {
exports.ChangeUser = require_ChangeUser();
exports.Handshake = require_Handshake();
exports.Ping = require_Ping();
exports.Query = require_Query();
exports.Quit = require_Quit();
exports.Sequence = require_Sequence();
exports.Statistics = require_Statistics();
});
// node_modules/mysql/lib/protocol/PacketWriter.js
var require_PacketWriter = __commonJS((exports, module) => {
var BIT_16 = Math.pow(2, 16);
var BIT_24 = Math.pow(2, 24);
var BUFFER_ALLOC_SIZE = Math.pow(2, 8);
var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53);
var MAX_PACKET_LENGTH = Math.pow(2, 24) - 1;
var Buffer2 = require_safe_buffer().Buffer;
module.exports = PacketWriter;
function PacketWriter() {
this._buffer = null;
this._offset = 0;
}
PacketWriter.prototype.toBuffer = function toBuffer(parser) {
if (!this._buffer) {
this._buffer = Buffer2.alloc(0);
this._offset = 0;
}
var buffer = this._buffer;
var length = this._offset;
var packets = Math.floor(length / MAX_PACKET_LENGTH) + 1;
this._buffer = Buffer2.allocUnsafe(length + packets * 4);
this._offset = 0;
for (var packet = 0;packet < packets; packet++) {
var isLast = packet + 1 === packets;
var packetLength = isLast ? length % MAX_PACKET_LENGTH : MAX_PACKET_LENGTH;
var packetNumber = parser.incrementPacketNumber();
this.writeUnsignedNumber(3, packetLength);
this.writeUnsignedNumber(1, packetNumber);
var start = packet * MAX_PACKET_LENGTH;
var end = start + packetLength;
this.writeBuffer(buffer.slice(start, end));
}
return this._buffer;
};
PacketWriter.prototype.writeUnsignedNumber = function(bytes, value) {
this._allocate(bytes);
for (var i = 0;i < bytes; i++) {
this._buffer[this._offset++] = value >> i * 8 & 255;
}
};
PacketWriter.prototype.writeFiller = function(bytes) {
this._allocate(bytes);
for (var i = 0;i < bytes; i++) {
this._buffer[this._offset++] = 0;
}
};
PacketWriter.prototype.writeNullTerminatedString = function(value, encoding) {
value = value || "";
value = value + "";
var bytes = Buffer2.byteLength(value, encoding || "utf-8") + 1;
this._allocate(bytes);
this._buffer.write(value, this._offset, encoding);
this._buffer[this._offset + bytes - 1] = 0;
this._offset += bytes;
};
PacketWriter.prototype.writeString = function(value) {
value = value || "";
value = value + "";
var bytes = Buffer2.byteLength(value, "utf-8");
this._allocate(bytes);
this._buffer.write(value, this._offset, "utf-8");
this._offset += bytes;
};
PacketWriter.prototype.writeBuffer = function(value) {
var bytes = value.length;
this._allocate(bytes);
value.copy(this._buffer, this._offset);
this._offset += bytes;
};
PacketWriter.prototype.writeLengthCodedNumber = function(value) {
if (value === null) {
this._allocate(1);
this._buffer[this._offset++] = 251;
return;
}
if (value <= 250) {
this._allocate(1);
this._buffer[this._offset++] = value;
return;
}
if (value > IEEE_754_BINARY_64_PRECISION) {
throw new Error("writeLengthCodedNumber: JS precision range exceeded, your " + 'number is > 53 bit: "' + value + '"');
}
if (value < BIT_16) {
this._allocate(3);
this._buffer[this._offset++] = 252;
} else if (value < BIT_24) {
this._allocate(4);
this._buffer[this._offset++] = 253;
} else {
this._allocate(9);
this._buffer[this._offset++] = 254;
}
this._buffer[this._offset++] = value & 255;
this._buffer[this._offset++] = value >> 8 & 255;
if (value < BIT_16) {
return;
}
this._buffer[this._offset++] = value >> 16 & 255;
if (value < BIT_24) {
return;
}
this._buffer[this._offset++] = value >> 24 & 255;
value = value.toString(2);
value = value.substr(0, value.length - 32);
value = parseInt(value, 2);
this._buffer[this._offset++] = value & 255;
this._buffer[this._offset++] = value >> 8 & 255;
this._buffer[this._offset++] = value >> 16 & 255;
this._buffer[this._offset++] = 0;
};
PacketWriter.prototype.writeLengthCodedBuffer = function(value) {
var bytes = value.length;
this.writeLengthCodedNumber(bytes);
this.writeBuffer(value);
};
PacketWriter.prototype.writeNullTerminatedBuffer = function(value) {
this.writeBuffer(value);
this.writeFiller(1);
};
PacketWriter.prototype.writeLengthCodedString = function(value) {
if (value === null) {
this.writeLengthCodedNumber(null);
return;
}
value = value === undefined ? "" : String(value);
var bytes = Buffer2.byteLength(value, "utf-8");
this.writeLengthCodedNumber(bytes);
if (!bytes) {
return;
}
this._allocate(bytes);
this._buffer.write(value, this._offset, "utf-8");
this._offset += bytes;
};
PacketWriter.prototype._allocate = function _allocate(bytes) {
if (!this._buffer) {
this._buffer = Buffer2.alloc(Math.max(BUFFER_ALLOC_SIZE, bytes));
this._offset = 0;
return;
}
var bytesRemaining = this._buffer.length - this._offset;
if (bytesRemaining >= bytes) {
return;
}
var newSize = this._buffer.length + Math.max(BUFFER_ALLOC_SIZE, bytes);
var oldBuffer = this._buffer;
this._buffer = Buffer2.alloc(newSize);
oldBuffer.copy(this._buffer);
};
});
// node_modules/mysql/lib/protocol/Protocol.js
var require_Protocol = __commonJS((exports, module) => {
var Parser = require_Parser();
var Sequences = require_sequences();
var Packets = require_packets();
var Stream = __require("stream").Stream;
var Util = __require("util");
var PacketWriter = require_PacketWriter();
module.exports = Protocol;
Util.inherits(Protocol, Stream);
function Protocol(options) {
Stream.call(this);
options = options || {};
this.readable = true;
this.writable = true;
this._config = options.config || {};
this._connection = options.connection;
this._callback = null;
this._fatalError = null;
this._quitSequence = null;
this._handshake = false;
this._handshaked = false;
this._ended = false;
this._destroyed = false;
this._queue = [];
this._handshakeInitializationPacket = null;
this._parser = new Parser({
onError: this.handleParserError.bind(this),
onPacket: this._parsePacket.bind(this),
config: this._config
});
}
Protocol.prototype.write = function(buffer) {
this._parser.write(buffer);
return true;
};
Protocol.prototype.handshake = function handshake(options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
options = options || {};
options.config = this._config;
var sequence = this._enqueue(new Sequences.Handshake(options, callback));
this._handshake = true;
return sequence;
};
Protocol.prototype.query = function query(options, callback) {
return this._enqueue(new Sequences.Query(options, callback));
};
Protocol.prototype.changeUser = function changeUser(options, callback) {
return this._enqueue(new Sequences.ChangeUser(options, callback));
};
Protocol.prototype.ping = function ping(options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
return this._enqueue(new Sequences.Ping(options, callback));
};
Protocol.prototype.stats = function stats(options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
return this._enqueue(new Sequences.Statistics(options, callback));
};
Protocol.prototype.quit = function quit(options, callback) {
if (typeof options === "function") {
callback = options;
options = {};
}
var self2 = this;
var sequence = this._enqueue(new Sequences.Quit(options, callback));
sequence.on("end", function() {
self2.end();
});
return this._quitSequence = sequence;
};
Protocol.prototype.end = function() {
if (this._ended) {
return;
}
this._ended = true;
if (this._quitSequence && (this._quitSequence._ended || this._queue[0] === this._quitSequence)) {
this._quitSequence.end();
this.emit("end");
return;
}
var err = new Error("Connection lost: The server closed the connection.");
err.fatal = true;
err.code = "PROTOCOL_CONNECTION_LOST";
this._delegateError(err);
};
Protocol.prototype.pause = function() {
this._parser.pause();
var seq = this._queue[0];
if (seq && seq.emit) {
seq.emit("pause");
}
};
Protocol.prototype.resume = function() {
this._parser.resume();
var seq = this._queue[0];
if (seq && seq.emit) {
seq.emit("resume");
}
};
Protocol.prototype._enqueue = function(sequence) {
if (!this._validateEnqueue(sequence)) {
return sequence;
}
if (this._config.trace) {
sequence._callSite = sequence._callSite || new Error;
}
this._queue.push(sequence);
this.emit("enqueue", sequence);
var self2 = this;
sequence.on("error", function(err) {
self2._delegateError(err, sequence);
}).on("packet", function(packet) {
sequence._timer.active();
self2._emitPacket(packet);
}).on("timeout", function() {
var err = new Error(sequence.constructor.name + " inactivity timeout");
err.code = "PROTOCOL_SEQUENCE_TIMEOUT";
err.fatal = true;
err.timeout = sequence._timeout;
self2._delegateError(err, sequence);
});
if (sequence.constructor === Sequences.Handshake) {
sequence.on("start-tls", function() {
sequence._timer.active();
self2._connection._startTLS(function(err) {
if (err) {
err.code = "HANDSHAKE_SSL_ERROR";
err.fatal = true;
sequence.end(err);
return;
}
sequence._timer.active();
sequence._tlsUpgradeCompleteHandler();
});
});
sequence.on("end", function() {
self2._handshaked = true;
if (!self2._fatalError) {
self2.emit("handshake", self2._handshakeInitializationPacket);
}
});
}
sequence.on("end", function() {
self2._dequeue(sequence);
});
if (this._queue.length === 1) {
this._parser.resetPacketNumber();
this._startSequence(sequence);
}
return sequence;
};
Protocol.prototype._validateEnqueue = function _validateEnqueue(sequence) {
var err;
var prefix = "Cannot enqueue " + sequence.constructor.name;
if (this._fatalError) {
err = new Error(prefix + " after fatal error.");
err.code = "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR";
} else if (this._quitSequence) {
err = new Error(prefix + " after invoking quit.");
err.code = "PROTOCOL_ENQUEUE_AFTER_QUIT";
} else if (this._destroyed) {
err = new Error(prefix + " after being destroyed.");
err.code = "PROTOCOL_ENQUEUE_AFTER_DESTROY";
} else if ((this._handshake || this._handshaked) && sequence.constructor === Sequences.Handshake) {
err = new Error(prefix + " after already enqueuing a Handshake.");
err.code = "PROTOCOL_ENQUEUE_HANDSHAKE_TWICE";
} else {
return true;
}
var self2 = this;
err.fatal = false;
sequence.on("error", function(err2) {
self2._delegateError(err2, sequence);
});
process.nextTick(function() {
sequence.end(err);
});
return false;
};
Protocol.prototype._parsePacket = function() {
var sequence = this._queue[0];
if (!sequence) {
var err = new Error("Received packet with no active sequence.");
err.code = "PROTOCOL_STRAY_PACKET";
err.fatal = true;
this._delegateError(err);
return;
}
var Packet = this._determinePacket(sequence);
var packet = new Packet({ protocol41: this._config.protocol41 });
var packetName = Packet.name;
if (Packet === Packets.RowDataPacket) {
sequence.RowDataPacket(packet, this._parser, this._connection);
if (this._config.debug) {
this._debugPacket(true, packet);
}
return;
}
if (this._config.debug) {
this._parsePacketDebug(packet);
} else {
packet.parse(this._parser);
}
if (Packet === Packets.HandshakeInitializationPacket) {
this._handshakeInitializationPacket = packet;
this.emit("initialize", packet);
}
sequence._timer.active();
if (!sequence[packetName]) {
var err = new Error("Received packet in the wrong sequence.");
err.code = "PROTOCOL_INCORRECT_PACKET_SEQUENCE";
err.fatal = true;
this._delegateError(err);
return;
}
sequence[packetName](packet);
};
Protocol.prototype._parsePacketDebug = function _parsePacketDebug(packet) {
try {
packet.parse(this._parser);
} finally {
this._debugPacket(true, packet);
}
};
Protocol.prototype._emitPacket = function(packet) {
var packetWriter = new PacketWriter;
packet.write(packetWriter);
this.emit("data", packetWriter.toBuffer(this._parser));
if (this._config.debug) {
this._debugPacket(false, packet);
}
};
Protocol.prototype._determinePacket = function(sequence) {
var firstByte = this._parser.peak();
if (sequence.determinePacket) {
var Packet = sequence.determinePacket(firstByte, this._parser);
if (Packet) {
return Packet;
}
}
switch (firstByte) {
case 0:
return Packets.OkPacket;
case 254:
return Packets.EofPacket;
case 255:
return Packets.ErrorPacket;
}
throw new Error("Could not determine packet, firstByte = " + firstByte);
};
Protocol.prototype._dequeue = function(sequence) {
sequence._timer.stop();
if (this._fatalError) {
return;
}
this._queue.shift();
var sequence = this._queue[0];
if (!sequence) {
this.emit("drain");
return;
}
this._parser.resetPacketNumber();
this._startSequence(sequence);
};
Protocol.prototype._startSequence = function(sequence) {
if (sequence._timeout > 0 && isFinite(sequence._timeout)) {
sequence._timer.start(sequence._timeout);
}
if (sequence.constructor === Sequences.ChangeUser) {
sequence.start(this._handshakeInitializationPacket);
} else {
sequence.start();
}
};
Protocol.prototype.handleNetworkError = function(err) {
err.fatal = true;
var sequence = this._queue[0];
if (sequence) {
sequence.end(err);
} else {
this._delegateError(err);
}
};
Protocol.prototype.handleParserError = function handleParserError(err) {
var sequence = this._queue[0];
if (sequence) {
sequence.end(err);
} else {
this._delegateError(err);
}
};
Protocol.prototype._delegateError = function(err, sequence) {
if (this._fatalError) {
return;
}
if (err.fatal) {
this._fatalError = err;
}
if (this._shouldErrorBubbleUp(err, sequence)) {
this.emit("unhandledError", err);
} else if (err.fatal) {
var queue = this._queue;
process.nextTick(function() {
queue.forEach(function(sequence2) {
sequence2.end(err);
});
queue.length = 0;
});
}
if (err.fatal) {
this.emit("end", err);
}
};
Protocol.prototype._shouldErrorBubbleUp = function(err, sequence) {
if (sequence) {
if (sequence.hasErrorHandler()) {
return false;
} else if (!err.fatal) {
return true;
}
}
return err.fatal && !this._hasPendingErrorHandlers();
};
Protocol.prototype._hasPendingErrorHandlers = function() {
return this._queue.some(function(sequence) {
return sequence.hasErrorHandler();
});
};
Protocol.prototype.destroy = function() {
this._destroyed = true;
this._parser.pause();
if (this._connection.state !== "disconnected") {
if (!this._ended) {
this.end();
}
}
};
Protocol.prototype._debugPacket = function(incoming, packet) {
var connection = this._connection;
var direction = incoming ? "<--" : "-->";
var packetName = packet.constructor.name;
var threadId = connection && connection.threadId !== null ? " (" + connection.threadId + ")" : "";
if (Array.isArray(this._config.debug) && this._config.debug.indexOf(packetName) === -1) {
return;
}
var packetPayload = Util.inspect(packet).replace(/^[^{]+/, "");
console.log("%s%s %s %s\n", direction, threadId, packetName, packetPayload);
};
});
// node_modules/sqlstring/lib/SqlString.js
var require_SqlString = __commonJS((exports) => {
var SqlString = exports;
var ID_GLOBAL_REGEXP = /`/g;
var QUAL_GLOBAL_REGEXP = /\./g;
var CHARS_GLOBAL_REGEXP = /[\0\b\t\n\r\x1a\"\'\\]/g;
var CHARS_ESCAPE_MAP = {
"\0": "\\0",
"\b": "\\b",
"\t": "\\t",
"\n": "\\n",
"\r": "\\r",
"\x1A": "\\Z",
'"': '\\"',
"\'": "\\\'",
"\\": "\\\\"
};
SqlString.escapeId = function escapeId(val, forbidQualified) {
if (Array.isArray(val)) {
var sql = "";
for (var i = 0;i < val.length; i++) {
sql += (i === 0 ? "" : ", ") + SqlString.escapeId(val[i], forbidQualified);
}
return sql;
} else if (forbidQualified) {
return "`" + String(val).replace(ID_GLOBAL_REGEXP, "``") + "`";
} else {
return "`" + String(val).replace(ID_GLOBAL_REGEXP, "``").replace(QUAL_GLOBAL_REGEXP, "`.`") + "`";
}
};
SqlString.escape = function escape(val, stringifyObjects, timeZone) {
if (val === undefined || val === null) {
return "NULL";
}
switch (typeof val) {
case "boolean":
return val ? "true" : "false";
case "number":
return val + "";
case "object":
if (val instanceof Date) {
return SqlString.dateToString(val, timeZone || "local");
} else if (Array.isArray(val)) {
return SqlString.arrayToList(val, timeZone);
} else if (Buffer.isBuffer(val)) {
return SqlString.bufferToString(val);
} else if (typeof val.toSqlString === "function") {
return String(val.toSqlString());
} else if (stringifyObjects) {
return escapeString(val.toString());
} else {
return SqlString.objectToValues(val, timeZone);
}
default:
return escapeString(val);
}
};
SqlString.arrayToList = function arrayToList(array, timeZone) {
var sql = "";
for (var i = 0;i < array.length; i++) {
var val = array[i];
if (Array.isArray(val)) {
sql += (i === 0 ? "" : ", ") + "(" + SqlString.arrayToList(val, timeZone) + ")";
} else {
sql += (i === 0 ? "" : ", ") + SqlString.escape(val, true, timeZone);
}
}
return sql;
};
SqlString.format = function format(sql, values, stringifyObjects, timeZone) {
if (values == null) {
return sql;
}
if (!(values instanceof Array || Array.isArray(values))) {
values = [values];
}
var chunkIndex = 0;
var placeholdersRegex = /\?+/g;
var result = "";
var valuesIndex = 0;
var match;
while (valuesIndex < values.length && (match = placeholdersRegex.exec(sql))) {
var len = match[0].length;
if (len > 2) {
continue;
}
var value = len === 2 ? SqlString.escapeId(values[valuesIndex]) : SqlString.escape(values[valuesIndex], stringifyObjects, timeZone);
result += sql.slice(chunkIndex, match.index) + value;
chunkIndex = placeholdersRegex.lastIndex;
valuesIndex++;
}
if (chunkIndex === 0) {
return sql;
}
if (chunkIndex < sql.length) {
return result + sql.slice(chunkIndex);
}
return result;
};
SqlString.dateToString = function dateToString(date, timeZone) {
var dt = new Date(date);
if (isNaN(dt.getTime())) {
return "NULL";
}
var year;
var month;
var day;
var hour;
var minute;
var second;
var millisecond;
if (timeZone === "local") {
year = dt.getFullYear();
month = dt.getMonth() + 1;
day = dt.getDate();
hour = dt.getHours();
minute = dt.getMinutes();
second = dt.getSeconds();
millisecond = dt.getMilliseconds();
} else {
var tz = convertTimezone(timeZone);
if (tz !== false && tz !== 0) {
dt.setTime(dt.getTime() + tz * 60000);
}
year = dt.getUTCFullYear();
month = dt.getUTCMonth() + 1;
day = dt.getUTCDate();
hour = dt.getUTCHours();
minute = dt.getUTCMinutes();
second = dt.getUTCSeconds();
millisecond = dt.getUTCMilliseconds();
}
var str = zeroPad(year, 4) + "-" + zeroPad(month, 2) + "-" + zeroPad(day, 2) + " " + zeroPad(hour, 2) + ":" + zeroPad(minute, 2) + ":" + zeroPad(second, 2) + "." + zeroPad(millisecond, 3);
return escapeString(str);
};
SqlString.bufferToString = function bufferToString(buffer) {
return "X" + escapeString(buffer.toString("hex"));
};
SqlString.objectToValues = function objectToValues(object, timeZone) {
var sql = "";
for (var key in object) {
var val = object[key];
if (typeof val === "function") {
continue;
}
sql += (sql.length === 0 ? "" : ", ") + SqlString.escapeId(key) + " = " + SqlString.escape(val, true, timeZone);
}
return sql;
};
SqlString.raw = function raw(sql) {
if (typeof sql !== "string") {
throw new TypeError("argument sql must be a string");
}
return {
toSqlString: function toSqlString() {
return sql;
}
};
};
function escapeString(val) {
var chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex = 0;
var escapedVal = "";
var match;
while (match = CHARS_GLOBAL_REGEXP.exec(val)) {
escapedVal += val.slice(chunkIndex, match.index) + CHARS_ESCAPE_MAP[match[0]];
chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex;
}
if (chunkIndex === 0) {
return "'" + val + "'";
}
if (chunkIndex < val.length) {
return "'" + escapedVal + val.slice(chunkIndex) + "'";
}
return "'" + escapedVal + "'";
}
function zeroPad(number, length) {
number = number.toString();
while (number.length < length) {
number = "0" + number;
}
return number;
}
function convertTimezone(tz) {
if (tz === "Z") {
return 0;
}
var m = tz.match(/([\+\-\s])(\d\d):?(\d\d)?/);
if (m) {
return (m[1] === "-" ? -1 : 1) * (parseInt(m[2], 10) + (m[3] ? parseInt(m[3], 10) : 0) / 60) * 60;
}
return false;
}
});
// node_modules/mysql/lib/Connection.js
var require_Connection = __commonJS((exports, module) => {
var Crypto = __require("crypto");
var Events = __require("events");
var Net = __require("net");
var tls = __require("tls");
var ConnectionConfig = require_ConnectionConfig();
var Protocol = require_Protocol();
var SqlString = require_SqlString();
var Query = require_Query();
var Util = __require("util");
module.exports = Connection;
Util.inherits(Connection, Events.EventEmitter);
function Connection(options) {
Events.EventEmitter.call(this);
this.config = options.config;
this._socket = options.socket;
this._protocol = new Protocol({ config: this.config, connection: this });
this._connectCalled = false;
this.state = "disconnected";
this.threadId = null;
}
Connection.createQuery = function createQuery(sql, values, callback) {
if (sql instanceof Query) {
return sql;
}
var cb = callback;
var options = {};
if (typeof sql === "function") {
cb = sql;
} else if (typeof sql === "object") {
options = Object.create(sql);
if (typeof values === "function") {
cb = values;
} else if (values !== undefined) {
Object.defineProperty(options, "values", { value: values });
}
} else {
options.sql = sql;
if (typeof values === "function") {
cb = values;
} else if (values !== undefined) {
options.values = values;
}
}
if (cb !== undefined) {
cb = wrapCallbackInDomain(null, cb);
if (cb === undefined) {
throw new TypeError("argument callback must be a function when provided");
}
}
return new Query(options, cb);
};
Connection.prototype.connect = function connect(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
if (!this._connectCalled) {
this._connectCalled = true;
this._socket = this.config.socketPath ? Net.createConnection(this.config.socketPath) : Net.createConnection(this.config.port, this.config.host);
if (Events.usingDomains) {
this._socket.domain = this.domain;
}
var connection = this;
this._protocol.on("data", function(data) {
connection._socket.write(data);
});
this._socket.on("data", wrapToDomain(connection, function(data) {
connection._protocol.write(data);
}));
this._protocol.on("end", function() {
connection._socket.end();
});
this._socket.on("end", wrapToDomain(connection, function() {
connection._protocol.end();
}));
this._socket.on("error", this._handleNetworkError.bind(this));
this._socket.on("connect", this._handleProtocolConnect.bind(this));
this._protocol.on("handshake", this._handleProtocolHandshake.bind(this));
this._protocol.on("initialize", this._handleProtocolInitialize.bind(this));
this._protocol.on("unhandledError", this._handleProtocolError.bind(this));
this._protocol.on("drain", this._handleProtocolDrain.bind(this));
this._protocol.on("end", this._handleProtocolEnd.bind(this));
this._protocol.on("enqueue", this._handleProtocolEnqueue.bind(this));
if (this.config.connectTimeout) {
var handleConnectTimeout = this._handleConnectTimeout.bind(this);
this._socket.setTimeout(this.config.connectTimeout, handleConnectTimeout);
this._socket.once("connect", function() {
this.setTimeout(0, handleConnectTimeout);
});
}
}
this._protocol.handshake(options, wrapCallbackInDomain(this, callback));
};
Connection.prototype.changeUser = function changeUser(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
this._implyConnect();
var charsetNumber = options.charset ? ConnectionConfig.getCharsetNumber(options.charset) : this.config.charsetNumber;
return this._protocol.changeUser({
user: options.user || this.config.user,
password: options.password || this.config.password,
database: options.database || this.config.database,
timeout: options.timeout,
charsetNumber,
currentConfig: this.config
}, wrapCallbackInDomain(this, callback));
};
Connection.prototype.beginTransaction = function beginTransaction(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
options = options || {};
options.sql = "START TRANSACTION";
options.values = null;
return this.query(options, callback);
};
Connection.prototype.commit = function commit(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
options = options || {};
options.sql = "COMMIT";
options.values = null;
return this.query(options, callback);
};
Connection.prototype.rollback = function rollback(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
options = options || {};
options.sql = "ROLLBACK";
options.values = null;
return this.query(options, callback);
};
Connection.prototype.query = function query(sql, values, cb) {
var query = Connection.createQuery(sql, values, cb);
query._connection = this;
if (!(typeof sql === "object" && ("typeCast" in sql))) {
query.typeCast = this.config.typeCast;
}
if (query.sql) {
query.sql = this.format(query.sql, query.values);
}
if (query._callback) {
query._callback = wrapCallbackInDomain(this, query._callback);
}
this._implyConnect();
return this._protocol._enqueue(query);
};
Connection.prototype.ping = function ping(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
this._implyConnect();
this._protocol.ping(options, wrapCallbackInDomain(this, callback));
};
Connection.prototype.statistics = function statistics(options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = {};
}
this._implyConnect();
this._protocol.stats(options, wrapCallbackInDomain(this, callback));
};
Connection.prototype.end = function end(options, callback) {
var cb = callback;
var opts = options;
if (!callback && typeof options === "function") {
cb = options;
opts = null;
}
opts = Object.create(opts || null);
if (opts.timeout === undefined) {
opts.timeout = 30000;
}
this._implyConnect();
this._protocol.quit(opts, wrapCallbackInDomain(this, cb));
};
Connection.prototype.destroy = function() {
this.state = "disconnected";
this._implyConnect();
this._socket.destroy();
this._protocol.destroy();
};
Connection.prototype.pause = function() {
this._socket.pause();
this._protocol.pause();
};
Connection.prototype.resume = function() {
this._socket.resume();
this._protocol.resume();
};
Connection.prototype.escape = function(value) {
return SqlString.escape(value, false, this.config.timezone);
};
Connection.prototype.escapeId = function escapeId(value) {
return SqlString.escapeId(value, false);
};
Connection.prototype.format = function(sql, values) {
if (typeof this.config.queryFormat === "function") {
return this.config.queryFormat.call(this, sql, values, this.config.timezone);
}
return SqlString.format(sql, values, this.config.stringifyObjects, this.config.timezone);
};
if (tls.TLSSocket) {
Connection.prototype._startTLS = function _startTLS(onSecure) {
var connection = this;
createSecureContext(this.config, function(err, secureContext) {
if (err) {
onSecure(err);
return;
}
connection._socket.removeAllListeners("data");
connection._protocol.removeAllListeners("data");
var rejectUnauthorized = connection.config.ssl.rejectUnauthorized;
var secureEstablished = false;
var secureSocket = new tls.TLSSocket(connection._socket, {
rejectUnauthorized,
requestCert: true,
secureContext,
isServer: false
});
secureSocket.on("_tlsError", function(err2) {
if (secureEstablished) {
connection._handleNetworkError(err2);
} else {
onSecure(err2);
}
});
secureSocket.pipe(connection._protocol);
connection._protocol.on("data", function(data) {
secureSocket.write(data);
});
secureSocket.on("secure", function() {
secureEstablished = true;
onSecure(rejectUnauthorized ? this.ssl.verifyError() : null);
});
secureSocket._start();
});
};
} else {
Connection.prototype._startTLS = function _startTLS(onSecure) {
var connection = this;
var credentials = Crypto.createCredentials({
ca: this.config.ssl.ca,
cert: this.config.ssl.cert,
ciphers: this.config.ssl.ciphers,
key: this.config.ssl.key,
passphrase: this.config.ssl.passphrase
});
var rejectUnauthorized = this.config.ssl.rejectUnauthorized;
var secureEstablished = false;
var securePair = tls.createSecurePair(credentials, false, true, rejectUnauthorized);
securePair.on("error", function(err) {
if (secureEstablished) {
connection._handleNetworkError(err);
} else {
onSecure(err);
}
});
this._socket.removeAllListeners("data");
this._protocol.removeAllListeners("data");
securePair.encrypted.pipe(this._socket);
this._socket.on("data", function(data) {
securePair.encrypted.write(data);
});
securePair.cleartext.pipe(this._protocol);
this._protocol.on("data", function(data) {
securePair.cleartext.write(data);
});
securePair.on("secure", function() {
secureEstablished = true;
if (!rejectUnauthorized) {
onSecure();
return;
}
var verifyError = this.ssl.verifyError();
var err = verifyError;
if (typeof err === "string") {
err = new Error(verifyError);
err.code = verifyError;
}
onSecure(err);
});
securePair._cycle = securePair.cycle;
securePair.cycle = function cycle() {
if (this.ssl && this.ssl.error) {
this.error();
}
return this._cycle.apply(this, arguments);
};
};
}
Connection.prototype._handleConnectTimeout = function() {
if (this._socket) {
this._socket.setTimeout(0);
this._socket.destroy();
}
var err = new Error("connect ETIMEDOUT");
err.errorno = "ETIMEDOUT";
err.code = "ETIMEDOUT";
err.syscall = "connect";
this._handleNetworkError(err);
};
Connection.prototype._handleNetworkError = function(err) {
this._protocol.handleNetworkError(err);
};
Connection.prototype._handleProtocolError = function(err) {
this.state = "protocol_error";
this.emit("error", err);
};
Connection.prototype._handleProtocolDrain = function() {
this.emit("drain");
};
Connection.prototype._handleProtocolConnect = function() {
this.state = "connected";
this.emit("connect");
};
Connection.prototype._handleProtocolHandshake = function _handleProtocolHandshake() {
this.state = "authenticated";
};
Connection.prototype._handleProtocolInitialize = function _handleProtocolInitialize(packet) {
this.threadId = packet.threadId;
};
Connection.prototype._handleProtocolEnd = function(err) {
this.state = "disconnected";
this.emit("end", err);
};
Connection.prototype._handleProtocolEnqueue = function _handleProtocolEnqueue(sequence) {
this.emit("enqueue", sequence);
};
Connection.prototype._implyConnect = function() {
if (!this._connectCalled) {
this.connect();
}
};
function createSecureContext(config, cb) {
var context = null;
var error = null;
try {
context = tls.createSecureContext({
ca: config.ssl.ca,
cert: config.ssl.cert,
ciphers: config.ssl.ciphers,
key: config.ssl.key,
passphrase: config.ssl.passphrase
});
} catch (err) {
error = err;
}
cb(error, context);
}
function unwrapFromDomain(fn) {
return function() {
var domains = [];
var ret;
while (process.domain) {
domains.shift(process.domain);
process.domain.exit();
}
try {
ret = fn.apply(this, arguments);
} finally {
for (var i = 0;i < domains.length; i++) {
domains[i].enter();
}
}
return ret;
};
}
function wrapCallbackInDomain(ee, fn) {
if (typeof fn !== "function") {
return;
}
if (fn.domain) {
return fn;
}
var domain = process.domain;
if (domain) {
return domain.bind(fn);
} else if (ee) {
return unwrapFromDomain(wrapToDomain(ee, fn));
} else {
return fn;
}
}
function wrapToDomain(ee, fn) {
return function() {
if (Events.usingDomains && ee.domain) {
ee.domain.enter();
fn.apply(this, arguments);
ee.domain.exit();
} else {
fn.apply(this, arguments);
}
};
}
});
// node_modules/mysql/lib/PoolConnection.js
var require_PoolConnection = __commonJS((exports, module) => {
var inherits = __require("util").inherits;
var Connection = require_Connection();
var Events = __require("events");
module.exports = PoolConnection;
inherits(PoolConnection, Connection);
function PoolConnection(pool, options) {
Connection.call(this, options);
this._pool = pool;
if (Events.usingDomains) {
this.domain = pool.domain;
}
this.on("end", this._removeFromPool);
this.on("error", function(err) {
if (err.fatal) {
this._removeFromPool();
}
});
}
PoolConnection.prototype.release = function release() {
var pool = this._pool;
if (!pool || pool._closed) {
return;
}
return pool.releaseConnection(this);
};
PoolConnection.prototype._realEnd = Connection.prototype.end;
PoolConnection.prototype.end = function() {
console.warn("Calling conn.end() to release a pooled connection is " + "deprecated. In next version calling conn.end() will be " + "restored to default conn.end() behavior. Use " + "conn.release() instead.");
this.release();
};
PoolConnection.prototype.destroy = function() {
Connection.prototype.destroy.apply(this, arguments);
this._removeFromPool(this);
};
PoolConnection.prototype._removeFromPool = function _removeFromPool() {
if (!this._pool || this._pool._closed) {
return;
}
var pool = this._pool;
this._pool = null;
pool._purgeConnection(this);
};
});
// node_modules/mysql/lib/Pool.js
var require_Pool = __commonJS((exports, module) => {
var mysql = require_mysql();
var Connection = require_Connection();
var EventEmitter = __require("events").EventEmitter;
var Util = __require("util");
var PoolConnection = require_PoolConnection();
module.exports = Pool;
Util.inherits(Pool, EventEmitter);
function Pool(options) {
EventEmitter.call(this);
this.config = options.config;
this.config.connectionConfig.pool = this;
this._acquiringConnections = [];
this._allConnections = [];
this._freeConnections = [];
this._connectionQueue = [];
this._closed = false;
}
Pool.prototype.getConnection = function(cb) {
if (this._closed) {
var err = new Error("Pool is closed.");
err.code = "POOL_CLOSED";
process.nextTick(function() {
cb(err);
});
return;
}
var connection;
var pool = this;
if (this._freeConnections.length > 0) {
connection = this._freeConnections.shift();
this.acquireConnection(connection, cb);
return;
}
if (this.config.connectionLimit === 0 || this._allConnections.length < this.config.connectionLimit) {
connection = new PoolConnection(this, { config: this.config.newConnectionConfig() });
this._acquiringConnections.push(connection);
this._allConnections.push(connection);
connection.connect({ timeout: this.config.acquireTimeout }, function onConnect(err2) {
spliceConnection(pool._acquiringConnections, connection);
if (pool._closed) {
err2 = new Error("Pool is closed.");
err2.code = "POOL_CLOSED";
}
if (err2) {
pool._purgeConnection(connection);
cb(err2);
return;
}
pool.emit("connection", connection);
pool.emit("acquire", connection);
cb(null, connection);
});
return;
}
if (!this.config.waitForConnections) {
process.nextTick(function() {
var err2 = new Error("No connections available.");
err2.code = "POOL_CONNLIMIT";
cb(err2);
});
return;
}
this._enqueueCallback(cb);
};
Pool.prototype.acquireConnection = function acquireConnection(connection, cb) {
if (connection._pool !== this) {
throw new Error("Connection acquired from wrong pool.");
}
var changeUser = this._needsChangeUser(connection);
var pool = this;
this._acquiringConnections.push(connection);
function onOperationComplete(err) {
spliceConnection(pool._acquiringConnections, connection);
if (pool._closed) {
err = new Error("Pool is closed.");
err.code = "POOL_CLOSED";
}
if (err) {
pool._connectionQueue.unshift(cb);
pool._purgeConnection(connection);
return;
}
if (changeUser) {
pool.emit("connection", connection);
}
pool.emit("acquire", connection);
cb(null, connection);
}
if (changeUser) {
connection.config = this.config.newConnectionConfig();
connection.changeUser({ timeout: this.config.acquireTimeout }, onOperationComplete);
} else {
connection.ping({ timeout: this.config.acquireTimeout }, onOperationComplete);
}
};
Pool.prototype.releaseConnection = function releaseConnection(connection) {
if (this._acquiringConnections.indexOf(connection) !== -1) {
return;
}
if (connection._pool) {
if (connection._pool !== this) {
throw new Error("Connection released to wrong pool");
}
if (this._freeConnections.indexOf(connection) !== -1) {
throw new Error("Connection already released");
} else {
this._freeConnections.push(connection);
this.emit("release", connection);
}
}
if (this._closed) {
this._connectionQueue.splice(0).forEach(function(cb) {
var err = new Error("Pool is closed.");
err.code = "POOL_CLOSED";
process.nextTick(function() {
cb(err);
});
});
} else if (this._connectionQueue.length) {
this.getConnection(this._connectionQueue.shift());
}
};
Pool.prototype.end = function(cb) {
this._closed = true;
if (typeof cb !== "function") {
cb = function(err) {
if (err)
throw err;
};
}
var calledBack = false;
var waitingClose = 0;
function onEnd(err) {
if (!calledBack && (err || --waitingClose <= 0)) {
calledBack = true;
cb(err);
}
}
while (this._allConnections.length !== 0) {
waitingClose++;
this._purgeConnection(this._allConnections[0], onEnd);
}
if (waitingClose === 0) {
process.nextTick(onEnd);
}
};
Pool.prototype.query = function(sql, values, cb) {
var query = Connection.createQuery(sql, values, cb);
if (!(typeof sql === "object" && ("typeCast" in sql))) {
query.typeCast = this.config.connectionConfig.typeCast;
}
if (this.config.connectionConfig.trace) {
query._callSite = new Error;
}
this.getConnection(function(err, conn) {
if (err) {
query.on("error", function() {
});
query.end(err);
return;
}
query.once("end", function() {
conn.release();
});
conn.query(query);
});
return query;
};
Pool.prototype._enqueueCallback = function _enqueueCallback(callback) {
if (this.config.queueLimit && this._connectionQueue.length >= this.config.queueLimit) {
process.nextTick(function() {
var err = new Error("Queue limit reached.");
err.code = "POOL_ENQUEUELIMIT";
callback(err);
});
return;
}
var cb = process.domain ? process.domain.bind(callback) : callback;
this._connectionQueue.push(cb);
this.emit("enqueue");
};
Pool.prototype._needsChangeUser = function _needsChangeUser(connection) {
var connConfig = connection.config;
var poolConfig = this.config.connectionConfig;
return connConfig.user !== poolConfig.user || connConfig.database !== poolConfig.database || connConfig.password !== poolConfig.password || connConfig.charsetNumber !== poolConfig.charsetNumber;
};
Pool.prototype._purgeConnection = function _purgeConnection(connection, callback) {
var cb = callback || function() {
};
if (connection.state === "disconnected") {
connection.destroy();
}
this._removeConnection(connection);
if (connection.state !== "disconnected" && !connection._protocol._quitSequence) {
connection._realEnd(cb);
return;
}
process.nextTick(cb);
};
Pool.prototype._removeConnection = function(connection) {
connection._pool = null;
spliceConnection(this._allConnections, connection);
spliceConnection(this._freeConnections, connection);
this.releaseConnection(connection);
};
Pool.prototype.escape = function(value) {
return mysql.escape(value, this.config.connectionConfig.stringifyObjects, this.config.connectionConfig.timezone);
};
Pool.prototype.escapeId = function escapeId(value) {
return mysql.escapeId(value, false);
};
function spliceConnection(array, connection) {
var index;
if ((index = array.indexOf(connection)) !== -1) {
array.splice(index, 1);
}
}
});
// node_modules/mysql/lib/PoolConfig.js
var require_PoolConfig = __commonJS((exports, module) => {
var ConnectionConfig = require_ConnectionConfig();
module.exports = PoolConfig;
function PoolConfig(options) {
if (typeof options === "string") {
options = ConnectionConfig.parseUrl(options);
}
this.acquireTimeout = options.acquireTimeout === undefined ? 10 * 1000 : Number(options.acquireTimeout);
this.connectionConfig = new ConnectionConfig(options);
this.waitForConnections = options.waitForConnections === undefined ? true : Boolean(options.waitForConnections);
this.connectionLimit = options.connectionLimit === undefined ? 10 : Number(options.connectionLimit);
this.queueLimit = options.queueLimit === undefined ? 0 : Number(options.queueLimit);
}
PoolConfig.prototype.newConnectionConfig = function newConnectionConfig() {
var connectionConfig = new ConnectionConfig(this.connectionConfig);
connectionConfig.clientFlags = this.connectionConfig.clientFlags;
connectionConfig.maxPacketSize = this.connectionConfig.maxPacketSize;
return connectionConfig;
};
});
// node_modules/mysql/lib/PoolSelector.js
var require_PoolSelector = __commonJS((exports, module) => {
var PoolSelector = module.exports = {};
PoolSelector.RR = function PoolSelectorRoundRobin() {
var index = 0;
return function(clusterIds) {
if (index >= clusterIds.length) {
index = 0;
}
var clusterId = clusterIds[index++];
return clusterId;
};
};
PoolSelector.RANDOM = function PoolSelectorRandom() {
return function(clusterIds) {
return clusterIds[Math.floor(Math.random() * clusterIds.length)];
};
};
PoolSelector.ORDER = function PoolSelectorOrder() {
return function(clusterIds) {
return clusterIds[0];
};
};
});
// node_modules/mysql/lib/PoolNamespace.js
var require_PoolNamespace = __commonJS((exports, module) => {
var Connection = require_Connection();
var PoolSelector = require_PoolSelector();
module.exports = PoolNamespace;
function PoolNamespace(cluster, pattern, selector) {
this._cluster = cluster;
this._pattern = pattern;
this._selector = new PoolSelector[selector];
}
PoolNamespace.prototype.getConnection = function(cb) {
var clusterNode = this._getClusterNode();
var cluster = this._cluster;
var namespace = this;
if (clusterNode === null) {
var err = null;
if (this._cluster._findNodeIds(this._pattern, true).length !== 0) {
err = new Error("Pool does not have online node.");
err.code = "POOL_NONEONLINE";
} else {
err = new Error("Pool does not exist.");
err.code = "POOL_NOEXIST";
}
cb(err);
return;
}
cluster._getConnection(clusterNode, function(err2, connection) {
var retry = err2 && cluster._canRetry && cluster._findNodeIds(namespace._pattern).length !== 0;
if (retry) {
namespace.getConnection(cb);
return;
}
if (err2) {
cb(err2);
return;
}
cb(null, connection);
});
};
PoolNamespace.prototype.query = function(sql, values, cb) {
var cluster = this._cluster;
var clusterNode = this._getClusterNode();
var query = Connection.createQuery(sql, values, cb);
var namespace = this;
if (clusterNode === null) {
var err = null;
if (this._cluster._findNodeIds(this._pattern, true).length !== 0) {
err = new Error("Pool does not have online node.");
err.code = "POOL_NONEONLINE";
} else {
err = new Error("Pool does not exist.");
err.code = "POOL_NOEXIST";
}
process.nextTick(function() {
query.on("error", function() {
});
query.end(err);
});
return query;
}
if (!(typeof sql === "object" && ("typeCast" in sql))) {
query.typeCast = clusterNode.pool.config.connectionConfig.typeCast;
}
if (clusterNode.pool.config.connectionConfig.trace) {
query._callSite = new Error;
}
cluster._getConnection(clusterNode, function(err2, conn) {
var retry = err2 && cluster._canRetry && cluster._findNodeIds(namespace._pattern).length !== 0;
if (retry) {
namespace.query(query);
return;
}
if (err2) {
query.on("error", function() {
});
query.end(err2);
return;
}
query.once("end", function() {
conn.release();
});
conn.query(query);
});
return query;
};
PoolNamespace.prototype._getClusterNode = function _getClusterNode() {
var foundNodeIds = this._cluster._findNodeIds(this._pattern);
var nodeId;
switch (foundNodeIds.length) {
case 0:
nodeId = null;
break;
case 1:
nodeId = foundNodeIds[0];
break;
default:
nodeId = this._selector(foundNodeIds);
break;
}
return nodeId !== null ? this._cluster._getNode(nodeId) : null;
};
});
// node_modules/mysql/lib/PoolCluster.js
var require_PoolCluster = __commonJS((exports, module) => {
var Pool = require_Pool();
var PoolConfig = require_PoolConfig();
var PoolNamespace = require_PoolNamespace();
var PoolSelector = require_PoolSelector();
var Util = __require("util");
var EventEmitter = __require("events").EventEmitter;
module.exports = PoolCluster;
function PoolCluster(config) {
EventEmitter.call(this);
config = config || {};
this._canRetry = typeof config.canRetry === "undefined" ? true : config.canRetry;
this._defaultSelector = config.defaultSelector || "RR";
this._removeNodeErrorCount = config.removeNodeErrorCount || 5;
this._restoreNodeTimeout = config.restoreNodeTimeout || 0;
this._closed = false;
this._findCaches = Object.create(null);
this._lastId = 0;
this._namespaces = Object.create(null);
this._nodes = Object.create(null);
}
Util.inherits(PoolCluster, EventEmitter);
PoolCluster.prototype.add = function add(id, config) {
if (this._closed) {
throw new Error("PoolCluster is closed.");
}
var nodeId = typeof id === "object" ? "CLUSTER::" + ++this._lastId : String(id);
if (this._nodes[nodeId] !== undefined) {
throw new Error('Node ID "' + nodeId + '" is already defined in PoolCluster.');
}
var poolConfig = typeof id !== "object" ? new PoolConfig(config) : new PoolConfig(id);
this._nodes[nodeId] = {
id: nodeId,
errorCount: 0,
pool: new Pool({ config: poolConfig }),
_offlineUntil: 0
};
this._clearFindCaches();
};
PoolCluster.prototype.end = function end(callback) {
var cb = callback !== undefined ? callback : _cb;
if (typeof cb !== "function") {
throw TypeError("callback argument must be a function");
}
if (this._closed) {
process.nextTick(cb);
return;
}
this._closed = true;
var calledBack = false;
var nodeIds = Object.keys(this._nodes);
var waitingClose = 0;
function onEnd(err) {
if (!calledBack && (err || --waitingClose <= 0)) {
calledBack = true;
cb(err);
}
}
for (var i = 0;i < nodeIds.length; i++) {
var nodeId = nodeIds[i];
var node = this._nodes[nodeId];
waitingClose++;
node.pool.end(onEnd);
}
if (waitingClose === 0) {
process.nextTick(onEnd);
}
};
PoolCluster.prototype.of = function(pattern, selector) {
pattern = pattern || "*";
selector = selector || this._defaultSelector;
selector = selector.toUpperCase();
if (typeof PoolSelector[selector] === "undefined") {
selector = this._defaultSelector;
}
var key = pattern + selector;
if (typeof this._namespaces[key] === "undefined") {
this._namespaces[key] = new PoolNamespace(this, pattern, selector);
}
return this._namespaces[key];
};
PoolCluster.prototype.remove = function remove(pattern) {
var foundNodeIds = this._findNodeIds(pattern, true);
for (var i = 0;i < foundNodeIds.length; i++) {
var node = this._getNode(foundNodeIds[i]);
if (node) {
this._removeNode(node);
}
}
};
PoolCluster.prototype.getConnection = function(pattern, selector, cb) {
var namespace;
if (typeof pattern === "function") {
cb = pattern;
namespace = this.of();
} else {
if (typeof selector === "function") {
cb = selector;
selector = this._defaultSelector;
}
namespace = this.of(pattern, selector);
}
namespace.getConnection(cb);
};
PoolCluster.prototype._clearFindCaches = function _clearFindCaches() {
this._findCaches = Object.create(null);
};
PoolCluster.prototype._decreaseErrorCount = function _decreaseErrorCount(node) {
var errorCount = node.errorCount;
if (errorCount > this._removeNodeErrorCount) {
errorCount = this._removeNodeErrorCount;
}
if (errorCount < 1) {
errorCount = 1;
}
node.errorCount = errorCount - 1;
if (node._offlineUntil) {
node._offlineUntil = 0;
this.emit("online", node.id);
}
};
PoolCluster.prototype._findNodeIds = function _findNodeIds(pattern, includeOffline) {
var currentTime = 0;
var foundNodeIds = this._findCaches[pattern];
if (foundNodeIds === undefined) {
var expression = patternRegExp(pattern);
var nodeIds = Object.keys(this._nodes);
foundNodeIds = nodeIds.filter(function(id) {
return id.match(expression);
});
this._findCaches[pattern] = foundNodeIds;
}
if (includeOffline) {
return foundNodeIds;
}
return foundNodeIds.filter(function(nodeId) {
var node = this._getNode(nodeId);
if (!node._offlineUntil) {
return true;
}
if (!currentTime) {
currentTime = getMonotonicMilliseconds();
}
return node._offlineUntil <= currentTime;
}, this);
};
PoolCluster.prototype._getNode = function _getNode(id) {
return this._nodes[id] || null;
};
PoolCluster.prototype._increaseErrorCount = function _increaseErrorCount(node) {
var errorCount = ++node.errorCount;
if (this._removeNodeErrorCount > errorCount) {
return;
}
if (this._restoreNodeTimeout > 0) {
node._offlineUntil = getMonotonicMilliseconds() + this._restoreNodeTimeout;
this.emit("offline", node.id);
return;
}
this._removeNode(node);
this.emit("remove", node.id);
};
PoolCluster.prototype._getConnection = function(node, cb) {
var self2 = this;
node.pool.getConnection(function(err, connection) {
if (err) {
self2._increaseErrorCount(node);
cb(err);
return;
} else {
self2._decreaseErrorCount(node);
}
connection._clusterId = node.id;
cb(null, connection);
});
};
PoolCluster.prototype._removeNode = function _removeNode(node) {
delete this._nodes[node.id];
this._clearFindCaches();
node.pool.end(_noop);
};
function getMonotonicMilliseconds() {
var ms;
if (typeof process.hrtime === "function") {
ms = process.hrtime();
ms = ms[0] * 1000 + ms[1] * 0.000001;
} else {
ms = process.uptime() * 1000;
}
return Math.floor(ms);
}
function isRegExp(val) {
return typeof val === "object" && Object.prototype.toString.call(val) === "[object RegExp]";
}
function patternRegExp(pattern) {
if (isRegExp(pattern)) {
return pattern;
}
var source = pattern.replace(/([.+?^=!:${}()|\[\]\/\\])/g, "\\$1").replace(/\*/g, ".*");
return new RegExp("^" + source + "$");
}
function _cb(err) {
if (err) {
throw err;
}
}
function _noop() {
}
});
// node_modules/mysql/index.js
var require_mysql = __commonJS((exports) => {
var Classes = Object.create(null);
exports.createConnection = function createConnection(config) {
var Connection = loadClass("Connection");
var ConnectionConfig = loadClass("ConnectionConfig");
return new Connection({ config: new ConnectionConfig(config) });
};
exports.createPool = function createPool(config) {
var Pool = loadClass("Pool");
var PoolConfig = loadClass("PoolConfig");
return new Pool({ config: new PoolConfig(config) });
};
exports.createPoolCluster = function createPoolCluster(config) {
var PoolCluster = loadClass("PoolCluster");
return new PoolCluster(config);
};
exports.createQuery = function createQuery(sql, values, callback) {
var Connection = loadClass("Connection");
return Connection.createQuery(sql, values, callback);
};
exports.escape = function escape(value, stringifyObjects, timeZone) {
var SqlString = loadClass("SqlString");
return SqlString.escape(value, stringifyObjects, timeZone);
};
exports.escapeId = function escapeId(value, forbidQualified) {
var SqlString = loadClass("SqlString");
return SqlString.escapeId(value, forbidQualified);
};
exports.format = function format(sql, values, stringifyObjects, timeZone) {
var SqlString = loadClass("SqlString");
return SqlString.format(sql, values, stringifyObjects, timeZone);
};
exports.raw = function raw(sql) {
var SqlString = loadClass("SqlString");
return SqlString.raw(sql);
};
Object.defineProperty(exports, "Types", {
get: loadClass.bind(null, "Types")
});
function loadClass(className) {
var Class = Classes[className];
if (Class !== undefined) {
return Class;
}
switch (className) {
case "Connection":
Class = require_Connection();
break;
case "ConnectionConfig":
Class = require_ConnectionConfig();
break;
case "Pool":
Class = require_Pool();
break;
case "PoolCluster":
Class = require_PoolCluster();
break;
case "PoolConfig":
Class = require_PoolConfig();
break;
case "SqlString":
Class = require_SqlString();
break;
case "Types":
Class = require_types();
break;
default:
throw new Error("Cannot find class \'" + className + "\'");
}
Classes[className] = Class;
return Class;
}
});
// node_modules/serverless-mysql/index.js
var require_serverless_mysql = __commonJS((exports, module) => {
var NodeURL = __require("url");
module.exports = (params) => {
let client = null;
let counter = 0;
let errors = 0;
let retries = 0;
let _cfg = {};
let _maxConns = { updated: 0 };
let _usedConns = { updated: 0 };
const tooManyConnsErrors = [
"ER_TOO_MANY_USER_CONNECTIONS",
"ER_CON_COUNT_ERROR",
"ER_USER_LIMIT_REACHED",
"ER_OUT_OF_RESOURCES",
"PROTOCOL_CONNECTION_LOST",
"PROTOCOL_SEQUENCE_TIMEOUT",
"ETIMEDOUT"
];
let MYSQL, manageConns, cap, base, maxRetries, connUtilization, backoff, zombieMinTimeout, zombieMaxTimeout, maxConnsFreq, usedConnsFreq, onConnect, onConnectError, onRetry, onClose, onError, onKill, onKillError, PromiseLibrary;
const getCounter = () => counter;
const incCounter = () => counter++;
const resetCounter = () => counter = 0;
const getClient = () => client;
const resetClient = () => client = null;
const resetRetries = () => retries = 0;
const getErrorCount = () => errors;
const getConfig = () => _cfg;
const config = (args) => {
if (typeof args === "string") {
return Object.assign(_cfg, uriToConnectionConfig(args));
}
return Object.assign(_cfg, args);
};
const delay = (ms) => new PromiseLibrary((res) => setTimeout(res, ms));
const randRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
const fullJitter = () => randRange(0, Math.min(cap, base * 2 ** retries));
const decorrelatedJitter = (sleep = 0) => Math.min(cap, randRange(base, sleep * 3));
const uriToConnectionConfig = (connectionString) => {
let uri = undefined;
try {
uri = new NodeURL.URL(connectionString);
} catch (error) {
throw new Error("Invalid data source URL provided");
}
const extraFields = {};
for (const [name, value] of uri.searchParams) {
extraFields[name] = value;
}
const database = uri.pathname && uri.pathname.startsWith("/") ? uri.pathname.slice(1) : undefined;
const connectionFields = {
host: uri.hostname ? uri.hostname : undefined,
user: uri.username ? uri.username : undefined,
port: uri.port ? Number(uri.port) : undefined,
password: uri.password ? uri.password : undefined,
database
};
return Object.assign(connectionFields, extraFields);
};
const connect = async (wait) => {
try {
await _connect();
} catch (e) {
if (tooManyConnsErrors.includes(e.code) && retries < maxRetries) {
retries++;
wait = Number.isInteger(wait) ? wait : 0;
let sleep = backoff === "decorrelated" ? decorrelatedJitter(wait) : typeof backoff === "function" ? backoff(wait, retries) : fullJitter();
onRetry(e, retries, sleep, typeof backoff === "function" ? "custom" : backoff);
await delay(sleep).then(() => connect(sleep));
} else {
onConnectError(e);
throw new Error(e);
}
}
};
const _connect = () => {
if (client === null) {
resetCounter();
return new PromiseLibrary((resolve, reject) => {
client = MYSQL.createConnection(_cfg);
client.connect(function(err) {
if (err) {
resetClient();
reject(err);
} else {
resetRetries();
onConnect(client);
return resolve(true);
}
});
client.on("error", async (err) => {
errors++;
resetClient();
resetCounter();
onError(err);
});
});
} else {
return PromiseLibrary.resolve();
}
};
const end = async () => {
if (client !== null && manageConns) {
incCounter();
let maxConns = await getMaxConnections();
let usedConns = await getTotalConnections();
if (usedConns.total / maxConns.total > connUtilization) {
let timeout = Math.min(Math.max(usedConns.maxAge, zombieMinTimeout), zombieMaxTimeout);
let killedZombies = timeout <= usedConns.maxAge ? await killZombieConnections(timeout) : 0;
if (killedZombies === 0) {
quit();
}
} else if (usedConns.maxAge > zombieMaxTimeout) {
await killZombieConnections(zombieMaxTimeout);
}
}
};
const quit = () => {
if (client !== null) {
client.end();
resetClient();
resetCounter();
onClose();
}
};
const query = async function(...args) {
await connect();
return new PromiseLibrary((resolve, reject) => {
if (client !== null) {
if (this && this.rollback && args.length === 0) {
return resolve([]);
}
client.query(...args, async (err, results) => {
if (err && err.code === "PROTOCOL_SEQUENCE_TIMEOUT") {
client.destroy();
resetClient();
reject(err);
} else if (err && (/^PROTOCOL_ENQUEUE_AFTER_/.test(err.code) || err.code === "PROTOCOL_CONNECTION_LOST" || err.code === "EPIPE" || err.code === "ECONNRESET")) {
resetClient();
return resolve(query(...args));
} else if (err) {
if (this && this.rollback) {
await query("ROLLBACK");
this.rollback(err);
}
reject(err);
}
return resolve(results);
});
}
});
};
const getMaxConnections = async () => {
if (Date.now() - _maxConns.updated > maxConnsFreq) {
let results = await query(`SELECT IF(@@max_user_connections > 0,
LEAST(@@max_user_connections,@@max_connections),
@@max_connections) AS total,
IF(@@max_user_connections > 0,true,false) AS userLimit`);
_maxConns = {
total: results[0].total || 0,
userLimit: results[0].userLimit === 1 ? true : false,
updated: Date.now()
};
}
return _maxConns;
};
const getTotalConnections = async () => {
if (Date.now() - _usedConns.updated > usedConnsFreq) {
let results = await query(`SELECT COUNT(ID) as total, MAX(time) as max_age
FROM information_schema.processlist
WHERE (user = ? AND @@max_user_connections > 0) OR true`, [_cfg.user]);
_usedConns = {
total: results[0].total || 0,
maxAge: results[0].max_age || 0,
updated: Date.now()
};
}
return _usedConns;
};
const killZombieConnections = async (timeout) => {
let killedZombies = 0;
let zombies = await query(`SELECT ID,time FROM information_schema.processlist
WHERE command = 'Sleep' AND time >= ? AND user = ?
ORDER BY time DESC`, [!isNaN(timeout) ? timeout : 60 * 15, _cfg.user]);
for (let i = 0;i < zombies.length; i++) {
try {
await query("KILL ?", zombies[i].ID);
onKill(zombies[i]);
killedZombies++;
} catch (e) {
onKillError(e);
}
}
return killedZombies;
};
const transaction = () => {
let queries = [];
let rollback = () => {
};
return {
query: function(...args) {
if (typeof args[0] === "function") {
queries.push(args[0]);
} else {
queries.push(() => [...args]);
}
return this;
},
rollback: function(fn) {
if (typeof fn === "function") {
rollback = fn;
}
return this;
},
commit: async function() {
return await commit(queries, rollback);
}
};
};
const commit = async (queries, rollback) => {
let results = [];
await query("START TRANSACTION");
for (let i = 0;i < queries.length; i++) {
let result = await query.apply({ rollback }, queries[i](results[results.length - 1], results));
results.push(result);
}
await query("COMMIT");
return results;
};
const cfg = typeof params === "object" && !Array.isArray(params) ? params : {};
MYSQL = cfg.library || require_mysql();
PromiseLibrary = cfg.promise || Promise;
manageConns = cfg.manageConns === false ? false : true;
cap = Number.isInteger(cfg.cap) ? cfg.cap : 100;
base = Number.isInteger(cfg.base) ? cfg.base : 2;
maxRetries = Number.isInteger(cfg.maxRetries) ? cfg.maxRetries : 50;
backoff = typeof cfg.backoff === "function" ? cfg.backoff : cfg.backoff && ["full", "decorrelated"].includes(cfg.backoff.toLowerCase()) ? cfg.backoff.toLowerCase() : "full";
connUtilization = !isNaN(cfg.connUtilization) ? cfg.connUtilization : 0.8;
zombieMinTimeout = Number.isInteger(cfg.zombieMinTimeout) ? cfg.zombieMinTimeout : 3;
zombieMaxTimeout = Number.isInteger(cfg.zombieMaxTimeout) ? cfg.zombieMaxTimeout : 60 * 15;
maxConnsFreq = Number.isInteger(cfg.maxConnsFreq) ? cfg.maxConnsFreq : 15 * 1000;
usedConnsFreq = Number.isInteger(cfg.usedConnsFreq) ? cfg.usedConnsFreq : 0;
onConnect = typeof cfg.onConnect === "function" ? cfg.onConnect : () => {
};
onConnectError = typeof cfg.onConnectError === "function" ? cfg.onConnectError : () => {
};
onRetry = typeof cfg.onRetry === "function" ? cfg.onRetry : () => {
};
onClose = typeof cfg.onClose === "function" ? cfg.onClose : () => {
};
onError = typeof cfg.onError === "function" ? cfg.onError : () => {
};
onKill = typeof cfg.onKill === "function" ? cfg.onKill : () => {
};
onKillError = typeof cfg.onKillError === "function" ? cfg.onKillError : () => {
};
let connCfg = {};
if (typeof cfg.config === "object" && !Array.isArray(cfg.config)) {
connCfg = cfg.config;
} else if (typeof params === "string") {
connCfg = params;
}
let escape = MYSQL.escape;
let escapeId = MYSQL.escapeId;
let format = MYSQL.format;
config(connCfg);
return {
connect,
config,
query,
end,
escape,
escapeId,
format,
quit,
transaction,
getCounter,
getClient,
getConfig,
getErrorCount
};
};
});
// package-shared/utils/backend/grabDbSSL.ts
import fs2 from "fs";
function grabDbSSL() {
const SSL_DIR = process.env.DSQL_SSL_DIR;
if (!SSL_DIR?.match(/./)) {
return;
}
const caFilePath = `${SSL_DIR}/ca-cert.pem`;
if (!fs2.existsSync(caFilePath)) {
console.log(`${caFilePath} does not exist`);
return;
}
return {
ca: fs2.readFileSync(`${SSL_DIR}/ca-cert.pem`)
};
}
var init_grabDbSSL = () => {
};
// package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.ts
import fs3 from "fs";
function DSQL_USER_DB_HANDLER({
paradigm,
database,
queryString,
queryValues
}) {
try {
return new Promise((resolve, reject) => {
const fullAccess = paradigm?.match(/full.access|^fa$/i) ? true : false;
try {
let runQuery = function(results) {
DSQL_USER.end();
resolve(JSON.parse(JSON.stringify(results)));
}, queryError = function(err) {
DSQL_USER.end();
resolve({
error: err.message,
queryStringGenerated: queryString,
queryValuesGenerated: queryValues,
sql: err.sql
});
};
if (fullAccess) {
DSQL_USER = import_serverless_mysql.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
database,
ssl: grabDbSSL()
}
});
} else {
DSQL_USER = import_serverless_mysql.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
database,
ssl: grabDbSSL()
}
});
}
if (queryValues && Array.isArray(queryValues) && queryValues[0]) {
DSQL_USER.query(queryString, queryValues).then(runQuery).catch(queryError);
} else {
DSQL_USER.query(queryString).then(runQuery).catch(queryError);
}
} catch (error) {
fs3.appendFileSync("./.tmp/dbErrorLogs.txt", error.message + "\n" + Date() + "\n\n\n", "utf8");
resolve({
error: error.message
});
}
});
} catch (error) {
return {
success: false,
error: error.message
};
}
}
var import_serverless_mysql, DSQL_USER;
var init_DSQL_USER_DB_HANDLER = __esm(() => {
import_serverless_mysql = __toESM(require_serverless_mysql(), 1);
init_grabDbSSL();
DSQL_USER = import_serverless_mysql.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
charset: "utf8mb4",
ssl: grabDbSSL()
}
});
module_DSQL_USER_DB_HANDLER.exports = DSQL_USER_DB_HANDLER;
});
// package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.ts
async function LOCAL_DB_HANDLER(...args) {
const MASTER = import_serverless_mysql2.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT ? Number(process.env.DSQL_DB_PORT) : undefined,
charset: "utf8mb4",
ssl: grabDbSSL()
},
onConnect: () => {
console.log("Connection Successful!");
},
onConnectError: (err) => {
console.log("Connection Error", err.message);
},
onError: (err) => {
console.log("Client Error", err.message);
}
});
console.log("Querying ...");
try {
const results = await MASTER.query(...args);
await MASTER.end();
return JSON.parse(JSON.stringify(results));
} catch (error) {
console.log("DB Error =>", error.message);
return {
success: false,
error: error.message
};
}
}
var import_serverless_mysql2;
var init_LOCAL_DB_HANDLER = __esm(() => {
import_serverless_mysql2 = __toESM(require_serverless_mysql(), 1);
init_grabDbSSL();
});
// package-shared/functions/dsql/decrypt.ts
var exports_decrypt = {};
__export(exports_decrypt, {
default: () => decrypt
});
import { scryptSync, createDecipheriv } from "crypto";
import { Buffer as Buffer2 } from "buffer";
function decrypt({
encryptedString,
encryptionKey,
encryptionSalt
}) {
if (!encryptedString?.match(/./)) {
console.log("Encrypted string is invalid");
return encryptedString;
}
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
const finalKeyLen = process.env.DSQL_ENCRYPTION_KEY_LENGTH ? Number(process.env.DSQL_ENCRYPTION_KEY_LENGTH) : 24;
if (!finalEncryptionKey?.match(/.{8,}/)) {
console.log("Decrption key is invalid");
return encryptedString;
}
if (!finalEncryptionSalt?.match(/.{8,}/)) {
console.log("Decrption salt is invalid");
return encryptedString;
}
const algorithm = "aes-192-cbc";
let key = scryptSync(finalEncryptionKey, finalEncryptionSalt, finalKeyLen);
let iv = Buffer2.alloc(16, 0);
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
console.log("Error in decrypting =>", error.message);
return encryptedString;
}
}
var init_decrypt = () => {
};
// package-shared/functions/backend/defaultFieldsRegexp.ts
var defaultFieldsRegexp, defaultFieldsRegexp_default;
var init_defaultFieldsRegexp = __esm(() => {
defaultFieldsRegexp = /^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/;
defaultFieldsRegexp_default = defaultFieldsRegexp;
});
// package-shared/functions/backend/parseDbResults.ts
async function parseDbResults({
unparsedResults,
tableSchema
}) {
let parsedResults = [];
try {
for (let pr = 0;pr < unparsedResults.length; pr++) {
let result = unparsedResults[pr];
let resultFieldNames = Object.keys(result);
for (let i = 0;i < resultFieldNames.length; i++) {
const resultFieldName = resultFieldNames[i];
let resultFieldSchema = tableSchema?.fields[i];
if (resultFieldName?.match(defaultFieldsRegexp_default)) {
continue;
}
let value = result[resultFieldName];
if (typeof value !== "number" && !value) {
continue;
}
if (resultFieldSchema?.encrypted) {
if (value?.match(/./)) {
result[resultFieldName] = decrypt({
encryptedString: value
});
}
}
}
parsedResults.push(result);
}
return parsedResults;
} catch (error) {
console.log("ERROR in parseDbResults Function =>", error.message);
return unparsedResults;
}
}
var init_parseDbResults = __esm(() => {
init_decrypt();
init_defaultFieldsRegexp();
});
// node_modules/entities/lib/generated/decode-data-html.js
var require_decode_data_html = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\uD835\uDD04rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\uD835\uDD38plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\uD835\uDC9Cign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\uD835\uDD05pf;\uC000\uD835\uDD39eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\uD835\uDC9Ep\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\uD835\uDD07\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\uD835\uDD3B\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\uD835\uDC9Frok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\uD835\uDD08rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\uD835\uDD3Csilon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\uD835\uDD09lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\uD835\uDD3DAll;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\uD835\uDD0A;\u62D9pf;\uC000\uD835\uDD3Eeater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\uD835\uDCA2;\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\uD835\uDD40a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\uD835\uDD0Dpf;\uC000\uD835\uDD41\u01E3\u07C7\0\u07CCr;\uC000\uD835\uDCA5rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\uD835\uDD0Epf;\uC000\uD835\uDD42cr;\uC000\uD835\uDCA6\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\uD835\uDD0F\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\uD835\uDD43er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\uD835\uDD10nusPlus;\u6213pf;\uC000\uD835\uDD44c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\uD835\uDD11\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\uD835\uDCA9ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\uD835\uDD12rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\uD835\uDD46enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\uD835\uDCAAash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\uD835\uDD13i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\uD835\uDCAB;\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\uD835\uDD14pf;\u611Acr;\uC000\uD835\uDCAC\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\uD835\uDD16ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\uD835\uDD4A\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\uD835\uDCAEar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\uD835\uDD17\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\uD835\uDD4BipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\uD835\uDCAFrok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\uD835\uDD18rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\uD835\uDD4C\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\uD835\uDCB0ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\uD835\uDD19pf;\uC000\uD835\uDD4Dcr;\uC000\uD835\uDCB1dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\uD835\uDD1Apf;\uC000\uD835\uDD4Ecr;\uC000\uD835\uDCB2\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\uD835\uDD1B;\u439Epf;\uC000\uD835\uDD4Fcr;\uC000\uD835\uDCB3\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\uD835\uDD1Cpf;\uC000\uD835\uDD50cr;\uC000\uD835\uDCB4ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\uD835\uDCB5\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\uD835\uDD1Erave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\uD835\uDD52\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\uD835\uDCB6;\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\uD835\uDD1Fg\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\uD835\uDD53\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\uD835\uDCB7mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\uD835\uDD20\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\uD835\uDD54o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\uD835\uDCB8\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\uD835\uDD21ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\uD835\uDD55\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\uD835\uDCB9;\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\uD835\uDD22\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\uD835\uDD56\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\uD835\uDD23lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\uD835\uDD57\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\uD835\uDCBB\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\uD835\uDD24\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\uD835\uDD58\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\uD835\uDD25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\uD835\uDD59bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\uD835\uDCBDas\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\uD835\uDD26rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\uD835\uDD5Aa;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\uD835\uDCBEn\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\uD835\uDD27ath;\u4237pf;\uC000\uD835\uDD5B\u01E3\u23EC\0\u23F1r;\uC000\uD835\uDCBFrcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\uD835\uDD28reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\uD835\uDD5Ccr;\uC000\uD835\uDCC0\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\uD835\uDD29\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\uD835\uDD5Dus;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\uD835\uDCC1m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\uD835\uDD2Ao;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\uD835\uDD5E\u0100ct\u28F8\u28FDr;\uC000\uD835\uDCC2pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\uD835\uDD2B\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\uD835\uDD5F\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\uD835\uDCC3ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\uD835\uDD2C\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\uD835\uDD60\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\uD835\uDD2D\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\uD835\uDD61nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\uD835\uDCC5;\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\uD835\uDD2Epf;\uC000\uD835\uDD62rime;\u6057cr;\uC000\uD835\uDCC6\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\uD835\uDD2F\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\uD835\uDD63us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\uD835\uDCC7\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\uD835\uDD30\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\uD835\uDD64a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\uD835\uDCC8tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\uD835\uDD31\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\uD835\uDD65rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\uD835\uDCC9;\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\uD835\uDD32rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\uD835\uDD66\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\uD835\uDCCA\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\uD835\uDD33tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\uD835\uDD67ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\uD835\uDCCB\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\uD835\uDD34pf;\uC000\uD835\uDD68\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\uD835\uDCCC\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\uD835\uDD35\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\uD835\uDD69im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\uD835\uDCCD\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\uD835\uDD36cy;\u4457pf;\uC000\uD835\uDD6Acr;\uC000\uD835\uDCCE\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\uD835\uDD37cy;\u4436grarr;\u61DDpf;\uC000\uD835\uDD6Bcr;\uC000\uD835\uDCCF\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(function(c) {
return c.charCodeAt(0);
}));
});
// node_modules/entities/lib/generated/decode-data-xml.js
var require_decode_data_xml = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = new Uint16Array("\u0200aglq\t\x15\x18\x1B\u026D\x0F\0\0\x12p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(function(c) {
return c.charCodeAt(0);
}));
});
// node_modules/entities/lib/decode_codepoint.js
var require_decode_codepoint = __commonJS((exports) => {
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceCodePoint = exports.fromCodePoint = undefined;
var decodeMap = new Map([
[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]
]);
exports.fromCodePoint = (_a = String.fromCodePoint) !== null && _a !== undefined ? _a : function(codePoint) {
var output = "";
if (codePoint > 65535) {
codePoint -= 65536;
output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
codePoint = 56320 | codePoint & 1023;
}
output += String.fromCharCode(codePoint);
return output;
};
function replaceCodePoint(codePoint) {
var _a2;
if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
return 65533;
}
return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== undefined ? _a2 : codePoint;
}
exports.replaceCodePoint = replaceCodePoint;
function decodeCodePoint(codePoint) {
return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
}
exports.default = decodeCodePoint;
});
// node_modules/entities/lib/decode.js
var require_decode = __commonJS((exports) => {
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
});
var __importStar = exports && exports.__importStar || function(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) {
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
var __importDefault = exports && exports.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = undefined;
var decode_data_html_js_1 = __importDefault(require_decode_data_html());
exports.htmlDecodeTree = decode_data_html_js_1.default;
var decode_data_xml_js_1 = __importDefault(require_decode_data_xml());
exports.xmlDecodeTree = decode_data_xml_js_1.default;
var decode_codepoint_js_1 = __importStar(require_decode_codepoint());
exports.decodeCodePoint = decode_codepoint_js_1.default;
var decode_codepoint_js_2 = require_decode_codepoint();
Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function() {
return decode_codepoint_js_2.replaceCodePoint;
} });
Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function() {
return decode_codepoint_js_2.fromCodePoint;
} });
var CharCodes;
(function(CharCodes2) {
CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI";
CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS";
CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO";
CharCodes2[CharCodes2["NINE"] = 57] = "NINE";
CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A";
CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F";
CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X";
CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z";
CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A";
CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F";
CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z";
})(CharCodes || (CharCodes = {}));
var TO_LOWER_BIT = 32;
var BinTrieFlags;
(function(BinTrieFlags2) {
BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
function isNumber(code) {
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
}
function isHexadecimalCharacter(code) {
return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F;
}
function isAsciiAlphaNumeric(code) {
return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code);
}
function isEntityInAttributeInvalidEnd(code) {
return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
}
var EntityDecoderState;
(function(EntityDecoderState2) {
EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
})(EntityDecoderState || (EntityDecoderState = {}));
var DecodingMode;
(function(DecodingMode2) {
DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));
var EntityDecoder = function() {
function EntityDecoder2(decodeTree, emitCodePoint, errors) {
this.decodeTree = decodeTree;
this.emitCodePoint = emitCodePoint;
this.errors = errors;
this.state = EntityDecoderState.EntityStart;
this.consumed = 1;
this.result = 0;
this.treeIndex = 0;
this.excess = 1;
this.decodeMode = DecodingMode.Strict;
}
EntityDecoder2.prototype.startEntity = function(decodeMode) {
this.decodeMode = decodeMode;
this.state = EntityDecoderState.EntityStart;
this.result = 0;
this.treeIndex = 0;
this.excess = 1;
this.consumed = 1;
};
EntityDecoder2.prototype.write = function(str, offset) {
switch (this.state) {
case EntityDecoderState.EntityStart: {
if (str.charCodeAt(offset) === CharCodes.NUM) {
this.state = EntityDecoderState.NumericStart;
this.consumed += 1;
return this.stateNumericStart(str, offset + 1);
}
this.state = EntityDecoderState.NamedEntity;
return this.stateNamedEntity(str, offset);
}
case EntityDecoderState.NumericStart: {
return this.stateNumericStart(str, offset);
}
case EntityDecoderState.NumericDecimal: {
return this.stateNumericDecimal(str, offset);
}
case EntityDecoderState.NumericHex: {
return this.stateNumericHex(str, offset);
}
case EntityDecoderState.NamedEntity: {
return this.stateNamedEntity(str, offset);
}
}
};
EntityDecoder2.prototype.stateNumericStart = function(str, offset) {
if (offset >= str.length) {
return -1;
}
if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
this.state = EntityDecoderState.NumericHex;
this.consumed += 1;
return this.stateNumericHex(str, offset + 1);
}
this.state = EntityDecoderState.NumericDecimal;
return this.stateNumericDecimal(str, offset);
};
EntityDecoder2.prototype.addToNumericResult = function(str, start, end, base) {
if (start !== end) {
var digitCount = end - start;
this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);
this.consumed += digitCount;
}
};
EntityDecoder2.prototype.stateNumericHex = function(str, offset) {
var startIdx = offset;
while (offset < str.length) {
var char = str.charCodeAt(offset);
if (isNumber(char) || isHexadecimalCharacter(char)) {
offset += 1;
} else {
this.addToNumericResult(str, startIdx, offset, 16);
return this.emitNumericEntity(char, 3);
}
}
this.addToNumericResult(str, startIdx, offset, 16);
return -1;
};
EntityDecoder2.prototype.stateNumericDecimal = function(str, offset) {
var startIdx = offset;
while (offset < str.length) {
var char = str.charCodeAt(offset);
if (isNumber(char)) {
offset += 1;
} else {
this.addToNumericResult(str, startIdx, offset, 10);
return this.emitNumericEntity(char, 2);
}
}
this.addToNumericResult(str, startIdx, offset, 10);
return -1;
};
EntityDecoder2.prototype.emitNumericEntity = function(lastCp, expectedLength) {
var _a;
if (this.consumed <= expectedLength) {
(_a = this.errors) === null || _a === undefined || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
return 0;
}
if (lastCp === CharCodes.SEMI) {
this.consumed += 1;
} else if (this.decodeMode === DecodingMode.Strict) {
return 0;
}
this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);
if (this.errors) {
if (lastCp !== CharCodes.SEMI) {
this.errors.missingSemicolonAfterCharacterReference();
}
this.errors.validateNumericCharacterReference(this.result);
}
return this.consumed;
};
EntityDecoder2.prototype.stateNamedEntity = function(str, offset) {
var decodeTree = this.decodeTree;
var current = decodeTree[this.treeIndex];
var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
for (;offset < str.length; offset++, this.excess++) {
var char = str.charCodeAt(offset);
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
if (this.treeIndex < 0) {
return this.result === 0 || this.decodeMode === DecodingMode.Attribute && (valueLength === 0 || isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();
}
current = decodeTree[this.treeIndex];
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
if (valueLength !== 0) {
if (char === CharCodes.SEMI) {
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
}
if (this.decodeMode !== DecodingMode.Strict) {
this.result = this.treeIndex;
this.consumed += this.excess;
this.excess = 0;
}
}
}
return -1;
};
EntityDecoder2.prototype.emitNotTerminatedNamedEntity = function() {
var _a;
var _b = this, result = _b.result, decodeTree = _b.decodeTree;
var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
this.emitNamedEntityData(result, valueLength, this.consumed);
(_a = this.errors) === null || _a === undefined || _a.missingSemicolonAfterCharacterReference();
return this.consumed;
};
EntityDecoder2.prototype.emitNamedEntityData = function(result, valueLength, consumed) {
var decodeTree = this.decodeTree;
this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);
if (valueLength === 3) {
this.emitCodePoint(decodeTree[result + 2], consumed);
}
return consumed;
};
EntityDecoder2.prototype.end = function() {
var _a;
switch (this.state) {
case EntityDecoderState.NamedEntity: {
return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
}
case EntityDecoderState.NumericDecimal: {
return this.emitNumericEntity(0, 2);
}
case EntityDecoderState.NumericHex: {
return this.emitNumericEntity(0, 3);
}
case EntityDecoderState.NumericStart: {
(_a = this.errors) === null || _a === undefined || _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
return 0;
}
case EntityDecoderState.EntityStart: {
return 0;
}
}
};
return EntityDecoder2;
}();
exports.EntityDecoder = EntityDecoder;
function getDecoder(decodeTree) {
var ret = "";
var decoder = new EntityDecoder(decodeTree, function(str) {
return ret += (0, decode_codepoint_js_1.fromCodePoint)(str);
});
return function decodeWithTrie(str, decodeMode) {
var lastIndex = 0;
var offset = 0;
while ((offset = str.indexOf("&", offset)) >= 0) {
ret += str.slice(lastIndex, offset);
decoder.startEntity(decodeMode);
var len = decoder.write(str, offset + 1);
if (len < 0) {
lastIndex = offset + decoder.end();
break;
}
lastIndex = offset + len;
offset = len === 0 ? lastIndex + 1 : lastIndex;
}
var result = ret + str.slice(lastIndex);
ret = "";
return result;
};
}
function determineBranch(decodeTree, current, nodeIdx, char) {
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
if (branchCount === 0) {
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
}
if (jumpOffset) {
var value = char - jumpOffset;
return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
}
var lo = nodeIdx;
var hi = lo + branchCount - 1;
while (lo <= hi) {
var mid = lo + hi >>> 1;
var midVal = decodeTree[mid];
if (midVal < char) {
lo = mid + 1;
} else if (midVal > char) {
hi = mid - 1;
} else {
return decodeTree[mid + branchCount];
}
}
return -1;
}
exports.determineBranch = determineBranch;
var htmlDecoder = getDecoder(decode_data_html_js_1.default);
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
function decodeHTML(str, mode) {
if (mode === undefined) {
mode = DecodingMode.Legacy;
}
return htmlDecoder(str, mode);
}
exports.decodeHTML = decodeHTML;
function decodeHTMLAttribute(str) {
return htmlDecoder(str, DecodingMode.Attribute);
}
exports.decodeHTMLAttribute = decodeHTMLAttribute;
function decodeHTMLStrict(str) {
return htmlDecoder(str, DecodingMode.Strict);
}
exports.decodeHTMLStrict = decodeHTMLStrict;
function decodeXML(str) {
return xmlDecoder(str, DecodingMode.Strict);
}
exports.decodeXML = decodeXML;
});
// node_modules/htmlparser2/lib/Tokenizer.js
var require_Tokenizer = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.QuoteType = undefined;
var decode_js_1 = require_decode();
var CharCodes;
(function(CharCodes2) {
CharCodes2[CharCodes2["Tab"] = 9] = "Tab";
CharCodes2[CharCodes2["NewLine"] = 10] = "NewLine";
CharCodes2[CharCodes2["FormFeed"] = 12] = "FormFeed";
CharCodes2[CharCodes2["CarriageReturn"] = 13] = "CarriageReturn";
CharCodes2[CharCodes2["Space"] = 32] = "Space";
CharCodes2[CharCodes2["ExclamationMark"] = 33] = "ExclamationMark";
CharCodes2[CharCodes2["Number"] = 35] = "Number";
CharCodes2[CharCodes2["Amp"] = 38] = "Amp";
CharCodes2[CharCodes2["SingleQuote"] = 39] = "SingleQuote";
CharCodes2[CharCodes2["DoubleQuote"] = 34] = "DoubleQuote";
CharCodes2[CharCodes2["Dash"] = 45] = "Dash";
CharCodes2[CharCodes2["Slash"] = 47] = "Slash";
CharCodes2[CharCodes2["Zero"] = 48] = "Zero";
CharCodes2[CharCodes2["Nine"] = 57] = "Nine";
CharCodes2[CharCodes2["Semi"] = 59] = "Semi";
CharCodes2[CharCodes2["Lt"] = 60] = "Lt";
CharCodes2[CharCodes2["Eq"] = 61] = "Eq";
CharCodes2[CharCodes2["Gt"] = 62] = "Gt";
CharCodes2[CharCodes2["Questionmark"] = 63] = "Questionmark";
CharCodes2[CharCodes2["UpperA"] = 65] = "UpperA";
CharCodes2[CharCodes2["LowerA"] = 97] = "LowerA";
CharCodes2[CharCodes2["UpperF"] = 70] = "UpperF";
CharCodes2[CharCodes2["LowerF"] = 102] = "LowerF";
CharCodes2[CharCodes2["UpperZ"] = 90] = "UpperZ";
CharCodes2[CharCodes2["LowerZ"] = 122] = "LowerZ";
CharCodes2[CharCodes2["LowerX"] = 120] = "LowerX";
CharCodes2[CharCodes2["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
})(CharCodes || (CharCodes = {}));
var State;
(function(State2) {
State2[State2["Text"] = 1] = "Text";
State2[State2["BeforeTagName"] = 2] = "BeforeTagName";
State2[State2["InTagName"] = 3] = "InTagName";
State2[State2["InSelfClosingTag"] = 4] = "InSelfClosingTag";
State2[State2["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
State2[State2["InClosingTagName"] = 6] = "InClosingTagName";
State2[State2["AfterClosingTagName"] = 7] = "AfterClosingTagName";
State2[State2["BeforeAttributeName"] = 8] = "BeforeAttributeName";
State2[State2["InAttributeName"] = 9] = "InAttributeName";
State2[State2["AfterAttributeName"] = 10] = "AfterAttributeName";
State2[State2["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
State2[State2["InAttributeValueDq"] = 12] = "InAttributeValueDq";
State2[State2["InAttributeValueSq"] = 13] = "InAttributeValueSq";
State2[State2["InAttributeValueNq"] = 14] = "InAttributeValueNq";
State2[State2["BeforeDeclaration"] = 15] = "BeforeDeclaration";
State2[State2["InDeclaration"] = 16] = "InDeclaration";
State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction";
State2[State2["BeforeComment"] = 18] = "BeforeComment";
State2[State2["CDATASequence"] = 19] = "CDATASequence";
State2[State2["InSpecialComment"] = 20] = "InSpecialComment";
State2[State2["InCommentLike"] = 21] = "InCommentLike";
State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS";
State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence";
State2[State2["InSpecialTag"] = 24] = "InSpecialTag";
State2[State2["BeforeEntity"] = 25] = "BeforeEntity";
State2[State2["BeforeNumericEntity"] = 26] = "BeforeNumericEntity";
State2[State2["InNamedEntity"] = 27] = "InNamedEntity";
State2[State2["InNumericEntity"] = 28] = "InNumericEntity";
State2[State2["InHexEntity"] = 29] = "InHexEntity";
})(State || (State = {}));
function isWhitespace(c) {
return c === CharCodes.Space || c === CharCodes.NewLine || c === CharCodes.Tab || c === CharCodes.FormFeed || c === CharCodes.CarriageReturn;
}
function isEndOfTagSection(c) {
return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
}
function isNumber(c) {
return c >= CharCodes.Zero && c <= CharCodes.Nine;
}
function isASCIIAlpha(c) {
return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ;
}
function isHexDigit(c) {
return c >= CharCodes.UpperA && c <= CharCodes.UpperF || c >= CharCodes.LowerA && c <= CharCodes.LowerF;
}
var QuoteType;
(function(QuoteType2) {
QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue";
QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted";
QuoteType2[QuoteType2["Single"] = 2] = "Single";
QuoteType2[QuoteType2["Double"] = 3] = "Double";
})(QuoteType = exports.QuoteType || (exports.QuoteType = {}));
var Sequences = {
Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
CdataEnd: new Uint8Array([93, 93, 62]),
CommentEnd: new Uint8Array([45, 45, 62]),
ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101])
};
var Tokenizer = function() {
function Tokenizer2(_a, cbs) {
var _b = _a.xmlMode, xmlMode = _b === undefined ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === undefined ? true : _c;
this.cbs = cbs;
this.state = State.Text;
this.buffer = "";
this.sectionStart = 0;
this.index = 0;
this.baseState = State.Text;
this.isSpecial = false;
this.running = true;
this.offset = 0;
this.currentSequence = undefined;
this.sequenceIndex = 0;
this.trieIndex = 0;
this.trieCurrent = 0;
this.entityResult = 0;
this.entityExcess = 0;
this.xmlMode = xmlMode;
this.decodeEntities = decodeEntities;
this.entityTrie = xmlMode ? decode_js_1.xmlDecodeTree : decode_js_1.htmlDecodeTree;
}
Tokenizer2.prototype.reset = function() {
this.state = State.Text;
this.buffer = "";
this.sectionStart = 0;
this.index = 0;
this.baseState = State.Text;
this.currentSequence = undefined;
this.running = true;
this.offset = 0;
};
Tokenizer2.prototype.write = function(chunk) {
this.offset += this.buffer.length;
this.buffer = chunk;
this.parse();
};
Tokenizer2.prototype.end = function() {
if (this.running)
this.finish();
};
Tokenizer2.prototype.pause = function() {
this.running = false;
};
Tokenizer2.prototype.resume = function() {
this.running = true;
if (this.index < this.buffer.length + this.offset) {
this.parse();
}
};
Tokenizer2.prototype.getIndex = function() {
return this.index;
};
Tokenizer2.prototype.getSectionStart = function() {
return this.sectionStart;
};
Tokenizer2.prototype.stateText = function(c) {
if (c === CharCodes.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes.Lt)) {
if (this.index > this.sectionStart) {
this.cbs.ontext(this.sectionStart, this.index);
}
this.state = State.BeforeTagName;
this.sectionStart = this.index;
} else if (this.decodeEntities && c === CharCodes.Amp) {
this.state = State.BeforeEntity;
}
};
Tokenizer2.prototype.stateSpecialStartSequence = function(c) {
var isEnd = this.sequenceIndex === this.currentSequence.length;
var isMatch = isEnd ? isEndOfTagSection(c) : (c | 32) === this.currentSequence[this.sequenceIndex];
if (!isMatch) {
this.isSpecial = false;
} else if (!isEnd) {
this.sequenceIndex++;
return;
}
this.sequenceIndex = 0;
this.state = State.InTagName;
this.stateInTagName(c);
};
Tokenizer2.prototype.stateInSpecialTag = function(c) {
if (this.sequenceIndex === this.currentSequence.length) {
if (c === CharCodes.Gt || isWhitespace(c)) {
var endOfText = this.index - this.currentSequence.length;
if (this.sectionStart < endOfText) {
var actualIndex = this.index;
this.index = endOfText;
this.cbs.ontext(this.sectionStart, endOfText);
this.index = actualIndex;
}
this.isSpecial = false;
this.sectionStart = endOfText + 2;
this.stateInClosingTagName(c);
return;
}
this.sequenceIndex = 0;
}
if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
this.sequenceIndex += 1;
} else if (this.sequenceIndex === 0) {
if (this.currentSequence === Sequences.TitleEnd) {
if (this.decodeEntities && c === CharCodes.Amp) {
this.state = State.BeforeEntity;
}
} else if (this.fastForwardTo(CharCodes.Lt)) {
this.sequenceIndex = 1;
}
} else {
this.sequenceIndex = Number(c === CharCodes.Lt);
}
};
Tokenizer2.prototype.stateCDATASequence = function(c) {
if (c === Sequences.Cdata[this.sequenceIndex]) {
if (++this.sequenceIndex === Sequences.Cdata.length) {
this.state = State.InCommentLike;
this.currentSequence = Sequences.CdataEnd;
this.sequenceIndex = 0;
this.sectionStart = this.index + 1;
}
} else {
this.sequenceIndex = 0;
this.state = State.InDeclaration;
this.stateInDeclaration(c);
}
};
Tokenizer2.prototype.fastForwardTo = function(c) {
while (++this.index < this.buffer.length + this.offset) {
if (this.buffer.charCodeAt(this.index - this.offset) === c) {
return true;
}
}
this.index = this.buffer.length + this.offset - 1;
return false;
};
Tokenizer2.prototype.stateInCommentLike = function(c) {
if (c === this.currentSequence[this.sequenceIndex]) {
if (++this.sequenceIndex === this.currentSequence.length) {
if (this.currentSequence === Sequences.CdataEnd) {
this.cbs.oncdata(this.sectionStart, this.index, 2);
} else {
this.cbs.oncomment(this.sectionStart, this.index, 2);
}
this.sequenceIndex = 0;
this.sectionStart = this.index + 1;
this.state = State.Text;
}
} else if (this.sequenceIndex === 0) {
if (this.fastForwardTo(this.currentSequence[0])) {
this.sequenceIndex = 1;
}
} else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
this.sequenceIndex = 0;
}
};
Tokenizer2.prototype.isTagStartChar = function(c) {
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
};
Tokenizer2.prototype.startSpecial = function(sequence, offset) {
this.isSpecial = true;
this.currentSequence = sequence;
this.sequenceIndex = offset;
this.state = State.SpecialStartSequence;
};
Tokenizer2.prototype.stateBeforeTagName = function(c) {
if (c === CharCodes.ExclamationMark) {
this.state = State.BeforeDeclaration;
this.sectionStart = this.index + 1;
} else if (c === CharCodes.Questionmark) {
this.state = State.InProcessingInstruction;
this.sectionStart = this.index + 1;
} else if (this.isTagStartChar(c)) {
var lower = c | 32;
this.sectionStart = this.index;
if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
this.startSpecial(Sequences.TitleEnd, 3);
} else {
this.state = !this.xmlMode && lower === Sequences.ScriptEnd[2] ? State.BeforeSpecialS : State.InTagName;
}
} else if (c === CharCodes.Slash) {
this.state = State.BeforeClosingTagName;
} else {
this.state = State.Text;
this.stateText(c);
}
};
Tokenizer2.prototype.stateInTagName = function(c) {
if (isEndOfTagSection(c)) {
this.cbs.onopentagname(this.sectionStart, this.index);
this.sectionStart = -1;
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
}
};
Tokenizer2.prototype.stateBeforeClosingTagName = function(c) {
if (isWhitespace(c)) {
} else if (c === CharCodes.Gt) {
this.state = State.Text;
} else {
this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment;
this.sectionStart = this.index;
}
};
Tokenizer2.prototype.stateInClosingTagName = function(c) {
if (c === CharCodes.Gt || isWhitespace(c)) {
this.cbs.onclosetag(this.sectionStart, this.index);
this.sectionStart = -1;
this.state = State.AfterClosingTagName;
this.stateAfterClosingTagName(c);
}
};
Tokenizer2.prototype.stateAfterClosingTagName = function(c) {
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
this.state = State.Text;
this.baseState = State.Text;
this.sectionStart = this.index + 1;
}
};
Tokenizer2.prototype.stateBeforeAttributeName = function(c) {
if (c === CharCodes.Gt) {
this.cbs.onopentagend(this.index);
if (this.isSpecial) {
this.state = State.InSpecialTag;
this.sequenceIndex = 0;
} else {
this.state = State.Text;
}
this.baseState = this.state;
this.sectionStart = this.index + 1;
} else if (c === CharCodes.Slash) {
this.state = State.InSelfClosingTag;
} else if (!isWhitespace(c)) {
this.state = State.InAttributeName;
this.sectionStart = this.index;
}
};
Tokenizer2.prototype.stateInSelfClosingTag = function(c) {
if (c === CharCodes.Gt) {
this.cbs.onselfclosingtag(this.index);
this.state = State.Text;
this.baseState = State.Text;
this.sectionStart = this.index + 1;
this.isSpecial = false;
} else if (!isWhitespace(c)) {
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
}
};
Tokenizer2.prototype.stateInAttributeName = function(c) {
if (c === CharCodes.Eq || isEndOfTagSection(c)) {
this.cbs.onattribname(this.sectionStart, this.index);
this.sectionStart = -1;
this.state = State.AfterAttributeName;
this.stateAfterAttributeName(c);
}
};
Tokenizer2.prototype.stateAfterAttributeName = function(c) {
if (c === CharCodes.Eq) {
this.state = State.BeforeAttributeValue;
} else if (c === CharCodes.Slash || c === CharCodes.Gt) {
this.cbs.onattribend(QuoteType.NoValue, this.index);
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
} else if (!isWhitespace(c)) {
this.cbs.onattribend(QuoteType.NoValue, this.index);
this.state = State.InAttributeName;
this.sectionStart = this.index;
}
};
Tokenizer2.prototype.stateBeforeAttributeValue = function(c) {
if (c === CharCodes.DoubleQuote) {
this.state = State.InAttributeValueDq;
this.sectionStart = this.index + 1;
} else if (c === CharCodes.SingleQuote) {
this.state = State.InAttributeValueSq;
this.sectionStart = this.index + 1;
} else if (!isWhitespace(c)) {
this.sectionStart = this.index;
this.state = State.InAttributeValueNq;
this.stateInAttributeValueNoQuotes(c);
}
};
Tokenizer2.prototype.handleInAttributeValue = function(c, quote) {
if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {
this.cbs.onattribdata(this.sectionStart, this.index);
this.sectionStart = -1;
this.cbs.onattribend(quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index);
this.state = State.BeforeAttributeName;
} else if (this.decodeEntities && c === CharCodes.Amp) {
this.baseState = this.state;
this.state = State.BeforeEntity;
}
};
Tokenizer2.prototype.stateInAttributeValueDoubleQuotes = function(c) {
this.handleInAttributeValue(c, CharCodes.DoubleQuote);
};
Tokenizer2.prototype.stateInAttributeValueSingleQuotes = function(c) {
this.handleInAttributeValue(c, CharCodes.SingleQuote);
};
Tokenizer2.prototype.stateInAttributeValueNoQuotes = function(c) {
if (isWhitespace(c) || c === CharCodes.Gt) {
this.cbs.onattribdata(this.sectionStart, this.index);
this.sectionStart = -1;
this.cbs.onattribend(QuoteType.Unquoted, this.index);
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
} else if (this.decodeEntities && c === CharCodes.Amp) {
this.baseState = this.state;
this.state = State.BeforeEntity;
}
};
Tokenizer2.prototype.stateBeforeDeclaration = function(c) {
if (c === CharCodes.OpeningSquareBracket) {
this.state = State.CDATASequence;
this.sequenceIndex = 0;
} else {
this.state = c === CharCodes.Dash ? State.BeforeComment : State.InDeclaration;
}
};
Tokenizer2.prototype.stateInDeclaration = function(c) {
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
this.cbs.ondeclaration(this.sectionStart, this.index);
this.state = State.Text;
this.sectionStart = this.index + 1;
}
};
Tokenizer2.prototype.stateInProcessingInstruction = function(c) {
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
this.cbs.onprocessinginstruction(this.sectionStart, this.index);
this.state = State.Text;
this.sectionStart = this.index + 1;
}
};
Tokenizer2.prototype.stateBeforeComment = function(c) {
if (c === CharCodes.Dash) {
this.state = State.InCommentLike;
this.currentSequence = Sequences.CommentEnd;
this.sequenceIndex = 2;
this.sectionStart = this.index + 1;
} else {
this.state = State.InDeclaration;
}
};
Tokenizer2.prototype.stateInSpecialComment = function(c) {
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
this.cbs.oncomment(this.sectionStart, this.index, 0);
this.state = State.Text;
this.sectionStart = this.index + 1;
}
};
Tokenizer2.prototype.stateBeforeSpecialS = function(c) {
var lower = c | 32;
if (lower === Sequences.ScriptEnd[3]) {
this.startSpecial(Sequences.ScriptEnd, 4);
} else if (lower === Sequences.StyleEnd[3]) {
this.startSpecial(Sequences.StyleEnd, 4);
} else {
this.state = State.InTagName;
this.stateInTagName(c);
}
};
Tokenizer2.prototype.stateBeforeEntity = function(c) {
this.entityExcess = 1;
this.entityResult = 0;
if (c === CharCodes.Number) {
this.state = State.BeforeNumericEntity;
} else if (c === CharCodes.Amp) {
} else {
this.trieIndex = 0;
this.trieCurrent = this.entityTrie[0];
this.state = State.InNamedEntity;
this.stateInNamedEntity(c);
}
};
Tokenizer2.prototype.stateInNamedEntity = function(c) {
this.entityExcess += 1;
this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
if (this.trieIndex < 0) {
this.emitNamedEntity();
this.index--;
return;
}
this.trieCurrent = this.entityTrie[this.trieIndex];
var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH;
if (masked) {
var valueLength = (masked >> 14) - 1;
if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {
this.trieIndex += valueLength;
} else {
var entityStart = this.index - this.entityExcess + 1;
if (entityStart > this.sectionStart) {
this.emitPartial(this.sectionStart, entityStart);
}
this.entityResult = this.trieIndex;
this.trieIndex += valueLength;
this.entityExcess = 0;
this.sectionStart = this.index + 1;
if (valueLength === 0) {
this.emitNamedEntity();
}
}
}
};
Tokenizer2.prototype.emitNamedEntity = function() {
this.state = this.baseState;
if (this.entityResult === 0) {
return;
}
var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
switch (valueLength) {
case 1: {
this.emitCodePoint(this.entityTrie[this.entityResult] & ~decode_js_1.BinTrieFlags.VALUE_LENGTH);
break;
}
case 2: {
this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
break;
}
case 3: {
this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
}
}
};
Tokenizer2.prototype.stateBeforeNumericEntity = function(c) {
if ((c | 32) === CharCodes.LowerX) {
this.entityExcess++;
this.state = State.InHexEntity;
} else {
this.state = State.InNumericEntity;
this.stateInNumericEntity(c);
}
};
Tokenizer2.prototype.emitNumericEntity = function(strict) {
var entityStart = this.index - this.entityExcess - 1;
var numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);
if (numberStart !== this.index) {
if (entityStart > this.sectionStart) {
this.emitPartial(this.sectionStart, entityStart);
}
this.sectionStart = this.index + Number(strict);
this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult));
}
this.state = this.baseState;
};
Tokenizer2.prototype.stateInNumericEntity = function(c) {
if (c === CharCodes.Semi) {
this.emitNumericEntity(true);
} else if (isNumber(c)) {
this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);
this.entityExcess++;
} else {
if (this.allowLegacyEntity()) {
this.emitNumericEntity(false);
} else {
this.state = this.baseState;
}
this.index--;
}
};
Tokenizer2.prototype.stateInHexEntity = function(c) {
if (c === CharCodes.Semi) {
this.emitNumericEntity(true);
} else if (isNumber(c)) {
this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);
this.entityExcess++;
} else if (isHexDigit(c)) {
this.entityResult = this.entityResult * 16 + ((c | 32) - CharCodes.LowerA + 10);
this.entityExcess++;
} else {
if (this.allowLegacyEntity()) {
this.emitNumericEntity(false);
} else {
this.state = this.baseState;
}
this.index--;
}
};
Tokenizer2.prototype.allowLegacyEntity = function() {
return !this.xmlMode && (this.baseState === State.Text || this.baseState === State.InSpecialTag);
};
Tokenizer2.prototype.cleanup = function() {
if (this.running && this.sectionStart !== this.index) {
if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) {
this.cbs.ontext(this.sectionStart, this.index);
this.sectionStart = this.index;
} else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) {
this.cbs.onattribdata(this.sectionStart, this.index);
this.sectionStart = this.index;
}
}
};
Tokenizer2.prototype.shouldContinue = function() {
return this.index < this.buffer.length + this.offset && this.running;
};
Tokenizer2.prototype.parse = function() {
while (this.shouldContinue()) {
var c = this.buffer.charCodeAt(this.index - this.offset);
switch (this.state) {
case State.Text: {
this.stateText(c);
break;
}
case State.SpecialStartSequence: {
this.stateSpecialStartSequence(c);
break;
}
case State.InSpecialTag: {
this.stateInSpecialTag(c);
break;
}
case State.CDATASequence: {
this.stateCDATASequence(c);
break;
}
case State.InAttributeValueDq: {
this.stateInAttributeValueDoubleQuotes(c);
break;
}
case State.InAttributeName: {
this.stateInAttributeName(c);
break;
}
case State.InCommentLike: {
this.stateInCommentLike(c);
break;
}
case State.InSpecialComment: {
this.stateInSpecialComment(c);
break;
}
case State.BeforeAttributeName: {
this.stateBeforeAttributeName(c);
break;
}
case State.InTagName: {
this.stateInTagName(c);
break;
}
case State.InClosingTagName: {
this.stateInClosingTagName(c);
break;
}
case State.BeforeTagName: {
this.stateBeforeTagName(c);
break;
}
case State.AfterAttributeName: {
this.stateAfterAttributeName(c);
break;
}
case State.InAttributeValueSq: {
this.stateInAttributeValueSingleQuotes(c);
break;
}
case State.BeforeAttributeValue: {
this.stateBeforeAttributeValue(c);
break;
}
case State.BeforeClosingTagName: {
this.stateBeforeClosingTagName(c);
break;
}
case State.AfterClosingTagName: {
this.stateAfterClosingTagName(c);
break;
}
case State.BeforeSpecialS: {
this.stateBeforeSpecialS(c);
break;
}
case State.InAttributeValueNq: {
this.stateInAttributeValueNoQuotes(c);
break;
}
case State.InSelfClosingTag: {
this.stateInSelfClosingTag(c);
break;
}
case State.InDeclaration: {
this.stateInDeclaration(c);
break;
}
case State.BeforeDeclaration: {
this.stateBeforeDeclaration(c);
break;
}
case State.BeforeComment: {
this.stateBeforeComment(c);
break;
}
case State.InProcessingInstruction: {
this.stateInProcessingInstruction(c);
break;
}
case State.InNamedEntity: {
this.stateInNamedEntity(c);
break;
}
case State.BeforeEntity: {
this.stateBeforeEntity(c);
break;
}
case State.InHexEntity: {
this.stateInHexEntity(c);
break;
}
case State.InNumericEntity: {
this.stateInNumericEntity(c);
break;
}
default: {
this.stateBeforeNumericEntity(c);
}
}
this.index++;
}
this.cleanup();
};
Tokenizer2.prototype.finish = function() {
if (this.state === State.InNamedEntity) {
this.emitNamedEntity();
}
if (this.sectionStart < this.index) {
this.handleTrailingData();
}
this.cbs.onend();
};
Tokenizer2.prototype.handleTrailingData = function() {
var endIndex = this.buffer.length + this.offset;
if (this.state === State.InCommentLike) {
if (this.currentSequence === Sequences.CdataEnd) {
this.cbs.oncdata(this.sectionStart, endIndex, 0);
} else {
this.cbs.oncomment(this.sectionStart, endIndex, 0);
}
} else if (this.state === State.InNumericEntity && this.allowLegacyEntity()) {
this.emitNumericEntity(false);
} else if (this.state === State.InHexEntity && this.allowLegacyEntity()) {
this.emitNumericEntity(false);
} else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) {
} else {
this.cbs.ontext(this.sectionStart, endIndex);
}
};
Tokenizer2.prototype.emitPartial = function(start, endIndex) {
if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
this.cbs.onattribdata(start, endIndex);
} else {
this.cbs.ontext(start, endIndex);
}
};
Tokenizer2.prototype.emitCodePoint = function(cp) {
if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) {
this.cbs.onattribentity(cp);
} else {
this.cbs.ontextentity(cp);
}
};
return Tokenizer2;
}();
exports.default = Tokenizer;
});
// node_modules/htmlparser2/lib/Parser.js
var require_Parser2 = __commonJS((exports) => {
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
});
var __importStar = exports && exports.__importStar || function(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) {
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Parser = undefined;
var Tokenizer_js_1 = __importStar(require_Tokenizer());
var decode_js_1 = require_decode();
var formTags = new Set([
"input",
"option",
"optgroup",
"select",
"button",
"datalist",
"textarea"
]);
var pTag = new Set(["p"]);
var tableSectionTags = new Set(["thead", "tbody"]);
var ddtTags = new Set(["dd", "dt"]);
var rtpTags = new Set(["rt", "rp"]);
var openImpliesClose = new Map([
["tr", new Set(["tr", "th", "td"])],
["th", new Set(["th"])],
["td", new Set(["thead", "th", "td"])],
["body", new Set(["head", "link", "script"])],
["li", new Set(["li"])],
["p", pTag],
["h1", pTag],
["h2", pTag],
["h3", pTag],
["h4", pTag],
["h5", pTag],
["h6", pTag],
["select", formTags],
["input", formTags],
["output", formTags],
["button", formTags],
["datalist", formTags],
["textarea", formTags],
["option", new Set(["option"])],
["optgroup", new Set(["optgroup", "option"])],
["dd", ddtTags],
["dt", ddtTags],
["address", pTag],
["article", pTag],
["aside", pTag],
["blockquote", pTag],
["details", pTag],
["div", pTag],
["dl", pTag],
["fieldset", pTag],
["figcaption", pTag],
["figure", pTag],
["footer", pTag],
["form", pTag],
["header", pTag],
["hr", pTag],
["main", pTag],
["nav", pTag],
["ol", pTag],
["pre", pTag],
["section", pTag],
["table", pTag],
["ul", pTag],
["rt", rtpTags],
["rp", rtpTags],
["tbody", tableSectionTags],
["tfoot", tableSectionTags]
]);
var voidElements = new Set([
"area",
"base",
"basefont",
"br",
"col",
"command",
"embed",
"frame",
"hr",
"img",
"input",
"isindex",
"keygen",
"link",
"meta",
"param",
"source",
"track",
"wbr"
]);
var foreignContextElements = new Set(["math", "svg"]);
var htmlIntegrationElements = new Set([
"mi",
"mo",
"mn",
"ms",
"mtext",
"annotation-xml",
"foreignobject",
"desc",
"title"
]);
var reNameEnd = /\s|\//;
var Parser = function() {
function Parser2(cbs, options) {
if (options === undefined) {
options = {};
}
var _a, _b, _c, _d, _e;
this.options = options;
this.startIndex = 0;
this.endIndex = 0;
this.openTagStart = 0;
this.tagname = "";
this.attribname = "";
this.attribvalue = "";
this.attribs = null;
this.stack = [];
this.foreignContext = [];
this.buffers = [];
this.bufferOffset = 0;
this.writeIndex = 0;
this.ended = false;
this.cbs = cbs !== null && cbs !== undefined ? cbs : {};
this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== undefined ? _a : !options.xmlMode;
this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== undefined ? _b : !options.xmlMode;
this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== undefined ? _c : Tokenizer_js_1.default)(this.options, this);
(_e = (_d = this.cbs).onparserinit) === null || _e === undefined || _e.call(_d, this);
}
Parser2.prototype.ontext = function(start, endIndex) {
var _a, _b;
var data = this.getSlice(start, endIndex);
this.endIndex = endIndex - 1;
(_b = (_a = this.cbs).ontext) === null || _b === undefined || _b.call(_a, data);
this.startIndex = endIndex;
};
Parser2.prototype.ontextentity = function(cp) {
var _a, _b;
var index = this.tokenizer.getSectionStart();
this.endIndex = index - 1;
(_b = (_a = this.cbs).ontext) === null || _b === undefined || _b.call(_a, (0, decode_js_1.fromCodePoint)(cp));
this.startIndex = index;
};
Parser2.prototype.isVoidElement = function(name) {
return !this.options.xmlMode && voidElements.has(name);
};
Parser2.prototype.onopentagname = function(start, endIndex) {
this.endIndex = endIndex;
var name = this.getSlice(start, endIndex);
if (this.lowerCaseTagNames) {
name = name.toLowerCase();
}
this.emitOpenTag(name);
};
Parser2.prototype.emitOpenTag = function(name) {
var _a, _b, _c, _d;
this.openTagStart = this.startIndex;
this.tagname = name;
var impliesClose = !this.options.xmlMode && openImpliesClose.get(name);
if (impliesClose) {
while (this.stack.length > 0 && impliesClose.has(this.stack[this.stack.length - 1])) {
var element = this.stack.pop();
(_b = (_a = this.cbs).onclosetag) === null || _b === undefined || _b.call(_a, element, true);
}
}
if (!this.isVoidElement(name)) {
this.stack.push(name);
if (foreignContextElements.has(name)) {
this.foreignContext.push(true);
} else if (htmlIntegrationElements.has(name)) {
this.foreignContext.push(false);
}
}
(_d = (_c = this.cbs).onopentagname) === null || _d === undefined || _d.call(_c, name);
if (this.cbs.onopentag)
this.attribs = {};
};
Parser2.prototype.endOpenTag = function(isImplied) {
var _a, _b;
this.startIndex = this.openTagStart;
if (this.attribs) {
(_b = (_a = this.cbs).onopentag) === null || _b === undefined || _b.call(_a, this.tagname, this.attribs, isImplied);
this.attribs = null;
}
if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
this.cbs.onclosetag(this.tagname, true);
}
this.tagname = "";
};
Parser2.prototype.onopentagend = function(endIndex) {
this.endIndex = endIndex;
this.endOpenTag(false);
this.startIndex = endIndex + 1;
};
Parser2.prototype.onclosetag = function(start, endIndex) {
var _a, _b, _c, _d, _e, _f;
this.endIndex = endIndex;
var name = this.getSlice(start, endIndex);
if (this.lowerCaseTagNames) {
name = name.toLowerCase();
}
if (foreignContextElements.has(name) || htmlIntegrationElements.has(name)) {
this.foreignContext.pop();
}
if (!this.isVoidElement(name)) {
var pos = this.stack.lastIndexOf(name);
if (pos !== -1) {
if (this.cbs.onclosetag) {
var count = this.stack.length - pos;
while (count--) {
this.cbs.onclosetag(this.stack.pop(), count !== 0);
}
} else
this.stack.length = pos;
} else if (!this.options.xmlMode && name === "p") {
this.emitOpenTag("p");
this.closeCurrentTag(true);
}
} else if (!this.options.xmlMode && name === "br") {
(_b = (_a = this.cbs).onopentagname) === null || _b === undefined || _b.call(_a, "br");
(_d = (_c = this.cbs).onopentag) === null || _d === undefined || _d.call(_c, "br", {}, true);
(_f = (_e = this.cbs).onclosetag) === null || _f === undefined || _f.call(_e, "br", false);
}
this.startIndex = endIndex + 1;
};
Parser2.prototype.onselfclosingtag = function(endIndex) {
this.endIndex = endIndex;
if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) {
this.closeCurrentTag(false);
this.startIndex = endIndex + 1;
} else {
this.onopentagend(endIndex);
}
};
Parser2.prototype.closeCurrentTag = function(isOpenImplied) {
var _a, _b;
var name = this.tagname;
this.endOpenTag(isOpenImplied);
if (this.stack[this.stack.length - 1] === name) {
(_b = (_a = this.cbs).onclosetag) === null || _b === undefined || _b.call(_a, name, !isOpenImplied);
this.stack.pop();
}
};
Parser2.prototype.onattribname = function(start, endIndex) {
this.startIndex = start;
var name = this.getSlice(start, endIndex);
this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name;
};
Parser2.prototype.onattribdata = function(start, endIndex) {
this.attribvalue += this.getSlice(start, endIndex);
};
Parser2.prototype.onattribentity = function(cp) {
this.attribvalue += (0, decode_js_1.fromCodePoint)(cp);
};
Parser2.prototype.onattribend = function(quote, endIndex) {
var _a, _b;
this.endIndex = endIndex;
(_b = (_a = this.cbs).onattribute) === null || _b === undefined || _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double ? '"' : quote === Tokenizer_js_1.QuoteType.Single ? "'" : quote === Tokenizer_js_1.QuoteType.NoValue ? undefined : null);
if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
this.attribs[this.attribname] = this.attribvalue;
}
this.attribvalue = "";
};
Parser2.prototype.getInstructionName = function(value) {
var index = value.search(reNameEnd);
var name = index < 0 ? value : value.substr(0, index);
if (this.lowerCaseTagNames) {
name = name.toLowerCase();
}
return name;
};
Parser2.prototype.ondeclaration = function(start, endIndex) {
this.endIndex = endIndex;
var value = this.getSlice(start, endIndex);
if (this.cbs.onprocessinginstruction) {
var name = this.getInstructionName(value);
this.cbs.onprocessinginstruction("!".concat(name), "!".concat(value));
}
this.startIndex = endIndex + 1;
};
Parser2.prototype.onprocessinginstruction = function(start, endIndex) {
this.endIndex = endIndex;
var value = this.getSlice(start, endIndex);
if (this.cbs.onprocessinginstruction) {
var name = this.getInstructionName(value);
this.cbs.onprocessinginstruction("?".concat(name), "?".concat(value));
}
this.startIndex = endIndex + 1;
};
Parser2.prototype.oncomment = function(start, endIndex, offset) {
var _a, _b, _c, _d;
this.endIndex = endIndex;
(_b = (_a = this.cbs).oncomment) === null || _b === undefined || _b.call(_a, this.getSlice(start, endIndex - offset));
(_d = (_c = this.cbs).oncommentend) === null || _d === undefined || _d.call(_c);
this.startIndex = endIndex + 1;
};
Parser2.prototype.oncdata = function(start, endIndex, offset) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
this.endIndex = endIndex;
var value = this.getSlice(start, endIndex - offset);
if (this.options.xmlMode || this.options.recognizeCDATA) {
(_b = (_a = this.cbs).oncdatastart) === null || _b === undefined || _b.call(_a);
(_d = (_c = this.cbs).ontext) === null || _d === undefined || _d.call(_c, value);
(_f = (_e = this.cbs).oncdataend) === null || _f === undefined || _f.call(_e);
} else {
(_h = (_g = this.cbs).oncomment) === null || _h === undefined || _h.call(_g, "[CDATA[".concat(value, "]]"));
(_k = (_j = this.cbs).oncommentend) === null || _k === undefined || _k.call(_j);
}
this.startIndex = endIndex + 1;
};
Parser2.prototype.onend = function() {
var _a, _b;
if (this.cbs.onclosetag) {
this.endIndex = this.startIndex;
for (var index = this.stack.length;index > 0; this.cbs.onclosetag(this.stack[--index], true))
;
}
(_b = (_a = this.cbs).onend) === null || _b === undefined || _b.call(_a);
};
Parser2.prototype.reset = function() {
var _a, _b, _c, _d;
(_b = (_a = this.cbs).onreset) === null || _b === undefined || _b.call(_a);
this.tokenizer.reset();
this.tagname = "";
this.attribname = "";
this.attribs = null;
this.stack.length = 0;
this.startIndex = 0;
this.endIndex = 0;
(_d = (_c = this.cbs).onparserinit) === null || _d === undefined || _d.call(_c, this);
this.buffers.length = 0;
this.bufferOffset = 0;
this.writeIndex = 0;
this.ended = false;
};
Parser2.prototype.parseComplete = function(data) {
this.reset();
this.end(data);
};
Parser2.prototype.getSlice = function(start, end) {
while (start - this.bufferOffset >= this.buffers[0].length) {
this.shiftBuffer();
}
var slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
while (end - this.bufferOffset > this.buffers[0].length) {
this.shiftBuffer();
slice += this.buffers[0].slice(0, end - this.bufferOffset);
}
return slice;
};
Parser2.prototype.shiftBuffer = function() {
this.bufferOffset += this.buffers[0].length;
this.writeIndex--;
this.buffers.shift();
};
Parser2.prototype.write = function(chunk) {
var _a, _b;
if (this.ended) {
(_b = (_a = this.cbs).onerror) === null || _b === undefined || _b.call(_a, new Error(".write() after done!"));
return;
}
this.buffers.push(chunk);
if (this.tokenizer.running) {
this.tokenizer.write(chunk);
this.writeIndex++;
}
};
Parser2.prototype.end = function(chunk) {
var _a, _b;
if (this.ended) {
(_b = (_a = this.cbs).onerror) === null || _b === undefined || _b.call(_a, new Error(".end() after done!"));
return;
}
if (chunk)
this.write(chunk);
this.ended = true;
this.tokenizer.end();
};
Parser2.prototype.pause = function() {
this.tokenizer.pause();
};
Parser2.prototype.resume = function() {
this.tokenizer.resume();
while (this.tokenizer.running && this.writeIndex < this.buffers.length) {
this.tokenizer.write(this.buffers[this.writeIndex++]);
}
if (this.ended)
this.tokenizer.end();
};
Parser2.prototype.parseChunk = function(chunk) {
this.write(chunk);
};
Parser2.prototype.done = function(chunk) {
this.end(chunk);
};
return Parser2;
}();
exports.Parser = Parser;
});
// node_modules/domelementtype/lib/index.js
var require_lib = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = undefined;
var ElementType;
(function(ElementType2) {
ElementType2["Root"] = "root";
ElementType2["Text"] = "text";
ElementType2["Directive"] = "directive";
ElementType2["Comment"] = "comment";
ElementType2["Script"] = "script";
ElementType2["Style"] = "style";
ElementType2["Tag"] = "tag";
ElementType2["CDATA"] = "cdata";
ElementType2["Doctype"] = "doctype";
})(ElementType = exports.ElementType || (exports.ElementType = {}));
function isTag(elem) {
return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
}
exports.isTag = isTag;
exports.Root = ElementType.Root;
exports.Text = ElementType.Text;
exports.Directive = ElementType.Directive;
exports.Comment = ElementType.Comment;
exports.Script = ElementType.Script;
exports.Style = ElementType.Style;
exports.Tag = ElementType.Tag;
exports.CDATA = ElementType.CDATA;
exports.Doctype = ElementType.Doctype;
});
// node_modules/domhandler/lib/node.js
var require_node2 = __commonJS((exports) => {
var __extends = exports && exports.__extends || function() {
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
d2.__proto__ = b2;
} || function(d2, b2) {
for (var p in b2)
if (Object.prototype.hasOwnProperty.call(b2, p))
d2[p] = b2[p];
};
return extendStatics(d, b);
};
return function(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __);
};
}();
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 });
exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = undefined;
var domelementtype_1 = require_lib();
var Node = function() {
function Node2() {
this.parent = null;
this.prev = null;
this.next = null;
this.startIndex = null;
this.endIndex = null;
}
Object.defineProperty(Node2.prototype, "parentNode", {
get: function() {
return this.parent;
},
set: function(parent) {
this.parent = parent;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Node2.prototype, "previousSibling", {
get: function() {
return this.prev;
},
set: function(prev) {
this.prev = prev;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Node2.prototype, "nextSibling", {
get: function() {
return this.next;
},
set: function(next) {
this.next = next;
},
enumerable: false,
configurable: true
});
Node2.prototype.cloneNode = function(recursive) {
if (recursive === undefined) {
recursive = false;
}
return cloneNode(this, recursive);
};
return Node2;
}();
exports.Node = Node;
var DataNode = function(_super) {
__extends(DataNode2, _super);
function DataNode2(data) {
var _this = _super.call(this) || this;
_this.data = data;
return _this;
}
Object.defineProperty(DataNode2.prototype, "nodeValue", {
get: function() {
return this.data;
},
set: function(data) {
this.data = data;
},
enumerable: false,
configurable: true
});
return DataNode2;
}(Node);
exports.DataNode = DataNode;
var Text = function(_super) {
__extends(Text2, _super);
function Text2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Text;
return _this;
}
Object.defineProperty(Text2.prototype, "nodeType", {
get: function() {
return 3;
},
enumerable: false,
configurable: true
});
return Text2;
}(DataNode);
exports.Text = Text;
var Comment = function(_super) {
__extends(Comment2, _super);
function Comment2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Comment;
return _this;
}
Object.defineProperty(Comment2.prototype, "nodeType", {
get: function() {
return 8;
},
enumerable: false,
configurable: true
});
return Comment2;
}(DataNode);
exports.Comment = Comment;
var ProcessingInstruction = function(_super) {
__extends(ProcessingInstruction2, _super);
function ProcessingInstruction2(name, data) {
var _this = _super.call(this, data) || this;
_this.name = name;
_this.type = domelementtype_1.ElementType.Directive;
return _this;
}
Object.defineProperty(ProcessingInstruction2.prototype, "nodeType", {
get: function() {
return 1;
},
enumerable: false,
configurable: true
});
return ProcessingInstruction2;
}(DataNode);
exports.ProcessingInstruction = ProcessingInstruction;
var NodeWithChildren = function(_super) {
__extends(NodeWithChildren2, _super);
function NodeWithChildren2(children) {
var _this = _super.call(this) || this;
_this.children = children;
return _this;
}
Object.defineProperty(NodeWithChildren2.prototype, "firstChild", {
get: function() {
var _a;
return (_a = this.children[0]) !== null && _a !== undefined ? _a : null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(NodeWithChildren2.prototype, "lastChild", {
get: function() {
return this.children.length > 0 ? this.children[this.children.length - 1] : null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(NodeWithChildren2.prototype, "childNodes", {
get: function() {
return this.children;
},
set: function(children) {
this.children = children;
},
enumerable: false,
configurable: true
});
return NodeWithChildren2;
}(Node);
exports.NodeWithChildren = NodeWithChildren;
var CDATA = function(_super) {
__extends(CDATA2, _super);
function CDATA2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.CDATA;
return _this;
}
Object.defineProperty(CDATA2.prototype, "nodeType", {
get: function() {
return 4;
},
enumerable: false,
configurable: true
});
return CDATA2;
}(NodeWithChildren);
exports.CDATA = CDATA;
var Document = function(_super) {
__extends(Document2, _super);
function Document2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Root;
return _this;
}
Object.defineProperty(Document2.prototype, "nodeType", {
get: function() {
return 9;
},
enumerable: false,
configurable: true
});
return Document2;
}(NodeWithChildren);
exports.Document = Document;
var Element = function(_super) {
__extends(Element2, _super);
function Element2(name, attribs, children, type) {
if (children === undefined) {
children = [];
}
if (type === undefined) {
type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag;
}
var _this = _super.call(this, children) || this;
_this.name = name;
_this.attribs = attribs;
_this.type = type;
return _this;
}
Object.defineProperty(Element2.prototype, "nodeType", {
get: function() {
return 1;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Element2.prototype, "tagName", {
get: function() {
return this.name;
},
set: function(name) {
this.name = name;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Element2.prototype, "attributes", {
get: function() {
var _this = this;
return Object.keys(this.attribs).map(function(name) {
var _a, _b;
return {
name,
value: _this.attribs[name],
namespace: (_a = _this["x-attribsNamespace"]) === null || _a === undefined ? undefined : _a[name],
prefix: (_b = _this["x-attribsPrefix"]) === null || _b === undefined ? undefined : _b[name]
};
});
},
enumerable: false,
configurable: true
});
return Element2;
}(NodeWithChildren);
exports.Element = Element;
function isTag(node) {
return (0, domelementtype_1.isTag)(node);
}
exports.isTag = isTag;
function isCDATA(node) {
return node.type === domelementtype_1.ElementType.CDATA;
}
exports.isCDATA = isCDATA;
function isText(node) {
return node.type === domelementtype_1.ElementType.Text;
}
exports.isText = isText;
function isComment(node) {
return node.type === domelementtype_1.ElementType.Comment;
}
exports.isComment = isComment;
function isDirective(node) {
return node.type === domelementtype_1.ElementType.Directive;
}
exports.isDirective = isDirective;
function isDocument(node) {
return node.type === domelementtype_1.ElementType.Root;
}
exports.isDocument = isDocument;
function hasChildren(node) {
return Object.prototype.hasOwnProperty.call(node, "children");
}
exports.hasChildren = hasChildren;
function cloneNode(node, recursive) {
if (recursive === undefined) {
recursive = false;
}
var result;
if (isText(node)) {
result = new Text(node.data);
} else if (isComment(node)) {
result = new Comment(node.data);
} else if (isTag(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
children.forEach(function(child) {
return child.parent = clone_1;
});
if (node.namespace != null) {
clone_1.namespace = node.namespace;
}
if (node["x-attribsNamespace"]) {
clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
}
if (node["x-attribsPrefix"]) {
clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
}
result = clone_1;
} else if (isCDATA(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var clone_2 = new CDATA(children);
children.forEach(function(child) {
return child.parent = clone_2;
});
result = clone_2;
} else if (isDocument(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var clone_3 = new Document(children);
children.forEach(function(child) {
return child.parent = clone_3;
});
if (node["x-mode"]) {
clone_3["x-mode"] = node["x-mode"];
}
result = clone_3;
} else if (isDirective(node)) {
var instruction = new ProcessingInstruction(node.name, node.data);
if (node["x-name"] != null) {
instruction["x-name"] = node["x-name"];
instruction["x-publicId"] = node["x-publicId"];
instruction["x-systemId"] = node["x-systemId"];
}
result = instruction;
} else {
throw new Error("Not implemented yet: ".concat(node.type));
}
result.startIndex = node.startIndex;
result.endIndex = node.endIndex;
if (node.sourceCodeLocation != null) {
result.sourceCodeLocation = node.sourceCodeLocation;
}
return result;
}
exports.cloneNode = cloneNode;
function cloneChildren(childs) {
var children = childs.map(function(child) {
return cloneNode(child, true);
});
for (var i = 1;i < children.length; i++) {
children[i].prev = children[i - 1];
children[i - 1].next = children[i];
}
return children;
}
});
// node_modules/domhandler/lib/index.js
var require_lib2 = __commonJS((exports) => {
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __exportStar = exports && exports.__exportStar || function(m, exports2) {
for (var p in m)
if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p))
__createBinding(exports2, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DomHandler = undefined;
var domelementtype_1 = require_lib();
var node_js_1 = require_node2();
__exportStar(require_node2(), exports);
var defaultOpts = {
withStartIndices: false,
withEndIndices: false,
xmlMode: false
};
var DomHandler = function() {
function DomHandler2(callback, options, elementCB) {
this.dom = [];
this.root = new node_js_1.Document(this.dom);
this.done = false;
this.tagStack = [this.root];
this.lastNode = null;
this.parser = null;
if (typeof options === "function") {
elementCB = options;
options = defaultOpts;
}
if (typeof callback === "object") {
options = callback;
callback = undefined;
}
this.callback = callback !== null && callback !== undefined ? callback : null;
this.options = options !== null && options !== undefined ? options : defaultOpts;
this.elementCB = elementCB !== null && elementCB !== undefined ? elementCB : null;
}
DomHandler2.prototype.onparserinit = function(parser) {
this.parser = parser;
};
DomHandler2.prototype.onreset = function() {
this.dom = [];
this.root = new node_js_1.Document(this.dom);
this.done = false;
this.tagStack = [this.root];
this.lastNode = null;
this.parser = null;
};
DomHandler2.prototype.onend = function() {
if (this.done)
return;
this.done = true;
this.parser = null;
this.handleCallback(null);
};
DomHandler2.prototype.onerror = function(error) {
this.handleCallback(error);
};
DomHandler2.prototype.onclosetag = function() {
this.lastNode = null;
var elem = this.tagStack.pop();
if (this.options.withEndIndices) {
elem.endIndex = this.parser.endIndex;
}
if (this.elementCB)
this.elementCB(elem);
};
DomHandler2.prototype.onopentag = function(name, attribs) {
var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;
var element = new node_js_1.Element(name, attribs, undefined, type);
this.addNode(element);
this.tagStack.push(element);
};
DomHandler2.prototype.ontext = function(data) {
var lastNode = this.lastNode;
if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
lastNode.data += data;
if (this.options.withEndIndices) {
lastNode.endIndex = this.parser.endIndex;
}
} else {
var node = new node_js_1.Text(data);
this.addNode(node);
this.lastNode = node;
}
};
DomHandler2.prototype.oncomment = function(data) {
if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
this.lastNode.data += data;
return;
}
var node = new node_js_1.Comment(data);
this.addNode(node);
this.lastNode = node;
};
DomHandler2.prototype.oncommentend = function() {
this.lastNode = null;
};
DomHandler2.prototype.oncdatastart = function() {
var text = new node_js_1.Text("");
var node = new node_js_1.CDATA([text]);
this.addNode(node);
text.parent = node;
this.lastNode = text;
};
DomHandler2.prototype.oncdataend = function() {
this.lastNode = null;
};
DomHandler2.prototype.onprocessinginstruction = function(name, data) {
var node = new node_js_1.ProcessingInstruction(name, data);
this.addNode(node);
};
DomHandler2.prototype.handleCallback = function(error) {
if (typeof this.callback === "function") {
this.callback(error, this.dom);
} else if (error) {
throw error;
}
};
DomHandler2.prototype.addNode = function(node) {
var parent = this.tagStack[this.tagStack.length - 1];
var previousSibling = parent.children[parent.children.length - 1];
if (this.options.withStartIndices) {
node.startIndex = this.parser.startIndex;
}
if (this.options.withEndIndices) {
node.endIndex = this.parser.endIndex;
}
parent.children.push(node);
if (previousSibling) {
node.prev = previousSibling;
previousSibling.next = node;
}
node.parent = parent;
this.lastNode = null;
};
return DomHandler2;
}();
exports.DomHandler = DomHandler;
exports.default = DomHandler;
});
// node_modules/entities/lib/generated/encode-html.js
var require_encode_html = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
function restoreDiff(arr) {
for (var i = 1;i < arr.length; i++) {
arr[i][0] += arr[i - 1][0] + 1;
}
return arr;
}
exports.default = new Map(/* @__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
});
// node_modules/entities/lib/escape.js
var require_escape = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = undefined;
exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
var xmlCodeMap = new Map([
[34, "&quot;"],
[38, "&amp;"],
[39, "&apos;"],
[60, "&lt;"],
[62, "&gt;"]
]);
exports.getCodePoint = String.prototype.codePointAt != null ? function(str, index) {
return str.codePointAt(index);
} : function(c, index) {
return (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index);
};
function encodeXML(str) {
var ret = "";
var lastIdx = 0;
var match;
while ((match = exports.xmlReplacer.exec(str)) !== null) {
var i = match.index;
var char = str.charCodeAt(i);
var next = xmlCodeMap.get(char);
if (next !== undefined) {
ret += str.substring(lastIdx, i) + next;
lastIdx = i + 1;
} else {
ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";");
lastIdx = exports.xmlReplacer.lastIndex += Number((char & 64512) === 55296);
}
}
return ret + str.substr(lastIdx);
}
exports.encodeXML = encodeXML;
exports.escape = encodeXML;
function getEscaper(regex, map) {
return function escape(data) {
var match;
var lastIdx = 0;
var result = "";
while (match = regex.exec(data)) {
if (lastIdx !== match.index) {
result += data.substring(lastIdx, match.index);
}
result += map.get(match[0].charCodeAt(0));
lastIdx = match.index + 1;
}
return result + data.substring(lastIdx);
};
}
exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
[34, "&quot;"],
[38, "&amp;"],
[160, "&nbsp;"]
]));
exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
[38, "&amp;"],
[60, "&lt;"],
[62, "&gt;"],
[160, "&nbsp;"]
]));
});
// node_modules/entities/lib/encode.js
var require_encode = __commonJS((exports) => {
var __importDefault = exports && exports.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodeNonAsciiHTML = exports.encodeHTML = undefined;
var encode_html_js_1 = __importDefault(require_encode_html());
var escape_js_1 = require_escape();
var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
function encodeHTML(data) {
return encodeHTMLTrieRe(htmlReplacer, data);
}
exports.encodeHTML = encodeHTML;
function encodeNonAsciiHTML(data) {
return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);
}
exports.encodeNonAsciiHTML = encodeNonAsciiHTML;
function encodeHTMLTrieRe(regExp, str) {
var ret = "";
var lastIdx = 0;
var match;
while ((match = regExp.exec(str)) !== null) {
var i = match.index;
ret += str.substring(lastIdx, i);
var char = str.charCodeAt(i);
var next = encode_html_js_1.default.get(char);
if (typeof next === "object") {
if (i + 1 < str.length) {
var nextChar = str.charCodeAt(i + 1);
var value = typeof next.n === "number" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);
if (value !== undefined) {
ret += value;
lastIdx = regExp.lastIndex += 1;
continue;
}
}
next = next.v;
}
if (next !== undefined) {
ret += next;
lastIdx = i + 1;
} else {
var cp = (0, escape_js_1.getCodePoint)(str, i);
ret += "&#x".concat(cp.toString(16), ";");
lastIdx = regExp.lastIndex += Number(cp !== char);
}
}
return ret + str.substr(lastIdx);
}
});
// node_modules/entities/lib/index.js
var require_lib3 = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = undefined;
var decode_js_1 = require_decode();
var encode_js_1 = require_encode();
var escape_js_1 = require_escape();
var EntityLevel;
(function(EntityLevel2) {
EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));
var EncodingMode;
(function(EncodingMode2) {
EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));
function decode(data, options) {
if (options === undefined) {
options = EntityLevel.XML;
}
var level = typeof options === "number" ? options : options.level;
if (level === EntityLevel.HTML) {
var mode = typeof options === "object" ? options.mode : undefined;
return (0, decode_js_1.decodeHTML)(data, mode);
}
return (0, decode_js_1.decodeXML)(data);
}
exports.decode = decode;
function decodeStrict(data, options) {
var _a;
if (options === undefined) {
options = EntityLevel.XML;
}
var opts = typeof options === "number" ? { level: options } : options;
(_a = opts.mode) !== null && _a !== undefined || (opts.mode = decode_js_1.DecodingMode.Strict);
return decode(data, opts);
}
exports.decodeStrict = decodeStrict;
function encode(data, options) {
if (options === undefined) {
options = EntityLevel.XML;
}
var opts = typeof options === "number" ? { level: options } : options;
if (opts.mode === EncodingMode.UTF8)
return (0, escape_js_1.escapeUTF8)(data);
if (opts.mode === EncodingMode.Attribute)
return (0, escape_js_1.escapeAttribute)(data);
if (opts.mode === EncodingMode.Text)
return (0, escape_js_1.escapeText)(data);
if (opts.level === EntityLevel.HTML) {
if (opts.mode === EncodingMode.ASCII) {
return (0, encode_js_1.encodeNonAsciiHTML)(data);
}
return (0, encode_js_1.encodeHTML)(data);
}
return (0, escape_js_1.encodeXML)(data);
}
exports.encode = encode;
var escape_js_2 = require_escape();
Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function() {
return escape_js_2.encodeXML;
} });
Object.defineProperty(exports, "escape", { enumerable: true, get: function() {
return escape_js_2.escape;
} });
Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function() {
return escape_js_2.escapeUTF8;
} });
Object.defineProperty(exports, "escapeAttribute", { enumerable: true, get: function() {
return escape_js_2.escapeAttribute;
} });
Object.defineProperty(exports, "escapeText", { enumerable: true, get: function() {
return escape_js_2.escapeText;
} });
var encode_js_2 = require_encode();
Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function() {
return encode_js_2.encodeHTML;
} });
Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function() {
return encode_js_2.encodeNonAsciiHTML;
} });
Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function() {
return encode_js_2.encodeHTML;
} });
Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function() {
return encode_js_2.encodeHTML;
} });
var decode_js_2 = require_decode();
Object.defineProperty(exports, "EntityDecoder", { enumerable: true, get: function() {
return decode_js_2.EntityDecoder;
} });
Object.defineProperty(exports, "DecodingMode", { enumerable: true, get: function() {
return decode_js_2.DecodingMode;
} });
Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function() {
return decode_js_2.decodeXML;
} });
Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function() {
return decode_js_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function() {
return decode_js_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeHTMLAttribute", { enumerable: true, get: function() {
return decode_js_2.decodeHTMLAttribute;
} });
Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function() {
return decode_js_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function() {
return decode_js_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function() {
return decode_js_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function() {
return decode_js_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function() {
return decode_js_2.decodeXML;
} });
});
// node_modules/dom-serializer/lib/foreignNames.js
var require_foreignNames = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.attributeNames = exports.elementNames = undefined;
exports.elementNames = new Map([
"altGlyph",
"altGlyphDef",
"altGlyphItem",
"animateColor",
"animateMotion",
"animateTransform",
"clipPath",
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feDropShadow",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence",
"foreignObject",
"glyphRef",
"linearGradient",
"radialGradient",
"textPath"
].map(function(val) {
return [val.toLowerCase(), val];
}));
exports.attributeNames = new Map([
"definitionURL",
"attributeName",
"attributeType",
"baseFrequency",
"baseProfile",
"calcMode",
"clipPathUnits",
"diffuseConstant",
"edgeMode",
"filterUnits",
"glyphRef",
"gradientTransform",
"gradientUnits",
"kernelMatrix",
"kernelUnitLength",
"keyPoints",
"keySplines",
"keyTimes",
"lengthAdjust",
"limitingConeAngle",
"markerHeight",
"markerUnits",
"markerWidth",
"maskContentUnits",
"maskUnits",
"numOctaves",
"pathLength",
"patternContentUnits",
"patternTransform",
"patternUnits",
"pointsAtX",
"pointsAtY",
"pointsAtZ",
"preserveAlpha",
"preserveAspectRatio",
"primitiveUnits",
"refX",
"refY",
"repeatCount",
"repeatDur",
"requiredExtensions",
"requiredFeatures",
"specularConstant",
"specularExponent",
"spreadMethod",
"startOffset",
"stdDeviation",
"stitchTiles",
"surfaceScale",
"systemLanguage",
"tableValues",
"targetX",
"targetY",
"textLength",
"viewBox",
"viewTarget",
"xChannelSelector",
"yChannelSelector",
"zoomAndPan"
].map(function(val) {
return [val.toLowerCase(), val];
}));
});
// node_modules/dom-serializer/lib/index.js
var require_lib4 = __commonJS((exports) => {
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);
};
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
});
var __importStar = exports && exports.__importStar || function(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) {
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.render = undefined;
var ElementType = __importStar(require_lib());
var entities_1 = require_lib3();
var foreignNames_js_1 = require_foreignNames();
var unencodedElements = new Set([
"style",
"script",
"xmp",
"iframe",
"noembed",
"noframes",
"plaintext",
"noscript"
]);
function replaceQuotes(value) {
return value.replace(/"/g, "&quot;");
}
function formatAttributes(attributes, opts) {
var _a;
if (!attributes)
return;
var encode = ((_a = opts.encodeEntities) !== null && _a !== undefined ? _a : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? entities_1.encodeXML : entities_1.escapeAttribute;
return Object.keys(attributes).map(function(key) {
var _a2, _b;
var value = (_a2 = attributes[key]) !== null && _a2 !== undefined ? _a2 : "";
if (opts.xmlMode === "foreign") {
key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== undefined ? _b : key;
}
if (!opts.emptyAttrs && !opts.xmlMode && value === "") {
return key;
}
return "".concat(key, "=\"").concat(encode(value), "\"");
}).join(" ");
}
var singleTag = new Set([
"area",
"base",
"basefont",
"br",
"col",
"command",
"embed",
"frame",
"hr",
"img",
"input",
"isindex",
"keygen",
"link",
"meta",
"param",
"source",
"track",
"wbr"
]);
function render(node, options) {
if (options === undefined) {
options = {};
}
var nodes = "length" in node ? node : [node];
var output = "";
for (var i = 0;i < nodes.length; i++) {
output += renderNode(nodes[i], options);
}
return output;
}
exports.render = render;
exports.default = render;
function renderNode(node, options) {
switch (node.type) {
case ElementType.Root:
return render(node.children, options);
case ElementType.Doctype:
case ElementType.Directive:
return renderDirective(node);
case ElementType.Comment:
return renderComment(node);
case ElementType.CDATA:
return renderCdata(node);
case ElementType.Script:
case ElementType.Style:
case ElementType.Tag:
return renderTag(node, options);
case ElementType.Text:
return renderText(node, options);
}
}
var foreignModeIntegrationPoints = new Set([
"mi",
"mo",
"mn",
"ms",
"mtext",
"annotation-xml",
"foreignObject",
"desc",
"title"
]);
var foreignElements = new Set(["svg", "math"]);
function renderTag(elem, opts) {
var _a;
if (opts.xmlMode === "foreign") {
elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== undefined ? _a : elem.name;
if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) {
opts = __assign(__assign({}, opts), { xmlMode: false });
}
}
if (!opts.xmlMode && foreignElements.has(elem.name)) {
opts = __assign(__assign({}, opts), { xmlMode: "foreign" });
}
var tag = "<".concat(elem.name);
var attribs = formatAttributes(elem.attribs, opts);
if (attribs) {
tag += " ".concat(attribs);
}
if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && singleTag.has(elem.name))) {
if (!opts.xmlMode)
tag += " ";
tag += "/>";
} else {
tag += ">";
if (elem.children.length > 0) {
tag += render(elem.children, opts);
}
if (opts.xmlMode || !singleTag.has(elem.name)) {
tag += "</".concat(elem.name, ">");
}
}
return tag;
}
function renderDirective(elem) {
return "<".concat(elem.data, ">");
}
function renderText(elem, opts) {
var _a;
var data = elem.data || "";
if (((_a = opts.encodeEntities) !== null && _a !== undefined ? _a : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) {
data = opts.xmlMode || opts.encodeEntities !== "utf8" ? (0, entities_1.encodeXML)(data) : (0, entities_1.escapeText)(data);
}
return data;
}
function renderCdata(elem) {
return "<![CDATA[".concat(elem.children[0].data, "]]>");
}
function renderComment(elem) {
return "<!--".concat(elem.data, "-->");
}
});
// node_modules/domutils/lib/stringify.js
var require_stringify = __commonJS((exports) => {
var __importDefault = exports && exports.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = undefined;
var domhandler_1 = require_lib2();
var dom_serializer_1 = __importDefault(require_lib4());
var domelementtype_1 = require_lib();
function getOuterHTML(node, options) {
return (0, dom_serializer_1.default)(node, options);
}
exports.getOuterHTML = getOuterHTML;
function getInnerHTML(node, options) {
return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) {
return getOuterHTML(node2, options);
}).join("") : "";
}
exports.getInnerHTML = getInnerHTML;
function getText(node) {
if (Array.isArray(node))
return node.map(getText).join("");
if ((0, domhandler_1.isTag)(node))
return node.name === "br" ? "\n" : getText(node.children);
if ((0, domhandler_1.isCDATA)(node))
return getText(node.children);
if ((0, domhandler_1.isText)(node))
return node.data;
return "";
}
exports.getText = getText;
function textContent(node) {
if (Array.isArray(node))
return node.map(textContent).join("");
if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {
return textContent(node.children);
}
if ((0, domhandler_1.isText)(node))
return node.data;
return "";
}
exports.textContent = textContent;
function innerText(node) {
if (Array.isArray(node))
return node.map(innerText).join("");
if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {
return innerText(node.children);
}
if ((0, domhandler_1.isText)(node))
return node.data;
return "";
}
exports.innerText = innerText;
});
// node_modules/domutils/lib/traversal.js
var require_traversal = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = undefined;
var domhandler_1 = require_lib2();
function getChildren(elem) {
return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];
}
exports.getChildren = getChildren;
function getParent(elem) {
return elem.parent || null;
}
exports.getParent = getParent;
function getSiblings(elem) {
var _a, _b;
var parent = getParent(elem);
if (parent != null)
return getChildren(parent);
var siblings = [elem];
var { prev, next } = elem;
while (prev != null) {
siblings.unshift(prev);
_a = prev, prev = _a.prev;
}
while (next != null) {
siblings.push(next);
_b = next, next = _b.next;
}
return siblings;
}
exports.getSiblings = getSiblings;
function getAttributeValue(elem, name) {
var _a;
return (_a = elem.attribs) === null || _a === undefined ? undefined : _a[name];
}
exports.getAttributeValue = getAttributeValue;
function hasAttrib(elem, name) {
return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;
}
exports.hasAttrib = hasAttrib;
function getName(elem) {
return elem.name;
}
exports.getName = getName;
function nextElementSibling(elem) {
var _a;
var next = elem.next;
while (next !== null && !(0, domhandler_1.isTag)(next))
_a = next, next = _a.next;
return next;
}
exports.nextElementSibling = nextElementSibling;
function prevElementSibling(elem) {
var _a;
var prev = elem.prev;
while (prev !== null && !(0, domhandler_1.isTag)(prev))
_a = prev, prev = _a.prev;
return prev;
}
exports.prevElementSibling = prevElementSibling;
});
// node_modules/domutils/lib/manipulation.js
var require_manipulation = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = undefined;
function removeElement(elem) {
if (elem.prev)
elem.prev.next = elem.next;
if (elem.next)
elem.next.prev = elem.prev;
if (elem.parent) {
var childs = elem.parent.children;
var childsIndex = childs.lastIndexOf(elem);
if (childsIndex >= 0) {
childs.splice(childsIndex, 1);
}
}
elem.next = null;
elem.prev = null;
elem.parent = null;
}
exports.removeElement = removeElement;
function replaceElement(elem, replacement) {
var prev = replacement.prev = elem.prev;
if (prev) {
prev.next = replacement;
}
var next = replacement.next = elem.next;
if (next) {
next.prev = replacement;
}
var parent = replacement.parent = elem.parent;
if (parent) {
var childs = parent.children;
childs[childs.lastIndexOf(elem)] = replacement;
elem.parent = null;
}
}
exports.replaceElement = replaceElement;
function appendChild(parent, child) {
removeElement(child);
child.next = null;
child.parent = parent;
if (parent.children.push(child) > 1) {
var sibling = parent.children[parent.children.length - 2];
sibling.next = child;
child.prev = sibling;
} else {
child.prev = null;
}
}
exports.appendChild = appendChild;
function append(elem, next) {
removeElement(next);
var parent = elem.parent;
var currNext = elem.next;
next.next = currNext;
next.prev = elem;
elem.next = next;
next.parent = parent;
if (currNext) {
currNext.prev = next;
if (parent) {
var childs = parent.children;
childs.splice(childs.lastIndexOf(currNext), 0, next);
}
} else if (parent) {
parent.children.push(next);
}
}
exports.append = append;
function prependChild(parent, child) {
removeElement(child);
child.parent = parent;
child.prev = null;
if (parent.children.unshift(child) !== 1) {
var sibling = parent.children[1];
sibling.prev = child;
child.next = sibling;
} else {
child.next = null;
}
}
exports.prependChild = prependChild;
function prepend(elem, prev) {
removeElement(prev);
var parent = elem.parent;
if (parent) {
var childs = parent.children;
childs.splice(childs.indexOf(elem), 0, prev);
}
if (elem.prev) {
elem.prev.next = prev;
}
prev.parent = parent;
prev.prev = elem.prev;
prev.next = elem;
elem.prev = prev;
}
exports.prepend = prepend;
});
// node_modules/domutils/lib/querying.js
var require_querying = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = undefined;
var domhandler_1 = require_lib2();
function filter(test, node, recurse, limit) {
if (recurse === undefined) {
recurse = true;
}
if (limit === undefined) {
limit = Infinity;
}
return find(test, Array.isArray(node) ? node : [node], recurse, limit);
}
exports.filter = filter;
function find(test, nodes, recurse, limit) {
var result = [];
var nodeStack = [nodes];
var indexStack = [0];
for (;; ) {
if (indexStack[0] >= nodeStack[0].length) {
if (indexStack.length === 1) {
return result;
}
nodeStack.shift();
indexStack.shift();
continue;
}
var elem = nodeStack[0][indexStack[0]++];
if (test(elem)) {
result.push(elem);
if (--limit <= 0)
return result;
}
if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {
indexStack.unshift(0);
nodeStack.unshift(elem.children);
}
}
}
exports.find = find;
function findOneChild(test, nodes) {
return nodes.find(test);
}
exports.findOneChild = findOneChild;
function findOne(test, nodes, recurse) {
if (recurse === undefined) {
recurse = true;
}
var elem = null;
for (var i = 0;i < nodes.length && !elem; i++) {
var node = nodes[i];
if (!(0, domhandler_1.isTag)(node)) {
continue;
} else if (test(node)) {
elem = node;
} else if (recurse && node.children.length > 0) {
elem = findOne(test, node.children, true);
}
}
return elem;
}
exports.findOne = findOne;
function existsOne(test, nodes) {
return nodes.some(function(checked) {
return (0, domhandler_1.isTag)(checked) && (test(checked) || existsOne(test, checked.children));
});
}
exports.existsOne = existsOne;
function findAll(test, nodes) {
var result = [];
var nodeStack = [nodes];
var indexStack = [0];
for (;; ) {
if (indexStack[0] >= nodeStack[0].length) {
if (nodeStack.length === 1) {
return result;
}
nodeStack.shift();
indexStack.shift();
continue;
}
var elem = nodeStack[0][indexStack[0]++];
if (!(0, domhandler_1.isTag)(elem))
continue;
if (test(elem))
result.push(elem);
if (elem.children.length > 0) {
indexStack.unshift(0);
nodeStack.unshift(elem.children);
}
}
}
exports.findAll = findAll;
});
// node_modules/domutils/lib/legacy.js
var require_legacy = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = undefined;
var domhandler_1 = require_lib2();
var querying_js_1 = require_querying();
var Checks = {
tag_name: function(name) {
if (typeof name === "function") {
return function(elem) {
return (0, domhandler_1.isTag)(elem) && name(elem.name);
};
} else if (name === "*") {
return domhandler_1.isTag;
}
return function(elem) {
return (0, domhandler_1.isTag)(elem) && elem.name === name;
};
},
tag_type: function(type) {
if (typeof type === "function") {
return function(elem) {
return type(elem.type);
};
}
return function(elem) {
return elem.type === type;
};
},
tag_contains: function(data) {
if (typeof data === "function") {
return function(elem) {
return (0, domhandler_1.isText)(elem) && data(elem.data);
};
}
return function(elem) {
return (0, domhandler_1.isText)(elem) && elem.data === data;
};
}
};
function getAttribCheck(attrib, value) {
if (typeof value === "function") {
return function(elem) {
return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]);
};
}
return function(elem) {
return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value;
};
}
function combineFuncs(a, b) {
return function(elem) {
return a(elem) || b(elem);
};
}
function compileTest(options) {
var funcs = Object.keys(options).map(function(key) {
var value = options[key];
return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value);
});
return funcs.length === 0 ? null : funcs.reduce(combineFuncs);
}
function testElement(options, node) {
var test = compileTest(options);
return test ? test(node) : true;
}
exports.testElement = testElement;
function getElements(options, nodes, recurse, limit) {
if (limit === undefined) {
limit = Infinity;
}
var test = compileTest(options);
return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : [];
}
exports.getElements = getElements;
function getElementById(id, nodes, recurse) {
if (recurse === undefined) {
recurse = true;
}
if (!Array.isArray(nodes))
nodes = [nodes];
return (0, querying_js_1.findOne)(getAttribCheck("id", id), nodes, recurse);
}
exports.getElementById = getElementById;
function getElementsByTagName(tagName, nodes, recurse, limit) {
if (recurse === undefined) {
recurse = true;
}
if (limit === undefined) {
limit = Infinity;
}
return (0, querying_js_1.filter)(Checks["tag_name"](tagName), nodes, recurse, limit);
}
exports.getElementsByTagName = getElementsByTagName;
function getElementsByTagType(type, nodes, recurse, limit) {
if (recurse === undefined) {
recurse = true;
}
if (limit === undefined) {
limit = Infinity;
}
return (0, querying_js_1.filter)(Checks["tag_type"](type), nodes, recurse, limit);
}
exports.getElementsByTagType = getElementsByTagType;
});
// node_modules/domutils/lib/helpers.js
var require_helpers = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniqueSort = exports.compareDocumentPosition = exports.DocumentPosition = exports.removeSubsets = undefined;
var domhandler_1 = require_lib2();
function removeSubsets(nodes) {
var idx = nodes.length;
while (--idx >= 0) {
var node = nodes[idx];
if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {
nodes.splice(idx, 1);
continue;
}
for (var ancestor = node.parent;ancestor; ancestor = ancestor.parent) {
if (nodes.includes(ancestor)) {
nodes.splice(idx, 1);
break;
}
}
}
return nodes;
}
exports.removeSubsets = removeSubsets;
var DocumentPosition;
(function(DocumentPosition2) {
DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
})(DocumentPosition = exports.DocumentPosition || (exports.DocumentPosition = {}));
function compareDocumentPosition(nodeA, nodeB) {
var aParents = [];
var bParents = [];
if (nodeA === nodeB) {
return 0;
}
var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;
while (current) {
aParents.unshift(current);
current = current.parent;
}
current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;
while (current) {
bParents.unshift(current);
current = current.parent;
}
var maxIdx = Math.min(aParents.length, bParents.length);
var idx = 0;
while (idx < maxIdx && aParents[idx] === bParents[idx]) {
idx++;
}
if (idx === 0) {
return DocumentPosition.DISCONNECTED;
}
var sharedParent = aParents[idx - 1];
var siblings = sharedParent.children;
var aSibling = aParents[idx];
var bSibling = bParents[idx];
if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {
if (sharedParent === nodeB) {
return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;
}
return DocumentPosition.FOLLOWING;
}
if (sharedParent === nodeA) {
return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;
}
return DocumentPosition.PRECEDING;
}
exports.compareDocumentPosition = compareDocumentPosition;
function uniqueSort(nodes) {
nodes = nodes.filter(function(node, i, arr) {
return !arr.includes(node, i + 1);
});
nodes.sort(function(a, b) {
var relative = compareDocumentPosition(a, b);
if (relative & DocumentPosition.PRECEDING) {
return -1;
} else if (relative & DocumentPosition.FOLLOWING) {
return 1;
}
return 0;
});
return nodes;
}
exports.uniqueSort = uniqueSort;
});
// node_modules/domutils/lib/feeds.js
var require_feeds = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFeed = undefined;
var stringify_js_1 = require_stringify();
var legacy_js_1 = require_legacy();
function getFeed(doc) {
var feedRoot = getOneElement(isValidFeed, doc);
return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot);
}
exports.getFeed = getFeed;
function getAtomFeed(feedRoot) {
var _a;
var childs = feedRoot.children;
var feed = {
type: "atom",
items: (0, legacy_js_1.getElementsByTagName)("entry", childs).map(function(item) {
var _a2;
var children = item.children;
var entry = { media: getMediaElements(children) };
addConditionally(entry, "id", "id", children);
addConditionally(entry, "title", "title", children);
var href2 = (_a2 = getOneElement("link", children)) === null || _a2 === undefined ? undefined : _a2.attribs["href"];
if (href2) {
entry.link = href2;
}
var description = fetch2("summary", children) || fetch2("content", children);
if (description) {
entry.description = description;
}
var pubDate = fetch2("updated", children);
if (pubDate) {
entry.pubDate = new Date(pubDate);
}
return entry;
})
};
addConditionally(feed, "id", "id", childs);
addConditionally(feed, "title", "title", childs);
var href = (_a = getOneElement("link", childs)) === null || _a === undefined ? undefined : _a.attribs["href"];
if (href) {
feed.link = href;
}
addConditionally(feed, "description", "subtitle", childs);
var updated = fetch2("updated", childs);
if (updated) {
feed.updated = new Date(updated);
}
addConditionally(feed, "author", "email", childs, true);
return feed;
}
function getRssFeed(feedRoot) {
var _a, _b;
var childs = (_b = (_a = getOneElement("channel", feedRoot.children)) === null || _a === undefined ? undefined : _a.children) !== null && _b !== undefined ? _b : [];
var feed = {
type: feedRoot.name.substr(0, 3),
id: "",
items: (0, legacy_js_1.getElementsByTagName)("item", feedRoot.children).map(function(item) {
var children = item.children;
var entry = { media: getMediaElements(children) };
addConditionally(entry, "id", "guid", children);
addConditionally(entry, "title", "title", children);
addConditionally(entry, "link", "link", children);
addConditionally(entry, "description", "description", children);
var pubDate = fetch2("pubDate", children) || fetch2("dc:date", children);
if (pubDate)
entry.pubDate = new Date(pubDate);
return entry;
})
};
addConditionally(feed, "title", "title", childs);
addConditionally(feed, "link", "link", childs);
addConditionally(feed, "description", "description", childs);
var updated = fetch2("lastBuildDate", childs);
if (updated) {
feed.updated = new Date(updated);
}
addConditionally(feed, "author", "managingEditor", childs, true);
return feed;
}
var MEDIA_KEYS_STRING = ["url", "type", "lang"];
var MEDIA_KEYS_INT = [
"fileSize",
"bitrate",
"framerate",
"samplingrate",
"channels",
"duration",
"height",
"width"
];
function getMediaElements(where) {
return (0, legacy_js_1.getElementsByTagName)("media:content", where).map(function(elem) {
var attribs = elem.attribs;
var media = {
medium: attribs["medium"],
isDefault: !!attribs["isDefault"]
};
for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING;_i < MEDIA_KEYS_STRING_1.length; _i++) {
var attrib = MEDIA_KEYS_STRING_1[_i];
if (attribs[attrib]) {
media[attrib] = attribs[attrib];
}
}
for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT;_a < MEDIA_KEYS_INT_1.length; _a++) {
var attrib = MEDIA_KEYS_INT_1[_a];
if (attribs[attrib]) {
media[attrib] = parseInt(attribs[attrib], 10);
}
}
if (attribs["expression"]) {
media.expression = attribs["expression"];
}
return media;
});
}
function getOneElement(tagName, node) {
return (0, legacy_js_1.getElementsByTagName)(tagName, node, true, 1)[0];
}
function fetch2(tagName, where, recurse) {
if (recurse === undefined) {
recurse = false;
}
return (0, stringify_js_1.textContent)((0, legacy_js_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();
}
function addConditionally(obj, prop, tagName, where, recurse) {
if (recurse === undefined) {
recurse = false;
}
var val = fetch2(tagName, where, recurse);
if (val)
obj[prop] = val;
}
function isValidFeed(value) {
return value === "rss" || value === "feed" || value === "rdf:RDF";
}
});
// node_modules/domutils/lib/index.js
var require_lib5 = __commonJS((exports) => {
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __exportStar = exports && exports.__exportStar || function(m, exports2) {
for (var p in m)
if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p))
__createBinding(exports2, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = undefined;
__exportStar(require_stringify(), exports);
__exportStar(require_traversal(), exports);
__exportStar(require_manipulation(), exports);
__exportStar(require_querying(), exports);
__exportStar(require_legacy(), exports);
__exportStar(require_helpers(), exports);
__exportStar(require_feeds(), exports);
var domhandler_1 = require_lib2();
Object.defineProperty(exports, "isTag", { enumerable: true, get: function() {
return domhandler_1.isTag;
} });
Object.defineProperty(exports, "isCDATA", { enumerable: true, get: function() {
return domhandler_1.isCDATA;
} });
Object.defineProperty(exports, "isText", { enumerable: true, get: function() {
return domhandler_1.isText;
} });
Object.defineProperty(exports, "isComment", { enumerable: true, get: function() {
return domhandler_1.isComment;
} });
Object.defineProperty(exports, "isDocument", { enumerable: true, get: function() {
return domhandler_1.isDocument;
} });
Object.defineProperty(exports, "hasChildren", { enumerable: true, get: function() {
return domhandler_1.hasChildren;
} });
});
// node_modules/htmlparser2/lib/index.js
var require_lib6 = __commonJS((exports) => {
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
});
var __importStar = exports && exports.__importStar || function(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) {
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
var __importDefault = exports && exports.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DomUtils = exports.parseFeed = exports.getFeed = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DefaultHandler = exports.DomHandler = exports.Parser = undefined;
var Parser_js_1 = require_Parser2();
var Parser_js_2 = require_Parser2();
Object.defineProperty(exports, "Parser", { enumerable: true, get: function() {
return Parser_js_2.Parser;
} });
var domhandler_1 = require_lib2();
var domhandler_2 = require_lib2();
Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function() {
return domhandler_2.DomHandler;
} });
Object.defineProperty(exports, "DefaultHandler", { enumerable: true, get: function() {
return domhandler_2.DomHandler;
} });
function parseDocument(data, options) {
var handler = new domhandler_1.DomHandler(undefined, options);
new Parser_js_1.Parser(handler, options).end(data);
return handler.root;
}
exports.parseDocument = parseDocument;
function parseDOM(data, options) {
return parseDocument(data, options).children;
}
exports.parseDOM = parseDOM;
function createDomStream(callback, options, elementCallback) {
var handler = new domhandler_1.DomHandler(callback, options, elementCallback);
return new Parser_js_1.Parser(handler, options);
}
exports.createDomStream = createDomStream;
var Tokenizer_js_1 = require_Tokenizer();
Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function() {
return __importDefault(Tokenizer_js_1).default;
} });
exports.ElementType = __importStar(require_lib());
var domutils_1 = require_lib5();
var domutils_2 = require_lib5();
Object.defineProperty(exports, "getFeed", { enumerable: true, get: function() {
return domutils_2.getFeed;
} });
var parseFeedDefaultOptions = { xmlMode: true };
function parseFeed(feed, options) {
if (options === undefined) {
options = parseFeedDefaultOptions;
}
return (0, domutils_1.getFeed)(parseDOM(feed, options));
}
exports.parseFeed = parseFeed;
exports.DomUtils = __importStar(require_lib5());
});
// node_modules/escape-string-regexp/index.js
var require_escape_string_regexp = __commonJS((exports, module) => {
module.exports = (string) => {
if (typeof string !== "string") {
throw new TypeError("Expected a string");
}
return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
};
});
// node_modules/is-plain-object/dist/is-plain-object.js
var require_is_plain_object = __commonJS((exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
function isObject(o) {
return Object.prototype.toString.call(o) === "[object Object]";
}
function isPlainObject(o) {
var ctor, prot;
if (isObject(o) === false)
return false;
ctor = o.constructor;
if (ctor === undefined)
return true;
prot = ctor.prototype;
if (isObject(prot) === false)
return false;
if (prot.hasOwnProperty("isPrototypeOf") === false) {
return false;
}
return true;
}
exports.isPlainObject = isPlainObject;
});
// node_modules/deepmerge/dist/cjs.js
var require_cjs = __commonJS((exports, module) => {
var isMergeableObject = function isMergeableObject(value) {
return isNonNullObject(value) && !isSpecial(value);
};
function isNonNullObject(value) {
return !!value && typeof value === "object";
}
function isSpecial(value) {
var stringValue = Object.prototype.toString.call(value);
return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
}
var canUseSymbol = typeof Symbol === "function" && Symbol.for;
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
function isReactElement(value) {
return value.$$typeof === REACT_ELEMENT_TYPE;
}
function emptyTarget(val) {
return Array.isArray(val) ? [] : {};
}
function cloneUnlessOtherwiseSpecified(value, options) {
return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;
}
function defaultArrayMerge(target, source, options) {
return target.concat(source).map(function(element) {
return cloneUnlessOtherwiseSpecified(element, options);
});
}
function getMergeFunction(key, options) {
if (!options.customMerge) {
return deepmerge;
}
var customMerge = options.customMerge(key);
return typeof customMerge === "function" ? customMerge : deepmerge;
}
function getEnumerableOwnPropertySymbols(target) {
return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
return Object.propertyIsEnumerable.call(target, symbol);
}) : [];
}
function getKeys(target) {
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
}
function propertyIsOnObject(object, property) {
try {
return property in object;
} catch (_) {
return false;
}
}
function propertyIsUnsafe(target, key) {
return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
}
function mergeObject(target, source, options) {
var destination = {};
if (options.isMergeableObject(target)) {
getKeys(target).forEach(function(key) {
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
});
}
getKeys(source).forEach(function(key) {
if (propertyIsUnsafe(target, key)) {
return;
}
if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
} else {
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
}
});
return destination;
}
function deepmerge(target, source, options) {
options = options || {};
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
var sourceIsArray = Array.isArray(source);
var targetIsArray = Array.isArray(target);
var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
if (!sourceAndTargetTypesMatch) {
return cloneUnlessOtherwiseSpecified(source, options);
} else if (sourceIsArray) {
return options.arrayMerge(target, source, options);
} else {
return mergeObject(target, source, options);
}
}
deepmerge.all = function deepmergeAll(array, options) {
if (!Array.isArray(array)) {
throw new Error("first argument should be an array");
}
return array.reduce(function(prev, next) {
return deepmerge(prev, next, options);
}, {});
};
var deepmerge_1 = deepmerge;
module.exports = deepmerge_1;
});
// node_modules/parse-srcset/src/parse-srcset.js
var require_parse_srcset = __commonJS((exports, module) => {
(function(root, factory) {
if (typeof define === "function" && define.amd) {
define([], factory);
} else if (typeof module === "object" && module.exports) {
module.exports = factory();
} else {
root.parseSrcset = factory();
}
})(exports, function() {
return function(input) {
function isSpace(c2) {
return c2 === " " || c2 === "\t" || c2 === `
` || c2 === "\f" || c2 === `\r`;
}
function collectCharacters(regEx) {
var chars, match = regEx.exec(input.substring(pos));
if (match) {
chars = match[0];
pos += chars.length;
return chars;
}
}
var inputLength = input.length, regexLeadingSpaces = /^[ \t\n\r\u000c]+/, regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/, regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/, regexTrailingCommas = /[,]+$/, regexNonNegativeInteger = /^\d+$/, regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, url, descriptors, currentDescriptor, state, c, pos = 0, candidates = [];
while (true) {
collectCharacters(regexLeadingCommasOrSpaces);
if (pos >= inputLength) {
return candidates;
}
url = collectCharacters(regexLeadingNotSpaces);
descriptors = [];
if (url.slice(-1) === ",") {
url = url.replace(regexTrailingCommas, "");
parseDescriptors();
} else {
tokenize();
}
}
function tokenize() {
collectCharacters(regexLeadingSpaces);
currentDescriptor = "";
state = "in descriptor";
while (true) {
c = input.charAt(pos);
if (state === "in descriptor") {
if (isSpace(c)) {
if (currentDescriptor) {
descriptors.push(currentDescriptor);
currentDescriptor = "";
state = "after descriptor";
}
} else if (c === ",") {
pos += 1;
if (currentDescriptor) {
descriptors.push(currentDescriptor);
}
parseDescriptors();
return;
} else if (c === "(") {
currentDescriptor = currentDescriptor + c;
state = "in parens";
} else if (c === "") {
if (currentDescriptor) {
descriptors.push(currentDescriptor);
}
parseDescriptors();
return;
} else {
currentDescriptor = currentDescriptor + c;
}
} else if (state === "in parens") {
if (c === ")") {
currentDescriptor = currentDescriptor + c;
state = "in descriptor";
} else if (c === "") {
descriptors.push(currentDescriptor);
parseDescriptors();
return;
} else {
currentDescriptor = currentDescriptor + c;
}
} else if (state === "after descriptor") {
if (isSpace(c)) {
} else if (c === "") {
parseDescriptors();
return;
} else {
state = "in descriptor";
pos -= 1;
}
}
pos += 1;
}
}
function parseDescriptors() {
var pError = false, w, d, h, i, candidate = {}, desc, lastChar, value, intVal, floatVal;
for (i = 0;i < descriptors.length; i++) {
desc = descriptors[i];
lastChar = desc[desc.length - 1];
value = desc.substring(0, desc.length - 1);
intVal = parseInt(value, 10);
floatVal = parseFloat(value);
if (regexNonNegativeInteger.test(value) && lastChar === "w") {
if (w || d) {
pError = true;
}
if (intVal === 0) {
pError = true;
} else {
w = intVal;
}
} else if (regexFloatingPoint.test(value) && lastChar === "x") {
if (w || d || h) {
pError = true;
}
if (floatVal < 0) {
pError = true;
} else {
d = floatVal;
}
} else if (regexNonNegativeInteger.test(value) && lastChar === "h") {
if (h || d) {
pError = true;
}
if (intVal === 0) {
pError = true;
} else {
h = intVal;
}
} else {
pError = true;
}
}
if (!pError) {
candidate.url = url;
if (w) {
candidate.w = w;
}
if (d) {
candidate.d = d;
}
if (h) {
candidate.h = h;
}
candidates.push(candidate);
} else if (console && console.log) {
console.log("Invalid srcset descriptor found in '" + input + "' at '" + desc + "'.");
}
}
};
});
});
// node_modules/picocolors/picocolors.js
var require_picocolors = __commonJS((exports, module) => {
var p = process || {};
var argv = p.argv || [];
var env = p.env || {};
var isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI);
var formatter = (open, close, replace = open) => (input) => {
let string = "" + input, index = string.indexOf(close, open.length);
return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
};
var replaceClose = (string, close, replace, index) => {
let result = "", cursor = 0;
do {
result += string.substring(cursor, index) + replace;
cursor = index + close.length;
index = string.indexOf(close, cursor);
} while (~index);
return result + string.substring(cursor);
};
var createColors = (enabled = isColorSupported) => {
let f = enabled ? formatter : () => String;
return {
isColorSupported: enabled,
reset: f("\x1B[0m", "\x1B[0m"),
bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
italic: f("\x1B[3m", "\x1B[23m"),
underline: f("\x1B[4m", "\x1B[24m"),
inverse: f("\x1B[7m", "\x1B[27m"),
hidden: f("\x1B[8m", "\x1B[28m"),
strikethrough: f("\x1B[9m", "\x1B[29m"),
black: f("\x1B[30m", "\x1B[39m"),
red: f("\x1B[31m", "\x1B[39m"),
green: f("\x1B[32m", "\x1B[39m"),
yellow: f("\x1B[33m", "\x1B[39m"),
blue: f("\x1B[34m", "\x1B[39m"),
magenta: f("\x1B[35m", "\x1B[39m"),
cyan: f("\x1B[36m", "\x1B[39m"),
white: f("\x1B[37m", "\x1B[39m"),
gray: f("\x1B[90m", "\x1B[39m"),
bgBlack: f("\x1B[40m", "\x1B[49m"),
bgRed: f("\x1B[41m", "\x1B[49m"),
bgGreen: f("\x1B[42m", "\x1B[49m"),
bgYellow: f("\x1B[43m", "\x1B[49m"),
bgBlue: f("\x1B[44m", "\x1B[49m"),
bgMagenta: f("\x1B[45m", "\x1B[49m"),
bgCyan: f("\x1B[46m", "\x1B[49m"),
bgWhite: f("\x1B[47m", "\x1B[49m"),
blackBright: f("\x1B[90m", "\x1B[39m"),
redBright: f("\x1B[91m", "\x1B[39m"),
greenBright: f("\x1B[92m", "\x1B[39m"),
yellowBright: f("\x1B[93m", "\x1B[39m"),
blueBright: f("\x1B[94m", "\x1B[39m"),
magentaBright: f("\x1B[95m", "\x1B[39m"),
cyanBright: f("\x1B[96m", "\x1B[39m"),
whiteBright: f("\x1B[97m", "\x1B[39m"),
bgBlackBright: f("\x1B[100m", "\x1B[49m"),
bgRedBright: f("\x1B[101m", "\x1B[49m"),
bgGreenBright: f("\x1B[102m", "\x1B[49m"),
bgYellowBright: f("\x1B[103m", "\x1B[49m"),
bgBlueBright: f("\x1B[104m", "\x1B[49m"),
bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
bgCyanBright: f("\x1B[106m", "\x1B[49m"),
bgWhiteBright: f("\x1B[107m", "\x1B[49m")
};
};
module.exports = createColors();
module.exports.createColors = createColors;
});
// node_modules/postcss/lib/tokenize.js
var require_tokenize = __commonJS((exports, module) => {
var SINGLE_QUOTE = "'".charCodeAt(0);
var DOUBLE_QUOTE = '"'.charCodeAt(0);
var BACKSLASH = "\\".charCodeAt(0);
var SLASH = "/".charCodeAt(0);
var NEWLINE = "\n".charCodeAt(0);
var SPACE = " ".charCodeAt(0);
var FEED = "\f".charCodeAt(0);
var TAB = "\t".charCodeAt(0);
var CR = "\r".charCodeAt(0);
var OPEN_SQUARE = "[".charCodeAt(0);
var CLOSE_SQUARE = "]".charCodeAt(0);
var OPEN_PARENTHESES = "(".charCodeAt(0);
var CLOSE_PARENTHESES = ")".charCodeAt(0);
var OPEN_CURLY = "{".charCodeAt(0);
var CLOSE_CURLY = "}".charCodeAt(0);
var SEMICOLON = ";".charCodeAt(0);
var ASTERISK = "*".charCodeAt(0);
var COLON = ":".charCodeAt(0);
var AT = "@".charCodeAt(0);
var RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g;
var RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;
var RE_BAD_BRACKET = /.[\r\n"'(/\\]/;
var RE_HEX_ESCAPE = /[\da-f]/i;
module.exports = function tokenizer(input, options = {}) {
let css = input.css.valueOf();
let ignore = options.ignoreErrors;
let code, content, escape, next, quote;
let currentToken, escaped, escapePos, n, prev;
let length = css.length;
let pos = 0;
let buffer = [];
let returned = [];
function position() {
return pos;
}
function unclosed(what) {
throw input.error("Unclosed " + what, pos);
}
function endOfFile() {
return returned.length === 0 && pos >= length;
}
function nextToken(opts) {
if (returned.length)
return returned.pop();
if (pos >= length)
return;
let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;
code = css.charCodeAt(pos);
switch (code) {
case NEWLINE:
case SPACE:
case TAB:
case CR:
case FEED: {
next = pos;
do {
next += 1;
code = css.charCodeAt(next);
} while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);
currentToken = ["space", css.slice(pos, next)];
pos = next - 1;
break;
}
case OPEN_SQUARE:
case CLOSE_SQUARE:
case OPEN_CURLY:
case CLOSE_CURLY:
case COLON:
case SEMICOLON:
case CLOSE_PARENTHESES: {
let controlChar = String.fromCharCode(code);
currentToken = [controlChar, controlChar, pos];
break;
}
case OPEN_PARENTHESES: {
prev = buffer.length ? buffer.pop()[1] : "";
n = css.charCodeAt(pos + 1);
if (prev === "url" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {
next = pos;
do {
escaped = false;
next = css.indexOf(")", next + 1);
if (next === -1) {
if (ignore || ignoreUnclosed) {
next = pos;
break;
} else {
unclosed("bracket");
}
}
escapePos = next;
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
escapePos -= 1;
escaped = !escaped;
}
} while (escaped);
currentToken = ["brackets", css.slice(pos, next + 1), pos, next];
pos = next;
} else {
next = css.indexOf(")", pos + 1);
content = css.slice(pos, next + 1);
if (next === -1 || RE_BAD_BRACKET.test(content)) {
currentToken = ["(", "(", pos];
} else {
currentToken = ["brackets", content, pos, next];
pos = next;
}
}
break;
}
case SINGLE_QUOTE:
case DOUBLE_QUOTE: {
quote = code === SINGLE_QUOTE ? "'" : '"';
next = pos;
do {
escaped = false;
next = css.indexOf(quote, next + 1);
if (next === -1) {
if (ignore || ignoreUnclosed) {
next = pos + 1;
break;
} else {
unclosed("string");
}
}
escapePos = next;
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
escapePos -= 1;
escaped = !escaped;
}
} while (escaped);
currentToken = ["string", css.slice(pos, next + 1), pos, next];
pos = next;
break;
}
case AT: {
RE_AT_END.lastIndex = pos + 1;
RE_AT_END.test(css);
if (RE_AT_END.lastIndex === 0) {
next = css.length - 1;
} else {
next = RE_AT_END.lastIndex - 2;
}
currentToken = ["at-word", css.slice(pos, next + 1), pos, next];
pos = next;
break;
}
case BACKSLASH: {
next = pos;
escape = true;
while (css.charCodeAt(next + 1) === BACKSLASH) {
next += 1;
escape = !escape;
}
code = css.charCodeAt(next + 1);
if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {
next += 1;
if (RE_HEX_ESCAPE.test(css.charAt(next))) {
while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
next += 1;
}
if (css.charCodeAt(next + 1) === SPACE) {
next += 1;
}
}
}
currentToken = ["word", css.slice(pos, next + 1), pos, next];
pos = next;
break;
}
default: {
if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
next = css.indexOf("*/", pos + 2) + 1;
if (next === 0) {
if (ignore || ignoreUnclosed) {
next = css.length;
} else {
unclosed("comment");
}
}
currentToken = ["comment", css.slice(pos, next + 1), pos, next];
pos = next;
} else {
RE_WORD_END.lastIndex = pos + 1;
RE_WORD_END.test(css);
if (RE_WORD_END.lastIndex === 0) {
next = css.length - 1;
} else {
next = RE_WORD_END.lastIndex - 2;
}
currentToken = ["word", css.slice(pos, next + 1), pos, next];
buffer.push(currentToken);
pos = next;
}
break;
}
}
pos++;
return currentToken;
}
function back(token) {
returned.push(token);
}
return {
back,
endOfFile,
nextToken,
position
};
};
});
// node_modules/postcss/lib/terminal-highlight.js
var require_terminal_highlight = __commonJS((exports, module) => {
var pico = require_picocolors();
var tokenizer = require_tokenize();
var Input;
function registerInput(dependant) {
Input = dependant;
}
var HIGHLIGHT_THEME = {
";": pico.yellow,
":": pico.yellow,
"(": pico.cyan,
")": pico.cyan,
"[": pico.yellow,
"]": pico.yellow,
"{": pico.yellow,
"}": pico.yellow,
"at-word": pico.cyan,
brackets: pico.cyan,
call: pico.cyan,
class: pico.yellow,
comment: pico.gray,
hash: pico.magenta,
string: pico.green
};
function getTokenType([type, value], processor) {
if (type === "word") {
if (value[0] === ".") {
return "class";
}
if (value[0] === "#") {
return "hash";
}
}
if (!processor.endOfFile()) {
let next = processor.nextToken();
processor.back(next);
if (next[0] === "brackets" || next[0] === "(")
return "call";
}
return type;
}
function terminalHighlight(css) {
let processor = tokenizer(new Input(css), { ignoreErrors: true });
let result = "";
while (!processor.endOfFile()) {
let token = processor.nextToken();
let color = HIGHLIGHT_THEME[getTokenType(token, processor)];
if (color) {
result += token[1].split(/\r?\n/).map((i) => color(i)).join("\n");
} else {
result += token[1];
}
}
return result;
}
terminalHighlight.registerInput = registerInput;
module.exports = terminalHighlight;
});
// node_modules/postcss/lib/css-syntax-error.js
var require_css_syntax_error = __commonJS((exports, module) => {
var pico = require_picocolors();
var terminalHighlight = require_terminal_highlight();
class CssSyntaxError extends Error {
constructor(message, line, column, source, file, plugin) {
super(message);
this.name = "CssSyntaxError";
this.reason = message;
if (file) {
this.file = file;
}
if (source) {
this.source = source;
}
if (plugin) {
this.plugin = plugin;
}
if (typeof line !== "undefined" && typeof column !== "undefined") {
if (typeof line === "number") {
this.line = line;
this.column = column;
} else {
this.line = line.line;
this.column = line.column;
this.endLine = column.line;
this.endColumn = column.column;
}
}
this.setMessage();
if (Error.captureStackTrace) {
Error.captureStackTrace(this, CssSyntaxError);
}
}
setMessage() {
this.message = this.plugin ? this.plugin + ": " : "";
this.message += this.file ? this.file : "<css input>";
if (typeof this.line !== "undefined") {
this.message += ":" + this.line + ":" + this.column;
}
this.message += ": " + this.reason;
}
showSourceCode(color) {
if (!this.source)
return "";
let css = this.source;
if (color == null)
color = pico.isColorSupported;
let aside = (text) => text;
let mark = (text) => text;
let highlight = (text) => text;
if (color) {
let { bold, gray, red } = pico.createColors(true);
mark = (text) => bold(red(text));
aside = (text) => gray(text);
if (terminalHighlight) {
highlight = (text) => terminalHighlight(text);
}
}
let lines = css.split(/\r?\n/);
let start = Math.max(this.line - 3, 0);
let end = Math.min(this.line + 2, lines.length);
let maxWidth = String(end).length;
return lines.slice(start, end).map((line, index) => {
let number = start + 1 + index;
let gutter = " " + (" " + number).slice(-maxWidth) + " | ";
if (number === this.line) {
if (line.length > 160) {
let padding = 20;
let subLineStart = Math.max(0, this.column - padding);
let subLineEnd = Math.max(this.column + padding, this.endColumn + padding);
let subLine = line.slice(subLineStart, subLineEnd);
let spacing2 = aside(gutter.replace(/\d/g, " ")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\t]/g, " ");
return mark(">") + aside(gutter) + highlight(subLine) + "\n " + spacing2 + mark("^");
}
let spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, this.column - 1).replace(/[^\t]/g, " ");
return mark(">") + aside(gutter) + highlight(line) + "\n " + spacing + mark("^");
}
return " " + aside(gutter) + highlight(line);
}).join("\n");
}
toString() {
let code = this.showSourceCode();
if (code) {
code = "\n\n" + code + "\n";
}
return this.name + ": " + this.message + code;
}
}
module.exports = CssSyntaxError;
CssSyntaxError.default = CssSyntaxError;
});
// node_modules/postcss/lib/stringifier.js
var require_stringifier = __commonJS((exports, module) => {
var DEFAULT_RAW = {
after: "\n",
beforeClose: "\n",
beforeComment: "\n",
beforeDecl: "\n",
beforeOpen: " ",
beforeRule: "\n",
colon: ": ",
commentLeft: " ",
commentRight: " ",
emptyBody: "",
indent: " ",
semicolon: false
};
function capitalize(str) {
return str[0].toUpperCase() + str.slice(1);
}
class Stringifier {
constructor(builder) {
this.builder = builder;
}
atrule(node, semicolon) {
let name = "@" + node.name;
let params = node.params ? this.rawValue(node, "params") : "";
if (typeof node.raws.afterName !== "undefined") {
name += node.raws.afterName;
} else if (params) {
name += " ";
}
if (node.nodes) {
this.block(node, name + params);
} else {
let end = (node.raws.between || "") + (semicolon ? ";" : "");
this.builder(name + params + end, node);
}
}
beforeAfter(node, detect) {
let value;
if (node.type === "decl") {
value = this.raw(node, null, "beforeDecl");
} else if (node.type === "comment") {
value = this.raw(node, null, "beforeComment");
} else if (detect === "before") {
value = this.raw(node, null, "beforeRule");
} else {
value = this.raw(node, null, "beforeClose");
}
let buf = node.parent;
let depth = 0;
while (buf && buf.type !== "root") {
depth += 1;
buf = buf.parent;
}
if (value.includes("\n")) {
let indent = this.raw(node, null, "indent");
if (indent.length) {
for (let step = 0;step < depth; step++)
value += indent;
}
}
return value;
}
block(node, start) {
let between = this.raw(node, "between", "beforeOpen");
this.builder(start + between + "{", node, "start");
let after;
if (node.nodes && node.nodes.length) {
this.body(node);
after = this.raw(node, "after");
} else {
after = this.raw(node, "after", "emptyBody");
}
if (after)
this.builder(after);
this.builder("}", node, "end");
}
body(node) {
let last = node.nodes.length - 1;
while (last > 0) {
if (node.nodes[last].type !== "comment")
break;
last -= 1;
}
let semicolon = this.raw(node, "semicolon");
for (let i = 0;i < node.nodes.length; i++) {
let child = node.nodes[i];
let before = this.raw(child, "before");
if (before)
this.builder(before);
this.stringify(child, last !== i || semicolon);
}
}
comment(node) {
let left = this.raw(node, "left", "commentLeft");
let right = this.raw(node, "right", "commentRight");
this.builder("/*" + left + node.text + right + "*/", node);
}
decl(node, semicolon) {
let between = this.raw(node, "between", "colon");
let string = node.prop + between + this.rawValue(node, "value");
if (node.important) {
string += node.raws.important || " !important";
}
if (semicolon)
string += ";";
this.builder(string, node);
}
document(node) {
this.body(node);
}
raw(node, own, detect) {
let value;
if (!detect)
detect = own;
if (own) {
value = node.raws[own];
if (typeof value !== "undefined")
return value;
}
let parent = node.parent;
if (detect === "before") {
if (!parent || parent.type === "root" && parent.first === node) {
return "";
}
if (parent && parent.type === "document") {
return "";
}
}
if (!parent)
return DEFAULT_RAW[detect];
let root = node.root();
if (!root.rawCache)
root.rawCache = {};
if (typeof root.rawCache[detect] !== "undefined") {
return root.rawCache[detect];
}
if (detect === "before" || detect === "after") {
return this.beforeAfter(node, detect);
} else {
let method = "raw" + capitalize(detect);
if (this[method]) {
value = this[method](root, node);
} else {
root.walk((i) => {
value = i.raws[own];
if (typeof value !== "undefined")
return false;
});
}
}
if (typeof value === "undefined")
value = DEFAULT_RAW[detect];
root.rawCache[detect] = value;
return value;
}
rawBeforeClose(root) {
let value;
root.walk((i) => {
if (i.nodes && i.nodes.length > 0) {
if (typeof i.raws.after !== "undefined") {
value = i.raws.after;
if (value.includes("\n")) {
value = value.replace(/[^\n]+$/, "");
}
return false;
}
}
});
if (value)
value = value.replace(/\S/g, "");
return value;
}
rawBeforeComment(root, node) {
let value;
root.walkComments((i) => {
if (typeof i.raws.before !== "undefined") {
value = i.raws.before;
if (value.includes("\n")) {
value = value.replace(/[^\n]+$/, "");
}
return false;
}
});
if (typeof value === "undefined") {
value = this.raw(node, null, "beforeDecl");
} else if (value) {
value = value.replace(/\S/g, "");
}
return value;
}
rawBeforeDecl(root, node) {
let value;
root.walkDecls((i) => {
if (typeof i.raws.before !== "undefined") {
value = i.raws.before;
if (value.includes("\n")) {
value = value.replace(/[^\n]+$/, "");
}
return false;
}
});
if (typeof value === "undefined") {
value = this.raw(node, null, "beforeRule");
} else if (value) {
value = value.replace(/\S/g, "");
}
return value;
}
rawBeforeOpen(root) {
let value;
root.walk((i) => {
if (i.type !== "decl") {
value = i.raws.between;
if (typeof value !== "undefined")
return false;
}
});
return value;
}
rawBeforeRule(root) {
let value;
root.walk((i) => {
if (i.nodes && (i.parent !== root || root.first !== i)) {
if (typeof i.raws.before !== "undefined") {
value = i.raws.before;
if (value.includes("\n")) {
value = value.replace(/[^\n]+$/, "");
}
return false;
}
}
});
if (value)
value = value.replace(/\S/g, "");
return value;
}
rawColon(root) {
let value;
root.walkDecls((i) => {
if (typeof i.raws.between !== "undefined") {
value = i.raws.between.replace(/[^\s:]/g, "");
return false;
}
});
return value;
}
rawEmptyBody(root) {
let value;
root.walk((i) => {
if (i.nodes && i.nodes.length === 0) {
value = i.raws.after;
if (typeof value !== "undefined")
return false;
}
});
return value;
}
rawIndent(root) {
if (root.raws.indent)
return root.raws.indent;
let value;
root.walk((i) => {
let p = i.parent;
if (p && p !== root && p.parent && p.parent === root) {
if (typeof i.raws.before !== "undefined") {
let parts = i.raws.before.split("\n");
value = parts[parts.length - 1];
value = value.replace(/\S/g, "");
return false;
}
}
});
return value;
}
rawSemicolon(root) {
let value;
root.walk((i) => {
if (i.nodes && i.nodes.length && i.last.type === "decl") {
value = i.raws.semicolon;
if (typeof value !== "undefined")
return false;
}
});
return value;
}
rawValue(node, prop) {
let value = node[prop];
let raw = node.raws[prop];
if (raw && raw.value === value) {
return raw.raw;
}
return value;
}
root(node) {
this.body(node);
if (node.raws.after)
this.builder(node.raws.after);
}
rule(node) {
this.block(node, this.rawValue(node, "selector"));
if (node.raws.ownSemicolon) {
this.builder(node.raws.ownSemicolon, node, "end");
}
}
stringify(node, semicolon) {
if (!this[node.type]) {
throw new Error("Unknown AST node type " + node.type + ". " + "Maybe you need to change PostCSS stringifier.");
}
this[node.type](node, semicolon);
}
}
module.exports = Stringifier;
Stringifier.default = Stringifier;
});
// node_modules/postcss/lib/stringify.js
var require_stringify2 = __commonJS((exports, module) => {
var Stringifier = require_stringifier();
function stringify(node, builder) {
let str = new Stringifier(builder);
str.stringify(node);
}
module.exports = stringify;
stringify.default = stringify;
});
// node_modules/postcss/lib/symbols.js
var require_symbols = __commonJS((exports, module) => {
exports.isClean = Symbol("isClean");
exports.my = Symbol("my");
});
// node_modules/postcss/lib/node.js
var require_node3 = __commonJS((exports, module) => {
var CssSyntaxError = require_css_syntax_error();
var Stringifier = require_stringifier();
var stringify = require_stringify2();
var { isClean, my } = require_symbols();
function cloneNode(obj, parent) {
let cloned = new obj.constructor;
for (let i in obj) {
if (!Object.prototype.hasOwnProperty.call(obj, i)) {
continue;
}
if (i === "proxyCache")
continue;
let value = obj[i];
let type = typeof value;
if (i === "parent" && type === "object") {
if (parent)
cloned[i] = parent;
} else if (i === "source") {
cloned[i] = value;
} else if (Array.isArray(value)) {
cloned[i] = value.map((j) => cloneNode(j, cloned));
} else {
if (type === "object" && value !== null)
value = cloneNode(value);
cloned[i] = value;
}
}
return cloned;
}
class Node {
constructor(defaults = {}) {
this.raws = {};
this[isClean] = false;
this[my] = true;
for (let name in defaults) {
if (name === "nodes") {
this.nodes = [];
for (let node of defaults[name]) {
if (typeof node.clone === "function") {
this.append(node.clone());
} else {
this.append(node);
}
}
} else {
this[name] = defaults[name];
}
}
}
addToError(error) {
error.postcssNode = this;
if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
let s = this.source;
error.stack = error.stack.replace(/\n\s{4}at /, `\$&${s.input.from}:${s.start.line}:${s.start.column}\$&`);
}
return error;
}
after(add) {
this.parent.insertAfter(this, add);
return this;
}
assign(overrides = {}) {
for (let name in overrides) {
this[name] = overrides[name];
}
return this;
}
before(add) {
this.parent.insertBefore(this, add);
return this;
}
cleanRaws(keepBetween) {
delete this.raws.before;
delete this.raws.after;
if (!keepBetween)
delete this.raws.between;
}
clone(overrides = {}) {
let cloned = cloneNode(this);
for (let name in overrides) {
cloned[name] = overrides[name];
}
return cloned;
}
cloneAfter(overrides = {}) {
let cloned = this.clone(overrides);
this.parent.insertAfter(this, cloned);
return cloned;
}
cloneBefore(overrides = {}) {
let cloned = this.clone(overrides);
this.parent.insertBefore(this, cloned);
return cloned;
}
error(message, opts = {}) {
if (this.source) {
let { end, start } = this.rangeBy(opts);
return this.source.input.error(message, { column: start.column, line: start.line }, { column: end.column, line: end.line }, opts);
}
return new CssSyntaxError(message);
}
getProxyProcessor() {
return {
get(node, prop) {
if (prop === "proxyOf") {
return node;
} else if (prop === "root") {
return () => node.root().toProxy();
} else {
return node[prop];
}
},
set(node, prop, value) {
if (node[prop] === value)
return true;
node[prop] = value;
if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || prop === "text") {
node.markDirty();
}
return true;
}
};
}
markClean() {
this[isClean] = true;
}
markDirty() {
if (this[isClean]) {
this[isClean] = false;
let next = this;
while (next = next.parent) {
next[isClean] = false;
}
}
}
next() {
if (!this.parent)
return;
let index = this.parent.index(this);
return this.parent.nodes[index + 1];
}
positionBy(opts, stringRepresentation) {
let pos = this.source.start;
if (opts.index) {
pos = this.positionInside(opts.index, stringRepresentation);
} else if (opts.word) {
stringRepresentation = this.toString();
let index = stringRepresentation.indexOf(opts.word);
if (index !== -1)
pos = this.positionInside(index, stringRepresentation);
}
return pos;
}
positionInside(index, stringRepresentation) {
let string = stringRepresentation || this.toString();
let column = this.source.start.column;
let line = this.source.start.line;
for (let i = 0;i < index; i++) {
if (string[i] === "\n") {
column = 1;
line += 1;
} else {
column += 1;
}
}
return { column, line };
}
prev() {
if (!this.parent)
return;
let index = this.parent.index(this);
return this.parent.nodes[index - 1];
}
rangeBy(opts) {
let start = {
column: this.source.start.column,
line: this.source.start.line
};
let end = this.source.end ? {
column: this.source.end.column + 1,
line: this.source.end.line
} : {
column: start.column + 1,
line: start.line
};
if (opts.word) {
let stringRepresentation = this.toString();
let index = stringRepresentation.indexOf(opts.word);
if (index !== -1) {
start = this.positionInside(index, stringRepresentation);
end = this.positionInside(index + opts.word.length, stringRepresentation);
}
} else {
if (opts.start) {
start = {
column: opts.start.column,
line: opts.start.line
};
} else if (opts.index) {
start = this.positionInside(opts.index);
}
if (opts.end) {
end = {
column: opts.end.column,
line: opts.end.line
};
} else if (typeof opts.endIndex === "number") {
end = this.positionInside(opts.endIndex);
} else if (opts.index) {
end = this.positionInside(opts.index + 1);
}
}
if (end.line < start.line || end.line === start.line && end.column <= start.column) {
end = { column: start.column + 1, line: start.line };
}
return { end, start };
}
raw(prop, defaultType) {
let str = new Stringifier;
return str.raw(this, prop, defaultType);
}
remove() {
if (this.parent) {
this.parent.removeChild(this);
}
this.parent = undefined;
return this;
}
replaceWith(...nodes) {
if (this.parent) {
let bookmark = this;
let foundSelf = false;
for (let node of nodes) {
if (node === this) {
foundSelf = true;
} else if (foundSelf) {
this.parent.insertAfter(bookmark, node);
bookmark = node;
} else {
this.parent.insertBefore(bookmark, node);
}
}
if (!foundSelf) {
this.remove();
}
}
return this;
}
root() {
let result = this;
while (result.parent && result.parent.type !== "document") {
result = result.parent;
}
return result;
}
toJSON(_, inputs) {
let fixed = {};
let emitInputs = inputs == null;
inputs = inputs || new Map;
let inputsNextIndex = 0;
for (let name in this) {
if (!Object.prototype.hasOwnProperty.call(this, name)) {
continue;
}
if (name === "parent" || name === "proxyCache")
continue;
let value = this[name];
if (Array.isArray(value)) {
fixed[name] = value.map((i) => {
if (typeof i === "object" && i.toJSON) {
return i.toJSON(null, inputs);
} else {
return i;
}
});
} else if (typeof value === "object" && value.toJSON) {
fixed[name] = value.toJSON(null, inputs);
} else if (name === "source") {
let inputId = inputs.get(value.input);
if (inputId == null) {
inputId = inputsNextIndex;
inputs.set(value.input, inputsNextIndex);
inputsNextIndex++;
}
fixed[name] = {
end: value.end,
inputId,
start: value.start
};
} else {
fixed[name] = value;
}
}
if (emitInputs) {
fixed.inputs = [...inputs.keys()].map((input) => input.toJSON());
}
return fixed;
}
toProxy() {
if (!this.proxyCache) {
this.proxyCache = new Proxy(this, this.getProxyProcessor());
}
return this.proxyCache;
}
toString(stringifier = stringify) {
if (stringifier.stringify)
stringifier = stringifier.stringify;
let result = "";
stringifier(this, (i) => {
result += i;
});
return result;
}
warn(result, text, opts) {
let data = { node: this };
for (let i in opts)
data[i] = opts[i];
return result.warn(text, data);
}
get proxyOf() {
return this;
}
}
module.exports = Node;
Node.default = Node;
});
// node_modules/postcss/lib/comment.js
var require_comment = __commonJS((exports, module) => {
var Node = require_node3();
class Comment extends Node {
constructor(defaults) {
super(defaults);
this.type = "comment";
}
}
module.exports = Comment;
Comment.default = Comment;
});
// node_modules/postcss/lib/declaration.js
var require_declaration = __commonJS((exports, module) => {
var Node = require_node3();
class Declaration extends Node {
constructor(defaults) {
if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") {
defaults = { ...defaults, value: String(defaults.value) };
}
super(defaults);
this.type = "decl";
}
get variable() {
return this.prop.startsWith("--") || this.prop[0] === "$";
}
}
module.exports = Declaration;
Declaration.default = Declaration;
});
// node_modules/postcss/lib/container.js
var require_container = __commonJS((exports, module) => {
var Comment = require_comment();
var Declaration = require_declaration();
var Node = require_node3();
var { isClean, my } = require_symbols();
var AtRule;
var parse;
var Root;
var Rule;
function cleanSource(nodes) {
return nodes.map((i) => {
if (i.nodes)
i.nodes = cleanSource(i.nodes);
delete i.source;
return i;
});
}
function markTreeDirty(node) {
node[isClean] = false;
if (node.proxyOf.nodes) {
for (let i of node.proxyOf.nodes) {
markTreeDirty(i);
}
}
}
class Container extends Node {
append(...children) {
for (let child of children) {
let nodes = this.normalize(child, this.last);
for (let node of nodes)
this.proxyOf.nodes.push(node);
}
this.markDirty();
return this;
}
cleanRaws(keepBetween) {
super.cleanRaws(keepBetween);
if (this.nodes) {
for (let node of this.nodes)
node.cleanRaws(keepBetween);
}
}
each(callback) {
if (!this.proxyOf.nodes)
return;
let iterator = this.getIterator();
let index, result;
while (this.indexes[iterator] < this.proxyOf.nodes.length) {
index = this.indexes[iterator];
result = callback(this.proxyOf.nodes[index], index);
if (result === false)
break;
this.indexes[iterator] += 1;
}
delete this.indexes[iterator];
return result;
}
every(condition) {
return this.nodes.every(condition);
}
getIterator() {
if (!this.lastEach)
this.lastEach = 0;
if (!this.indexes)
this.indexes = {};
this.lastEach += 1;
let iterator = this.lastEach;
this.indexes[iterator] = 0;
return iterator;
}
getProxyProcessor() {
return {
get(node, prop) {
if (prop === "proxyOf") {
return node;
} else if (!node[prop]) {
return node[prop];
} else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) {
return (...args) => {
return node[prop](...args.map((i) => {
if (typeof i === "function") {
return (child, index) => i(child.toProxy(), index);
} else {
return i;
}
}));
};
} else if (prop === "every" || prop === "some") {
return (cb) => {
return node[prop]((child, ...other) => cb(child.toProxy(), ...other));
};
} else if (prop === "root") {
return () => node.root().toProxy();
} else if (prop === "nodes") {
return node.nodes.map((i) => i.toProxy());
} else if (prop === "first" || prop === "last") {
return node[prop].toProxy();
} else {
return node[prop];
}
},
set(node, prop, value) {
if (node[prop] === value)
return true;
node[prop] = value;
if (prop === "name" || prop === "params" || prop === "selector") {
node.markDirty();
}
return true;
}
};
}
index(child) {
if (typeof child === "number")
return child;
if (child.proxyOf)
child = child.proxyOf;
return this.proxyOf.nodes.indexOf(child);
}
insertAfter(exist, add) {
let existIndex = this.index(exist);
let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();
existIndex = this.index(exist);
for (let node of nodes)
this.proxyOf.nodes.splice(existIndex + 1, 0, node);
let index;
for (let id in this.indexes) {
index = this.indexes[id];
if (existIndex < index) {
this.indexes[id] = index + nodes.length;
}
}
this.markDirty();
return this;
}
insertBefore(exist, add) {
let existIndex = this.index(exist);
let type = existIndex === 0 ? "prepend" : false;
let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();
existIndex = this.index(exist);
for (let node of nodes)
this.proxyOf.nodes.splice(existIndex, 0, node);
let index;
for (let id in this.indexes) {
index = this.indexes[id];
if (existIndex <= index) {
this.indexes[id] = index + nodes.length;
}
}
this.markDirty();
return this;
}
normalize(nodes, sample) {
if (typeof nodes === "string") {
nodes = cleanSource(parse(nodes).nodes);
} else if (typeof nodes === "undefined") {
nodes = [];
} else if (Array.isArray(nodes)) {
nodes = nodes.slice(0);
for (let i of nodes) {
if (i.parent)
i.parent.removeChild(i, "ignore");
}
} else if (nodes.type === "root" && this.type !== "document") {
nodes = nodes.nodes.slice(0);
for (let i of nodes) {
if (i.parent)
i.parent.removeChild(i, "ignore");
}
} else if (nodes.type) {
nodes = [nodes];
} else if (nodes.prop) {
if (typeof nodes.value === "undefined") {
throw new Error("Value field is missed in node creation");
} else if (typeof nodes.value !== "string") {
nodes.value = String(nodes.value);
}
nodes = [new Declaration(nodes)];
} else if (nodes.selector || nodes.selectors) {
nodes = [new Rule(nodes)];
} else if (nodes.name) {
nodes = [new AtRule(nodes)];
} else if (nodes.text) {
nodes = [new Comment(nodes)];
} else {
throw new Error("Unknown node type in node creation");
}
let processed = nodes.map((i) => {
if (!i[my])
Container.rebuild(i);
i = i.proxyOf;
if (i.parent)
i.parent.removeChild(i);
if (i[isClean])
markTreeDirty(i);
if (!i.raws)
i.raws = {};
if (typeof i.raws.before === "undefined") {
if (sample && typeof sample.raws.before !== "undefined") {
i.raws.before = sample.raws.before.replace(/\S/g, "");
}
}
i.parent = this.proxyOf;
return i;
});
return processed;
}
prepend(...children) {
children = children.reverse();
for (let child of children) {
let nodes = this.normalize(child, this.first, "prepend").reverse();
for (let node of nodes)
this.proxyOf.nodes.unshift(node);
for (let id in this.indexes) {
this.indexes[id] = this.indexes[id] + nodes.length;
}
}
this.markDirty();
return this;
}
push(child) {
child.parent = this;
this.proxyOf.nodes.push(child);
return this;
}
removeAll() {
for (let node of this.proxyOf.nodes)
node.parent = undefined;
this.proxyOf.nodes = [];
this.markDirty();
return this;
}
removeChild(child) {
child = this.index(child);
this.proxyOf.nodes[child].parent = undefined;
this.proxyOf.nodes.splice(child, 1);
let index;
for (let id in this.indexes) {
index = this.indexes[id];
if (index >= child) {
this.indexes[id] = index - 1;
}
}
this.markDirty();
return this;
}
replaceValues(pattern, opts, callback) {
if (!callback) {
callback = opts;
opts = {};
}
this.walkDecls((decl) => {
if (opts.props && !opts.props.includes(decl.prop))
return;
if (opts.fast && !decl.value.includes(opts.fast))
return;
decl.value = decl.value.replace(pattern, callback);
});
this.markDirty();
return this;
}
some(condition) {
return this.nodes.some(condition);
}
walk(callback) {
return this.each((child, i) => {
let result;
try {
result = callback(child, i);
} catch (e) {
throw child.addToError(e);
}
if (result !== false && child.walk) {
result = child.walk(callback);
}
return result;
});
}
walkAtRules(name, callback) {
if (!callback) {
callback = name;
return this.walk((child, i) => {
if (child.type === "atrule") {
return callback(child, i);
}
});
}
if (name instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === "atrule" && name.test(child.name)) {
return callback(child, i);
}
});
}
return this.walk((child, i) => {
if (child.type === "atrule" && child.name === name) {
return callback(child, i);
}
});
}
walkComments(callback) {
return this.walk((child, i) => {
if (child.type === "comment") {
return callback(child, i);
}
});
}
walkDecls(prop, callback) {
if (!callback) {
callback = prop;
return this.walk((child, i) => {
if (child.type === "decl") {
return callback(child, i);
}
});
}
if (prop instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === "decl" && prop.test(child.prop)) {
return callback(child, i);
}
});
}
return this.walk((child, i) => {
if (child.type === "decl" && child.prop === prop) {
return callback(child, i);
}
});
}
walkRules(selector, callback) {
if (!callback) {
callback = selector;
return this.walk((child, i) => {
if (child.type === "rule") {
return callback(child, i);
}
});
}
if (selector instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === "rule" && selector.test(child.selector)) {
return callback(child, i);
}
});
}
return this.walk((child, i) => {
if (child.type === "rule" && child.selector === selector) {
return callback(child, i);
}
});
}
get first() {
if (!this.proxyOf.nodes)
return;
return this.proxyOf.nodes[0];
}
get last() {
if (!this.proxyOf.nodes)
return;
return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];
}
}
Container.registerParse = (dependant) => {
parse = dependant;
};
Container.registerRule = (dependant) => {
Rule = dependant;
};
Container.registerAtRule = (dependant) => {
AtRule = dependant;
};
Container.registerRoot = (dependant) => {
Root = dependant;
};
module.exports = Container;
Container.default = Container;
Container.rebuild = (node) => {
if (node.type === "atrule") {
Object.setPrototypeOf(node, AtRule.prototype);
} else if (node.type === "rule") {
Object.setPrototypeOf(node, Rule.prototype);
} else if (node.type === "decl") {
Object.setPrototypeOf(node, Declaration.prototype);
} else if (node.type === "comment") {
Object.setPrototypeOf(node, Comment.prototype);
} else if (node.type === "root") {
Object.setPrototypeOf(node, Root.prototype);
}
node[my] = true;
if (node.nodes) {
node.nodes.forEach((child) => {
Container.rebuild(child);
});
}
};
});
// node_modules/postcss/lib/at-rule.js
var require_at_rule = __commonJS((exports, module) => {
var Container = require_container();
class AtRule extends Container {
constructor(defaults) {
super(defaults);
this.type = "atrule";
}
append(...children) {
if (!this.proxyOf.nodes)
this.nodes = [];
return super.append(...children);
}
prepend(...children) {
if (!this.proxyOf.nodes)
this.nodes = [];
return super.prepend(...children);
}
}
module.exports = AtRule;
AtRule.default = AtRule;
Container.registerAtRule(AtRule);
});
// node_modules/postcss/lib/document.js
var require_document = __commonJS((exports, module) => {
var Container = require_container();
var LazyResult;
var Processor;
class Document extends Container {
constructor(defaults) {
super({ type: "document", ...defaults });
if (!this.nodes) {
this.nodes = [];
}
}
toResult(opts = {}) {
let lazy = new LazyResult(new Processor, this, opts);
return lazy.stringify();
}
}
Document.registerLazyResult = (dependant) => {
LazyResult = dependant;
};
Document.registerProcessor = (dependant) => {
Processor = dependant;
};
module.exports = Document;
Document.default = Document;
});
// node_modules/nanoid/non-secure/index.cjs
var require_non_secure = __commonJS((exports, module) => {
var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
var customAlphabet = (alphabet, defaultSize = 21) => {
return (size = defaultSize) => {
let id = "";
let i = size;
while (i--) {
id += alphabet[Math.random() * alphabet.length | 0];
}
return id;
};
};
var nanoid = (size = 21) => {
let id = "";
let i = size;
while (i--) {
id += urlAlphabet[Math.random() * 64 | 0];
}
return id;
};
module.exports = { nanoid, customAlphabet };
});
// node_modules/source-map-js/lib/base64.js
var require_base64 = __commonJS((exports) => {
var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
exports.encode = function(number) {
if (0 <= number && number < intToCharMap.length) {
return intToCharMap[number];
}
throw new TypeError("Must be between 0 and 63: " + number);
};
exports.decode = function(charCode) {
var bigA = 65;
var bigZ = 90;
var littleA = 97;
var littleZ = 122;
var zero = 48;
var nine = 57;
var plus = 43;
var slash = 47;
var littleOffset = 26;
var numberOffset = 52;
if (bigA <= charCode && charCode <= bigZ) {
return charCode - bigA;
}
if (littleA <= charCode && charCode <= littleZ) {
return charCode - littleA + littleOffset;
}
if (zero <= charCode && charCode <= nine) {
return charCode - zero + numberOffset;
}
if (charCode == plus) {
return 62;
}
if (charCode == slash) {
return 63;
}
return -1;
};
});
// node_modules/source-map-js/lib/base64-vlq.js
var require_base64_vlq = __commonJS((exports) => {
var base64 = require_base64();
var VLQ_BASE_SHIFT = 5;
var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
var VLQ_BASE_MASK = VLQ_BASE - 1;
var VLQ_CONTINUATION_BIT = VLQ_BASE;
function toVLQSigned(aValue) {
return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;
}
function fromVLQSigned(aValue) {
var isNegative = (aValue & 1) === 1;
var shifted = aValue >> 1;
return isNegative ? -shifted : shifted;
}
exports.encode = function base64VLQ_encode(aValue) {
var encoded = "";
var digit;
var vlq = toVLQSigned(aValue);
do {
digit = vlq & VLQ_BASE_MASK;
vlq >>>= VLQ_BASE_SHIFT;
if (vlq > 0) {
digit |= VLQ_CONTINUATION_BIT;
}
encoded += base64.encode(digit);
} while (vlq > 0);
return encoded;
};
exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
var strLen = aStr.length;
var result = 0;
var shift = 0;
var continuation, digit;
do {
if (aIndex >= strLen) {
throw new Error("Expected more digits in base 64 VLQ value.");
}
digit = base64.decode(aStr.charCodeAt(aIndex++));
if (digit === -1) {
throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
}
continuation = !!(digit & VLQ_CONTINUATION_BIT);
digit &= VLQ_BASE_MASK;
result = result + (digit << shift);
shift += VLQ_BASE_SHIFT;
} while (continuation);
aOutParam.value = fromVLQSigned(result);
aOutParam.rest = aIndex;
};
});
// node_modules/source-map-js/lib/util.js
var require_util2 = __commonJS((exports) => {
function getArg(aArgs, aName, aDefaultValue) {
if (aName in aArgs) {
return aArgs[aName];
} else if (arguments.length === 3) {
return aDefaultValue;
} else {
throw new Error('"' + aName + '" is a required argument.');
}
}
exports.getArg = getArg;
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
var dataUrlRegexp = /^data:.+\,.+$/;
function urlParse(aUrl) {
var match = aUrl.match(urlRegexp);
if (!match) {
return null;
}
return {
scheme: match[1],
auth: match[2],
host: match[3],
port: match[4],
path: match[5]
};
}
exports.urlParse = urlParse;
function urlGenerate(aParsedUrl) {
var url = "";
if (aParsedUrl.scheme) {
url += aParsedUrl.scheme + ":";
}
url += "//";
if (aParsedUrl.auth) {
url += aParsedUrl.auth + "@";
}
if (aParsedUrl.host) {
url += aParsedUrl.host;
}
if (aParsedUrl.port) {
url += ":" + aParsedUrl.port;
}
if (aParsedUrl.path) {
url += aParsedUrl.path;
}
return url;
}
exports.urlGenerate = urlGenerate;
var MAX_CACHED_INPUTS = 32;
function lruMemoize(f) {
var cache = [];
return function(input) {
for (var i = 0;i < cache.length; i++) {
if (cache[i].input === input) {
var temp = cache[0];
cache[0] = cache[i];
cache[i] = temp;
return cache[0].result;
}
}
var result = f(input);
cache.unshift({
input,
result
});
if (cache.length > MAX_CACHED_INPUTS) {
cache.pop();
}
return result;
};
}
var normalize = lruMemoize(function normalize(aPath) {
var path = aPath;
var url = urlParse(aPath);
if (url) {
if (!url.path) {
return aPath;
}
path = url.path;
}
var isAbsolute = exports.isAbsolute(path);
var parts = [];
var start = 0;
var i = 0;
while (true) {
start = i;
i = path.indexOf("/", start);
if (i === -1) {
parts.push(path.slice(start));
break;
} else {
parts.push(path.slice(start, i));
while (i < path.length && path[i] === "/") {
i++;
}
}
}
for (var part, up = 0, i = parts.length - 1;i >= 0; i--) {
part = parts[i];
if (part === ".") {
parts.splice(i, 1);
} else if (part === "..") {
up++;
} else if (up > 0) {
if (part === "") {
parts.splice(i + 1, up);
up = 0;
} else {
parts.splice(i, 2);
up--;
}
}
}
path = parts.join("/");
if (path === "") {
path = isAbsolute ? "/" : ".";
}
if (url) {
url.path = path;
return urlGenerate(url);
}
return path;
});
exports.normalize = normalize;
function join(aRoot, aPath) {
if (aRoot === "") {
aRoot = ".";
}
if (aPath === "") {
aPath = ".";
}
var aPathUrl = urlParse(aPath);
var aRootUrl = urlParse(aRoot);
if (aRootUrl) {
aRoot = aRootUrl.path || "/";
}
if (aPathUrl && !aPathUrl.scheme) {
if (aRootUrl) {
aPathUrl.scheme = aRootUrl.scheme;
}
return urlGenerate(aPathUrl);
}
if (aPathUrl || aPath.match(dataUrlRegexp)) {
return aPath;
}
if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
aRootUrl.host = aPath;
return urlGenerate(aRootUrl);
}
var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath);
if (aRootUrl) {
aRootUrl.path = joined;
return urlGenerate(aRootUrl);
}
return joined;
}
exports.join = join;
exports.isAbsolute = function(aPath) {
return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
};
function relative(aRoot, aPath) {
if (aRoot === "") {
aRoot = ".";
}
aRoot = aRoot.replace(/\/$/, "");
var level = 0;
while (aPath.indexOf(aRoot + "/") !== 0) {
var index = aRoot.lastIndexOf("/");
if (index < 0) {
return aPath;
}
aRoot = aRoot.slice(0, index);
if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
return aPath;
}
++level;
}
return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
}
exports.relative = relative;
var supportsNullProto = function() {
var obj = Object.create(null);
return !("__proto__" in obj);
}();
function identity(s) {
return s;
}
function toSetString(aStr) {
if (isProtoString(aStr)) {
return "$" + aStr;
}
return aStr;
}
exports.toSetString = supportsNullProto ? identity : toSetString;
function fromSetString(aStr) {
if (isProtoString(aStr)) {
return aStr.slice(1);
}
return aStr;
}
exports.fromSetString = supportsNullProto ? identity : fromSetString;
function isProtoString(s) {
if (!s) {
return false;
}
var length = s.length;
if (length < 9) {
return false;
}
if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) {
return false;
}
for (var i = length - 10;i >= 0; i--) {
if (s.charCodeAt(i) !== 36) {
return false;
}
}
return true;
}
function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
var cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0 || onlyCompareOriginal) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByOriginalPositions = compareByOriginalPositions;
function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
var cmp;
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0 || onlyCompareOriginal) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
var cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0 || onlyCompareGenerated) {
return cmp;
}
cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0 || onlyCompareGenerated) {
return cmp;
}
cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
function strcmp(aStr1, aStr2) {
if (aStr1 === aStr2) {
return 0;
}
if (aStr1 === null) {
return 1;
}
if (aStr2 === null) {
return -1;
}
if (aStr1 > aStr2) {
return 1;
}
return -1;
}
function compareByGeneratedPositionsInflated(mappingA, mappingB) {
var cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0) {
return cmp;
}
cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
function parseSourceMapInput(str) {
return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ""));
}
exports.parseSourceMapInput = parseSourceMapInput;
function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
sourceURL = sourceURL || "";
if (sourceRoot) {
if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") {
sourceRoot += "/";
}
sourceURL = sourceRoot + sourceURL;
}
if (sourceMapURL) {
var parsed = urlParse(sourceMapURL);
if (!parsed) {
throw new Error("sourceMapURL could not be parsed");
}
if (parsed.path) {
var index = parsed.path.lastIndexOf("/");
if (index >= 0) {
parsed.path = parsed.path.substring(0, index + 1);
}
}
sourceURL = join(urlGenerate(parsed), sourceURL);
}
return normalize(sourceURL);
}
exports.computeSourceURL = computeSourceURL;
});
// node_modules/source-map-js/lib/array-set.js
var require_array_set = __commonJS((exports) => {
var util = require_util2();
var has = Object.prototype.hasOwnProperty;
var hasNativeMap = typeof Map !== "undefined";
function ArraySet() {
this._array = [];
this._set = hasNativeMap ? new Map : Object.create(null);
}
ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
var set = new ArraySet;
for (var i = 0, len = aArray.length;i < len; i++) {
set.add(aArray[i], aAllowDuplicates);
}
return set;
};
ArraySet.prototype.size = function ArraySet_size() {
return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
};
ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
var idx = this._array.length;
if (!isDuplicate || aAllowDuplicates) {
this._array.push(aStr);
}
if (!isDuplicate) {
if (hasNativeMap) {
this._set.set(aStr, idx);
} else {
this._set[sStr] = idx;
}
}
};
ArraySet.prototype.has = function ArraySet_has(aStr) {
if (hasNativeMap) {
return this._set.has(aStr);
} else {
var sStr = util.toSetString(aStr);
return has.call(this._set, sStr);
}
};
ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
if (hasNativeMap) {
var idx = this._set.get(aStr);
if (idx >= 0) {
return idx;
}
} else {
var sStr = util.toSetString(aStr);
if (has.call(this._set, sStr)) {
return this._set[sStr];
}
}
throw new Error('"' + aStr + '" is not in the set.');
};
ArraySet.prototype.at = function ArraySet_at(aIdx) {
if (aIdx >= 0 && aIdx < this._array.length) {
return this._array[aIdx];
}
throw new Error("No element indexed by " + aIdx);
};
ArraySet.prototype.toArray = function ArraySet_toArray() {
return this._array.slice();
};
exports.ArraySet = ArraySet;
});
// node_modules/source-map-js/lib/mapping-list.js
var require_mapping_list = __commonJS((exports) => {
var util = require_util2();
function generatedPositionAfter(mappingA, mappingB) {
var lineA = mappingA.generatedLine;
var lineB = mappingB.generatedLine;
var columnA = mappingA.generatedColumn;
var columnB = mappingB.generatedColumn;
return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
}
function MappingList() {
this._array = [];
this._sorted = true;
this._last = { generatedLine: -1, generatedColumn: 0 };
}
MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {
this._array.forEach(aCallback, aThisArg);
};
MappingList.prototype.add = function MappingList_add(aMapping) {
if (generatedPositionAfter(this._last, aMapping)) {
this._last = aMapping;
this._array.push(aMapping);
} else {
this._sorted = false;
this._array.push(aMapping);
}
};
MappingList.prototype.toArray = function MappingList_toArray() {
if (!this._sorted) {
this._array.sort(util.compareByGeneratedPositionsInflated);
this._sorted = true;
}
return this._array;
};
exports.MappingList = MappingList;
});
// node_modules/source-map-js/lib/source-map-generator.js
var require_source_map_generator = __commonJS((exports) => {
var base64VLQ = require_base64_vlq();
var util = require_util2();
var ArraySet = require_array_set().ArraySet;
var MappingList = require_mapping_list().MappingList;
function SourceMapGenerator(aArgs) {
if (!aArgs) {
aArgs = {};
}
this._file = util.getArg(aArgs, "file", null);
this._sourceRoot = util.getArg(aArgs, "sourceRoot", null);
this._skipValidation = util.getArg(aArgs, "skipValidation", false);
this._ignoreInvalidMapping = util.getArg(aArgs, "ignoreInvalidMapping", false);
this._sources = new ArraySet;
this._names = new ArraySet;
this._mappings = new MappingList;
this._sourcesContents = null;
}
SourceMapGenerator.prototype._version = 3;
SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {
var sourceRoot = aSourceMapConsumer.sourceRoot;
var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {
file: aSourceMapConsumer.file,
sourceRoot
}));
aSourceMapConsumer.eachMapping(function(mapping) {
var newMapping = {
generated: {
line: mapping.generatedLine,
column: mapping.generatedColumn
}
};
if (mapping.source != null) {
newMapping.source = mapping.source;
if (sourceRoot != null) {
newMapping.source = util.relative(sourceRoot, newMapping.source);
}
newMapping.original = {
line: mapping.originalLine,
column: mapping.originalColumn
};
if (mapping.name != null) {
newMapping.name = mapping.name;
}
}
generator.addMapping(newMapping);
});
aSourceMapConsumer.sources.forEach(function(sourceFile) {
var sourceRelative = sourceFile;
if (sourceRoot !== null) {
sourceRelative = util.relative(sourceRoot, sourceFile);
}
if (!generator._sources.has(sourceRelative)) {
generator._sources.add(sourceRelative);
}
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
if (content != null) {
generator.setSourceContent(sourceFile, content);
}
});
return generator;
};
SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {
var generated = util.getArg(aArgs, "generated");
var original = util.getArg(aArgs, "original", null);
var source = util.getArg(aArgs, "source", null);
var name = util.getArg(aArgs, "name", null);
if (!this._skipValidation) {
if (this._validateMapping(generated, original, source, name) === false) {
return;
}
}
if (source != null) {
source = String(source);
if (!this._sources.has(source)) {
this._sources.add(source);
}
}
if (name != null) {
name = String(name);
if (!this._names.has(name)) {
this._names.add(name);
}
}
this._mappings.add({
generatedLine: generated.line,
generatedColumn: generated.column,
originalLine: original != null && original.line,
originalColumn: original != null && original.column,
source,
name
});
};
SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
var source = aSourceFile;
if (this._sourceRoot != null) {
source = util.relative(this._sourceRoot, source);
}
if (aSourceContent != null) {
if (!this._sourcesContents) {
this._sourcesContents = Object.create(null);
}
this._sourcesContents[util.toSetString(source)] = aSourceContent;
} else if (this._sourcesContents) {
delete this._sourcesContents[util.toSetString(source)];
if (Object.keys(this._sourcesContents).length === 0) {
this._sourcesContents = null;
}
}
};
SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
var sourceFile = aSourceFile;
if (aSourceFile == null) {
if (aSourceMapConsumer.file == null) {
throw new Error("SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, " + 'or the source map\'s "file" property. Both were omitted.');
}
sourceFile = aSourceMapConsumer.file;
}
var sourceRoot = this._sourceRoot;
if (sourceRoot != null) {
sourceFile = util.relative(sourceRoot, sourceFile);
}
var newSources = new ArraySet;
var newNames = new ArraySet;
this._mappings.unsortedForEach(function(mapping) {
if (mapping.source === sourceFile && mapping.originalLine != null) {
var original = aSourceMapConsumer.originalPositionFor({
line: mapping.originalLine,
column: mapping.originalColumn
});
if (original.source != null) {
mapping.source = original.source;
if (aSourceMapPath != null) {
mapping.source = util.join(aSourceMapPath, mapping.source);
}
if (sourceRoot != null) {
mapping.source = util.relative(sourceRoot, mapping.source);
}
mapping.originalLine = original.line;
mapping.originalColumn = original.column;
if (original.name != null) {
mapping.name = original.name;
}
}
}
var source = mapping.source;
if (source != null && !newSources.has(source)) {
newSources.add(source);
}
var name = mapping.name;
if (name != null && !newNames.has(name)) {
newNames.add(name);
}
}, this);
this._sources = newSources;
this._names = newNames;
aSourceMapConsumer.sources.forEach(function(sourceFile2) {
var content = aSourceMapConsumer.sourceContentFor(sourceFile2);
if (content != null) {
if (aSourceMapPath != null) {
sourceFile2 = util.join(aSourceMapPath, sourceFile2);
}
if (sourceRoot != null) {
sourceFile2 = util.relative(sourceRoot, sourceFile2);
}
this.setSourceContent(sourceFile2, content);
}
}, this);
};
SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {
if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") {
var message = "original.line and original.column are not numbers -- you probably meant to omit " + "the original mapping entirely and only map the generated position. If so, pass " + "null for the original mapping instead of an object with empty or null values.";
if (this._ignoreInvalidMapping) {
if (typeof console !== "undefined" && console.warn) {
console.warn(message);
}
return false;
} else {
throw new Error(message);
}
}
if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {
return;
} else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {
return;
} else {
var message = "Invalid mapping: " + JSON.stringify({
generated: aGenerated,
source: aSource,
original: aOriginal,
name: aName
});
if (this._ignoreInvalidMapping) {
if (typeof console !== "undefined" && console.warn) {
console.warn(message);
}
return false;
} else {
throw new Error(message);
}
}
};
SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {
var previousGeneratedColumn = 0;
var previousGeneratedLine = 1;
var previousOriginalColumn = 0;
var previousOriginalLine = 0;
var previousName = 0;
var previousSource = 0;
var result = "";
var next;
var mapping;
var nameIdx;
var sourceIdx;
var mappings = this._mappings.toArray();
for (var i = 0, len = mappings.length;i < len; i++) {
mapping = mappings[i];
next = "";
if (mapping.generatedLine !== previousGeneratedLine) {
previousGeneratedColumn = 0;
while (mapping.generatedLine !== previousGeneratedLine) {
next += ";";
previousGeneratedLine++;
}
} else {
if (i > 0) {
if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
continue;
}
next += ",";
}
}
next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);
previousGeneratedColumn = mapping.generatedColumn;
if (mapping.source != null) {
sourceIdx = this._sources.indexOf(mapping.source);
next += base64VLQ.encode(sourceIdx - previousSource);
previousSource = sourceIdx;
next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);
previousOriginalLine = mapping.originalLine - 1;
next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);
previousOriginalColumn = mapping.originalColumn;
if (mapping.name != null) {
nameIdx = this._names.indexOf(mapping.name);
next += base64VLQ.encode(nameIdx - previousName);
previousName = nameIdx;
}
}
result += next;
}
return result;
};
SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
return aSources.map(function(source) {
if (!this._sourcesContents) {
return null;
}
if (aSourceRoot != null) {
source = util.relative(aSourceRoot, source);
}
var key = util.toSetString(source);
return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;
}, this);
};
SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {
var map = {
version: this._version,
sources: this._sources.toArray(),
names: this._names.toArray(),
mappings: this._serializeMappings()
};
if (this._file != null) {
map.file = this._file;
}
if (this._sourceRoot != null) {
map.sourceRoot = this._sourceRoot;
}
if (this._sourcesContents) {
map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
}
return map;
};
SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {
return JSON.stringify(this.toJSON());
};
exports.SourceMapGenerator = SourceMapGenerator;
});
// node_modules/source-map-js/lib/binary-search.js
var require_binary_search = __commonJS((exports) => {
exports.GREATEST_LOWER_BOUND = 1;
exports.LEAST_UPPER_BOUND = 2;
function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
var mid = Math.floor((aHigh - aLow) / 2) + aLow;
var cmp = aCompare(aNeedle, aHaystack[mid], true);
if (cmp === 0) {
return mid;
} else if (cmp > 0) {
if (aHigh - mid > 1) {
return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
}
if (aBias == exports.LEAST_UPPER_BOUND) {
return aHigh < aHaystack.length ? aHigh : -1;
} else {
return mid;
}
} else {
if (mid - aLow > 1) {
return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
}
if (aBias == exports.LEAST_UPPER_BOUND) {
return mid;
} else {
return aLow < 0 ? -1 : aLow;
}
}
}
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
if (aHaystack.length === 0) {
return -1;
}
var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);
if (index < 0) {
return -1;
}
while (index - 1 >= 0) {
if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
break;
}
--index;
}
return index;
};
});
// node_modules/source-map-js/lib/quick-sort.js
var require_quick_sort = __commonJS((exports) => {
function SortTemplate(comparator) {
function swap(ary, x, y) {
var temp = ary[x];
ary[x] = ary[y];
ary[y] = temp;
}
function randomIntInRange(low, high) {
return Math.round(low + Math.random() * (high - low));
}
function doQuickSort(ary, comparator2, p, r) {
if (p < r) {
var pivotIndex = randomIntInRange(p, r);
var i = p - 1;
swap(ary, pivotIndex, r);
var pivot = ary[r];
for (var j = p;j < r; j++) {
if (comparator2(ary[j], pivot, false) <= 0) {
i += 1;
swap(ary, i, j);
}
}
swap(ary, i + 1, j);
var q = i + 1;
doQuickSort(ary, comparator2, p, q - 1);
doQuickSort(ary, comparator2, q + 1, r);
}
}
return doQuickSort;
}
function cloneSort(comparator) {
let template = SortTemplate.toString();
let templateFn = new Function(`return ${template}`)();
return templateFn(comparator);
}
var sortCache = new WeakMap;
exports.quickSort = function(ary, comparator, start = 0) {
let doQuickSort = sortCache.get(comparator);
if (doQuickSort === undefined) {
doQuickSort = cloneSort(comparator);
sortCache.set(comparator, doQuickSort);
}
doQuickSort(ary, comparator, start, ary.length - 1);
};
});
// node_modules/source-map-js/lib/source-map-consumer.js
var require_source_map_consumer = __commonJS((exports) => {
var util = require_util2();
var binarySearch = require_binary_search();
var ArraySet = require_array_set().ArraySet;
var base64VLQ = require_base64_vlq();
var quickSort = require_quick_sort().quickSort;
function SourceMapConsumer(aSourceMap, aSourceMapURL) {
var sourceMap = aSourceMap;
if (typeof aSourceMap === "string") {
sourceMap = util.parseSourceMapInput(aSourceMap);
}
return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
}
SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
};
SourceMapConsumer.prototype._version = 3;
SourceMapConsumer.prototype.__generatedMappings = null;
Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", {
configurable: true,
enumerable: true,
get: function() {
if (!this.__generatedMappings) {
this._parseMappings(this._mappings, this.sourceRoot);
}
return this.__generatedMappings;
}
});
SourceMapConsumer.prototype.__originalMappings = null;
Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", {
configurable: true,
enumerable: true,
get: function() {
if (!this.__originalMappings) {
this._parseMappings(this._mappings, this.sourceRoot);
}
return this.__originalMappings;
}
});
SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
var c = aStr.charAt(index);
return c === ";" || c === ",";
};
SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
throw new Error("Subclasses must implement _parseMappings");
};
SourceMapConsumer.GENERATED_ORDER = 1;
SourceMapConsumer.ORIGINAL_ORDER = 2;
SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
SourceMapConsumer.LEAST_UPPER_BOUND = 2;
SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
var context = aContext || null;
var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
var mappings;
switch (order) {
case SourceMapConsumer.GENERATED_ORDER:
mappings = this._generatedMappings;
break;
case SourceMapConsumer.ORIGINAL_ORDER:
mappings = this._originalMappings;
break;
default:
throw new Error("Unknown order of iteration.");
}
var sourceRoot = this.sourceRoot;
var boundCallback = aCallback.bind(context);
var names = this._names;
var sources = this._sources;
var sourceMapURL = this._sourceMapURL;
for (var i = 0, n = mappings.length;i < n; i++) {
var mapping = mappings[i];
var source = mapping.source === null ? null : sources.at(mapping.source);
if (source !== null) {
source = util.computeSourceURL(sourceRoot, source, sourceMapURL);
}
boundCallback({
source,
generatedLine: mapping.generatedLine,
generatedColumn: mapping.generatedColumn,
originalLine: mapping.originalLine,
originalColumn: mapping.originalColumn,
name: mapping.name === null ? null : names.at(mapping.name)
});
}
};
SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
var line = util.getArg(aArgs, "line");
var needle = {
source: util.getArg(aArgs, "source"),
originalLine: line,
originalColumn: util.getArg(aArgs, "column", 0)
};
needle.source = this._findSourceIndex(needle.source);
if (needle.source < 0) {
return [];
}
var mappings = [];
var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);
if (index >= 0) {
var mapping = this._originalMappings[index];
if (aArgs.column === undefined) {
var originalLine = mapping.originalLine;
while (mapping && mapping.originalLine === originalLine) {
mappings.push({
line: util.getArg(mapping, "generatedLine", null),
column: util.getArg(mapping, "generatedColumn", null),
lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
});
mapping = this._originalMappings[++index];
}
} else {
var originalColumn = mapping.originalColumn;
while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {
mappings.push({
line: util.getArg(mapping, "generatedLine", null),
column: util.getArg(mapping, "generatedColumn", null),
lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
});
mapping = this._originalMappings[++index];
}
}
}
return mappings;
};
exports.SourceMapConsumer = SourceMapConsumer;
function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
var sourceMap = aSourceMap;
if (typeof aSourceMap === "string") {
sourceMap = util.parseSourceMapInput(aSourceMap);
}
var version = util.getArg(sourceMap, "version");
var sources = util.getArg(sourceMap, "sources");
var names = util.getArg(sourceMap, "names", []);
var sourceRoot = util.getArg(sourceMap, "sourceRoot", null);
var sourcesContent = util.getArg(sourceMap, "sourcesContent", null);
var mappings = util.getArg(sourceMap, "mappings");
var file = util.getArg(sourceMap, "file", null);
if (version != this._version) {
throw new Error("Unsupported version: " + version);
}
if (sourceRoot) {
sourceRoot = util.normalize(sourceRoot);
}
sources = sources.map(String).map(util.normalize).map(function(source) {
return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;
});
this._names = ArraySet.fromArray(names.map(String), true);
this._sources = ArraySet.fromArray(sources, true);
this._absoluteSources = this._sources.toArray().map(function(s) {
return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
});
this.sourceRoot = sourceRoot;
this.sourcesContent = sourcesContent;
this._mappings = mappings;
this._sourceMapURL = aSourceMapURL;
this.file = file;
}
BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
var relativeSource = aSource;
if (this.sourceRoot != null) {
relativeSource = util.relative(this.sourceRoot, relativeSource);
}
if (this._sources.has(relativeSource)) {
return this._sources.indexOf(relativeSource);
}
var i;
for (i = 0;i < this._absoluteSources.length; ++i) {
if (this._absoluteSources[i] == aSource) {
return i;
}
}
return -1;
};
BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
var smc = Object.create(BasicSourceMapConsumer.prototype);
var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
smc.sourceRoot = aSourceMap._sourceRoot;
smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);
smc.file = aSourceMap._file;
smc._sourceMapURL = aSourceMapURL;
smc._absoluteSources = smc._sources.toArray().map(function(s) {
return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
});
var generatedMappings = aSourceMap._mappings.toArray().slice();
var destGeneratedMappings = smc.__generatedMappings = [];
var destOriginalMappings = smc.__originalMappings = [];
for (var i = 0, length = generatedMappings.length;i < length; i++) {
var srcMapping = generatedMappings[i];
var destMapping = new Mapping;
destMapping.generatedLine = srcMapping.generatedLine;
destMapping.generatedColumn = srcMapping.generatedColumn;
if (srcMapping.source) {
destMapping.source = sources.indexOf(srcMapping.source);
destMapping.originalLine = srcMapping.originalLine;
destMapping.originalColumn = srcMapping.originalColumn;
if (srcMapping.name) {
destMapping.name = names.indexOf(srcMapping.name);
}
destOriginalMappings.push(destMapping);
}
destGeneratedMappings.push(destMapping);
}
quickSort(smc.__originalMappings, util.compareByOriginalPositions);
return smc;
};
BasicSourceMapConsumer.prototype._version = 3;
Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", {
get: function() {
return this._absoluteSources.slice();
}
});
function Mapping() {
this.generatedLine = 0;
this.generatedColumn = 0;
this.source = null;
this.originalLine = null;
this.originalColumn = null;
this.name = null;
}
var compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine;
function sortGenerated(array, start) {
let l = array.length;
let n = array.length - start;
if (n <= 1) {
return;
} else if (n == 2) {
let a = array[start];
let b = array[start + 1];
if (compareGenerated(a, b) > 0) {
array[start] = b;
array[start + 1] = a;
}
} else if (n < 20) {
for (let i = start;i < l; i++) {
for (let j = i;j > start; j--) {
let a = array[j - 1];
let b = array[j];
if (compareGenerated(a, b) <= 0) {
break;
}
array[j - 1] = b;
array[j] = a;
}
}
} else {
quickSort(array, compareGenerated, start);
}
}
BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
var generatedLine = 1;
var previousGeneratedColumn = 0;
var previousOriginalLine = 0;
var previousOriginalColumn = 0;
var previousSource = 0;
var previousName = 0;
var length = aStr.length;
var index = 0;
var cachedSegments = {};
var temp = {};
var originalMappings = [];
var generatedMappings = [];
var mapping, str, segment, end, value;
let subarrayStart = 0;
while (index < length) {
if (aStr.charAt(index) === ";") {
generatedLine++;
index++;
previousGeneratedColumn = 0;
sortGenerated(generatedMappings, subarrayStart);
subarrayStart = generatedMappings.length;
} else if (aStr.charAt(index) === ",") {
index++;
} else {
mapping = new Mapping;
mapping.generatedLine = generatedLine;
for (end = index;end < length; end++) {
if (this._charIsMappingSeparator(aStr, end)) {
break;
}
}
str = aStr.slice(index, end);
segment = [];
while (index < end) {
base64VLQ.decode(aStr, index, temp);
value = temp.value;
index = temp.rest;
segment.push(value);
}
if (segment.length === 2) {
throw new Error("Found a source, but no line and column");
}
if (segment.length === 3) {
throw new Error("Found a source and line, but no column");
}
mapping.generatedColumn = previousGeneratedColumn + segment[0];
previousGeneratedColumn = mapping.generatedColumn;
if (segment.length > 1) {
mapping.source = previousSource + segment[1];
previousSource += segment[1];
mapping.originalLine = previousOriginalLine + segment[2];
previousOriginalLine = mapping.originalLine;
mapping.originalLine += 1;
mapping.originalColumn = previousOriginalColumn + segment[3];
previousOriginalColumn = mapping.originalColumn;
if (segment.length > 4) {
mapping.name = previousName + segment[4];
previousName += segment[4];
}
}
generatedMappings.push(mapping);
if (typeof mapping.originalLine === "number") {
let currentSource = mapping.source;
while (originalMappings.length <= currentSource) {
originalMappings.push(null);
}
if (originalMappings[currentSource] === null) {
originalMappings[currentSource] = [];
}
originalMappings[currentSource].push(mapping);
}
}
}
sortGenerated(generatedMappings, subarrayStart);
this.__generatedMappings = generatedMappings;
for (var i = 0;i < originalMappings.length; i++) {
if (originalMappings[i] != null) {
quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource);
}
}
this.__originalMappings = [].concat(...originalMappings);
};
BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {
if (aNeedle[aLineName] <= 0) {
throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]);
}
if (aNeedle[aColumnName] < 0) {
throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]);
}
return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
};
BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {
for (var index = 0;index < this._generatedMappings.length; ++index) {
var mapping = this._generatedMappings[index];
if (index + 1 < this._generatedMappings.length) {
var nextMapping = this._generatedMappings[index + 1];
if (mapping.generatedLine === nextMapping.generatedLine) {
mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
continue;
}
}
mapping.lastGeneratedColumn = Infinity;
}
};
BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {
var needle = {
generatedLine: util.getArg(aArgs, "line"),
generatedColumn: util.getArg(aArgs, "column")
};
var index = this._findMapping(needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND));
if (index >= 0) {
var mapping = this._generatedMappings[index];
if (mapping.generatedLine === needle.generatedLine) {
var source = util.getArg(mapping, "source", null);
if (source !== null) {
source = this._sources.at(source);
source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
}
var name = util.getArg(mapping, "name", null);
if (name !== null) {
name = this._names.at(name);
}
return {
source,
line: util.getArg(mapping, "originalLine", null),
column: util.getArg(mapping, "originalColumn", null),
name
};
}
}
return {
source: null,
line: null,
column: null,
name: null
};
};
BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {
if (!this.sourcesContent) {
return false;
}
return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) {
return sc == null;
});
};
BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
if (!this.sourcesContent) {
return null;
}
var index = this._findSourceIndex(aSource);
if (index >= 0) {
return this.sourcesContent[index];
}
var relativeSource = aSource;
if (this.sourceRoot != null) {
relativeSource = util.relative(this.sourceRoot, relativeSource);
}
var url;
if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {
var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) {
return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];
}
if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) {
return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
}
}
if (nullOnMissing) {
return null;
} else {
throw new Error('"' + relativeSource + '" is not in the SourceMap.');
}
};
BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {
var source = util.getArg(aArgs, "source");
source = this._findSourceIndex(source);
if (source < 0) {
return {
line: null,
column: null,
lastColumn: null
};
}
var needle = {
source,
originalLine: util.getArg(aArgs, "line"),
originalColumn: util.getArg(aArgs, "column")
};
var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND));
if (index >= 0) {
var mapping = this._originalMappings[index];
if (mapping.source === needle.source) {
return {
line: util.getArg(mapping, "generatedLine", null),
column: util.getArg(mapping, "generatedColumn", null),
lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
};
}
}
return {
line: null,
column: null,
lastColumn: null
};
};
exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
var sourceMap = aSourceMap;
if (typeof aSourceMap === "string") {
sourceMap = util.parseSourceMapInput(aSourceMap);
}
var version = util.getArg(sourceMap, "version");
var sections = util.getArg(sourceMap, "sections");
if (version != this._version) {
throw new Error("Unsupported version: " + version);
}
this._sources = new ArraySet;
this._names = new ArraySet;
var lastOffset = {
line: -1,
column: 0
};
this._sections = sections.map(function(s) {
if (s.url) {
throw new Error("Support for url field in sections not implemented.");
}
var offset = util.getArg(s, "offset");
var offsetLine = util.getArg(offset, "line");
var offsetColumn = util.getArg(offset, "column");
if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {
throw new Error("Section offsets must be ordered and non-overlapping.");
}
lastOffset = offset;
return {
generatedOffset: {
generatedLine: offsetLine + 1,
generatedColumn: offsetColumn + 1
},
consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL)
};
});
}
IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
IndexedSourceMapConsumer.prototype._version = 3;
Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", {
get: function() {
var sources = [];
for (var i = 0;i < this._sections.length; i++) {
for (var j = 0;j < this._sections[i].consumer.sources.length; j++) {
sources.push(this._sections[i].consumer.sources[j]);
}
}
return sources;
}
});
IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
var needle = {
generatedLine: util.getArg(aArgs, "line"),
generatedColumn: util.getArg(aArgs, "column")
};
var sectionIndex = binarySearch.search(needle, this._sections, function(needle2, section2) {
var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine;
if (cmp) {
return cmp;
}
return needle2.generatedColumn - section2.generatedOffset.generatedColumn;
});
var section = this._sections[sectionIndex];
if (!section) {
return {
source: null,
line: null,
column: null,
name: null
};
}
return section.consumer.originalPositionFor({
line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),
column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
bias: aArgs.bias
});
};
IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {
return this._sections.every(function(s) {
return s.consumer.hasContentsOfAllSources();
});
};
IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
for (var i = 0;i < this._sections.length; i++) {
var section = this._sections[i];
var content = section.consumer.sourceContentFor(aSource, true);
if (content || content === "") {
return content;
}
}
if (nullOnMissing) {
return null;
} else {
throw new Error('"' + aSource + '" is not in the SourceMap.');
}
};
IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
for (var i = 0;i < this._sections.length; i++) {
var section = this._sections[i];
if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) {
continue;
}
var generatedPosition = section.consumer.generatedPositionFor(aArgs);
if (generatedPosition) {
var ret = {
line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),
column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)
};
return ret;
}
}
return {
line: null,
column: null
};
};
IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
this.__generatedMappings = [];
this.__originalMappings = [];
for (var i = 0;i < this._sections.length; i++) {
var section = this._sections[i];
var sectionMappings = section.consumer._generatedMappings;
for (var j = 0;j < sectionMappings.length; j++) {
var mapping = sectionMappings[j];
var source = section.consumer._sources.at(mapping.source);
if (source !== null) {
source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
}
this._sources.add(source);
source = this._sources.indexOf(source);
var name = null;
if (mapping.name) {
name = section.consumer._names.at(mapping.name);
this._names.add(name);
name = this._names.indexOf(name);
}
var adjustedMapping = {
source,
generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),
generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
originalLine: mapping.originalLine,
originalColumn: mapping.originalColumn,
name
};
this.__generatedMappings.push(adjustedMapping);
if (typeof adjustedMapping.originalLine === "number") {
this.__originalMappings.push(adjustedMapping);
}
}
}
quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
quickSort(this.__originalMappings, util.compareByOriginalPositions);
};
exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
});
// node_modules/source-map-js/lib/source-node.js
var require_source_node = __commonJS((exports) => {
var SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
var util = require_util2();
var REGEX_NEWLINE = /(\r?\n)/;
var NEWLINE_CODE = 10;
var isSourceNode = "$$$isSourceNode$$$";
function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
this.children = [];
this.sourceContents = {};
this.line = aLine == null ? null : aLine;
this.column = aColumn == null ? null : aColumn;
this.source = aSource == null ? null : aSource;
this.name = aName == null ? null : aName;
this[isSourceNode] = true;
if (aChunks != null)
this.add(aChunks);
}
SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
var node = new SourceNode;
var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
var remainingLinesIndex = 0;
var shiftNextLine = function() {
var lineContents = getNextLine();
var newLine = getNextLine() || "";
return lineContents + newLine;
function getNextLine() {
return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : undefined;
}
};
var lastGeneratedLine = 1, lastGeneratedColumn = 0;
var lastMapping = null;
aSourceMapConsumer.eachMapping(function(mapping) {
if (lastMapping !== null) {
if (lastGeneratedLine < mapping.generatedLine) {
addMappingWithCode(lastMapping, shiftNextLine());
lastGeneratedLine++;
lastGeneratedColumn = 0;
} else {
var nextLine = remainingLines[remainingLinesIndex] || "";
var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);
remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);
lastGeneratedColumn = mapping.generatedColumn;
addMappingWithCode(lastMapping, code);
lastMapping = mapping;
return;
}
}
while (lastGeneratedLine < mapping.generatedLine) {
node.add(shiftNextLine());
lastGeneratedLine++;
}
if (lastGeneratedColumn < mapping.generatedColumn) {
var nextLine = remainingLines[remainingLinesIndex] || "";
node.add(nextLine.substr(0, mapping.generatedColumn));
remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
lastGeneratedColumn = mapping.generatedColumn;
}
lastMapping = mapping;
}, this);
if (remainingLinesIndex < remainingLines.length) {
if (lastMapping) {
addMappingWithCode(lastMapping, shiftNextLine());
}
node.add(remainingLines.splice(remainingLinesIndex).join(""));
}
aSourceMapConsumer.sources.forEach(function(sourceFile) {
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
if (content != null) {
if (aRelativePath != null) {
sourceFile = util.join(aRelativePath, sourceFile);
}
node.setSourceContent(sourceFile, content);
}
});
return node;
function addMappingWithCode(mapping, code) {
if (mapping === null || mapping.source === undefined) {
node.add(code);
} else {
var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;
node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));
}
}
};
SourceNode.prototype.add = function SourceNode_add(aChunk) {
if (Array.isArray(aChunk)) {
aChunk.forEach(function(chunk) {
this.add(chunk);
}, this);
} else if (aChunk[isSourceNode] || typeof aChunk === "string") {
if (aChunk) {
this.children.push(aChunk);
}
} else {
throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
}
return this;
};
SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
if (Array.isArray(aChunk)) {
for (var i = aChunk.length - 1;i >= 0; i--) {
this.prepend(aChunk[i]);
}
} else if (aChunk[isSourceNode] || typeof aChunk === "string") {
this.children.unshift(aChunk);
} else {
throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
}
return this;
};
SourceNode.prototype.walk = function SourceNode_walk(aFn) {
var chunk;
for (var i = 0, len = this.children.length;i < len; i++) {
chunk = this.children[i];
if (chunk[isSourceNode]) {
chunk.walk(aFn);
} else {
if (chunk !== "") {
aFn(chunk, {
source: this.source,
line: this.line,
column: this.column,
name: this.name
});
}
}
}
};
SourceNode.prototype.join = function SourceNode_join(aSep) {
var newChildren;
var i;
var len = this.children.length;
if (len > 0) {
newChildren = [];
for (i = 0;i < len - 1; i++) {
newChildren.push(this.children[i]);
newChildren.push(aSep);
}
newChildren.push(this.children[i]);
this.children = newChildren;
}
return this;
};
SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
var lastChild = this.children[this.children.length - 1];
if (lastChild[isSourceNode]) {
lastChild.replaceRight(aPattern, aReplacement);
} else if (typeof lastChild === "string") {
this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
} else {
this.children.push("".replace(aPattern, aReplacement));
}
return this;
};
SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
};
SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {
for (var i = 0, len = this.children.length;i < len; i++) {
if (this.children[i][isSourceNode]) {
this.children[i].walkSourceContents(aFn);
}
}
var sources = Object.keys(this.sourceContents);
for (var i = 0, len = sources.length;i < len; i++) {
aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
}
};
SourceNode.prototype.toString = function SourceNode_toString() {
var str = "";
this.walk(function(chunk) {
str += chunk;
});
return str;
};
SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
var generated = {
code: "",
line: 1,
column: 0
};
var map = new SourceMapGenerator(aArgs);
var sourceMappingActive = false;
var lastOriginalSource = null;
var lastOriginalLine = null;
var lastOriginalColumn = null;
var lastOriginalName = null;
this.walk(function(chunk, original) {
generated.code += chunk;
if (original.source !== null && original.line !== null && original.column !== null) {
if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {
map.addMapping({
source: original.source,
original: {
line: original.line,
column: original.column
},
generated: {
line: generated.line,
column: generated.column
},
name: original.name
});
}
lastOriginalSource = original.source;
lastOriginalLine = original.line;
lastOriginalColumn = original.column;
lastOriginalName = original.name;
sourceMappingActive = true;
} else if (sourceMappingActive) {
map.addMapping({
generated: {
line: generated.line,
column: generated.column
}
});
lastOriginalSource = null;
sourceMappingActive = false;
}
for (var idx = 0, length = chunk.length;idx < length; idx++) {
if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
generated.line++;
generated.column = 0;
if (idx + 1 === length) {
lastOriginalSource = null;
sourceMappingActive = false;
} else if (sourceMappingActive) {
map.addMapping({
source: original.source,
original: {
line: original.line,
column: original.column
},
generated: {
line: generated.line,
column: generated.column
},
name: original.name
});
}
} else {
generated.column++;
}
}
});
this.walkSourceContents(function(sourceFile, sourceContent) {
map.setSourceContent(sourceFile, sourceContent);
});
return { code: generated.code, map };
};
exports.SourceNode = SourceNode;
});
// node_modules/source-map-js/source-map.js
var require_source_map = __commonJS((exports) => {
exports.SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
exports.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer;
exports.SourceNode = require_source_node().SourceNode;
});
// node_modules/postcss/lib/previous-map.js
var require_previous_map = __commonJS((exports, module) => {
var { existsSync, readFileSync } = __require("fs");
var { dirname, join } = __require("path");
var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
function fromBase64(str) {
if (Buffer) {
return Buffer.from(str, "base64").toString();
} else {
return window.atob(str);
}
}
class PreviousMap {
constructor(css, opts) {
if (opts.map === false)
return;
this.loadAnnotation(css);
this.inline = this.startWith(this.annotation, "data:");
let prev = opts.map ? opts.map.prev : undefined;
let text = this.loadMap(opts.from, prev);
if (!this.mapFile && opts.from) {
this.mapFile = opts.from;
}
if (this.mapFile)
this.root = dirname(this.mapFile);
if (text)
this.text = text;
}
consumer() {
if (!this.consumerCache) {
this.consumerCache = new SourceMapConsumer(this.text);
}
return this.consumerCache;
}
decodeInline(text) {
let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;
let baseUri = /^data:application\/json;base64,/;
let charsetUri = /^data:application\/json;charset=utf-?8,/;
let uri = /^data:application\/json,/;
let uriMatch = text.match(charsetUri) || text.match(uri);
if (uriMatch) {
return decodeURIComponent(text.substr(uriMatch[0].length));
}
let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);
if (baseUriMatch) {
return fromBase64(text.substr(baseUriMatch[0].length));
}
let encoding = text.match(/data:application\/json;([^,]+),/)[1];
throw new Error("Unsupported source map encoding " + encoding);
}
getAnnotationURL(sourceMapString) {
return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim();
}
isMap(map) {
if (typeof map !== "object")
return false;
return typeof map.mappings === "string" || typeof map._mappings === "string" || Array.isArray(map.sections);
}
loadAnnotation(css) {
let comments = css.match(/\/\*\s*# sourceMappingURL=/g);
if (!comments)
return;
let start = css.lastIndexOf(comments.pop());
let end = css.indexOf("*/", start);
if (start > -1 && end > -1) {
this.annotation = this.getAnnotationURL(css.substring(start, end));
}
}
loadFile(path) {
this.root = dirname(path);
if (existsSync(path)) {
this.mapFile = path;
return readFileSync(path, "utf-8").toString().trim();
}
}
loadMap(file, prev) {
if (prev === false)
return false;
if (prev) {
if (typeof prev === "string") {
return prev;
} else if (typeof prev === "function") {
let prevPath = prev(file);
if (prevPath) {
let map = this.loadFile(prevPath);
if (!map) {
throw new Error("Unable to load previous source map: " + prevPath.toString());
}
return map;
}
} else if (prev instanceof SourceMapConsumer) {
return SourceMapGenerator.fromSourceMap(prev).toString();
} else if (prev instanceof SourceMapGenerator) {
return prev.toString();
} else if (this.isMap(prev)) {
return JSON.stringify(prev);
} else {
throw new Error("Unsupported previous source map format: " + prev.toString());
}
} else if (this.inline) {
return this.decodeInline(this.annotation);
} else if (this.annotation) {
let map = this.annotation;
if (file)
map = join(dirname(file), map);
return this.loadFile(map);
}
}
startWith(string, start) {
if (!string)
return false;
return string.substr(0, start.length) === start;
}
withContent() {
return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);
}
}
module.exports = PreviousMap;
PreviousMap.default = PreviousMap;
});
// node_modules/postcss/lib/input.js
var require_input = __commonJS((exports, module) => {
var { nanoid } = require_non_secure();
var { isAbsolute, resolve } = __require("path");
var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
var { fileURLToPath, pathToFileURL } = __require("url");
var CssSyntaxError = require_css_syntax_error();
var PreviousMap = require_previous_map();
var terminalHighlight = require_terminal_highlight();
var fromOffsetCache = Symbol("fromOffsetCache");
var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
var pathAvailable = Boolean(resolve && isAbsolute);
class Input {
constructor(css, opts = {}) {
if (css === null || typeof css === "undefined" || typeof css === "object" && !css.toString) {
throw new Error(`PostCSS received ${css} instead of CSS string`);
}
this.css = css.toString();
if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") {
this.hasBOM = true;
this.css = this.css.slice(1);
} else {
this.hasBOM = false;
}
if (opts.from) {
if (!pathAvailable || /^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) {
this.file = opts.from;
} else {
this.file = resolve(opts.from);
}
}
if (pathAvailable && sourceMapAvailable) {
let map = new PreviousMap(this.css, opts);
if (map.text) {
this.map = map;
let file = map.consumer().file;
if (!this.file && file)
this.file = this.mapResolve(file);
}
}
if (!this.file) {
this.id = "<input css " + nanoid(6) + ">";
}
if (this.map)
this.map.file = this.from;
}
error(message, line, column, opts = {}) {
let endColumn, endLine, result;
if (line && typeof line === "object") {
let start = line;
let end = column;
if (typeof start.offset === "number") {
let pos = this.fromOffset(start.offset);
line = pos.line;
column = pos.col;
} else {
line = start.line;
column = start.column;
}
if (typeof end.offset === "number") {
let pos = this.fromOffset(end.offset);
endLine = pos.line;
endColumn = pos.col;
} else {
endLine = end.line;
endColumn = end.column;
}
} else if (!column) {
let pos = this.fromOffset(line);
line = pos.line;
column = pos.col;
}
let origin = this.origin(line, column, endLine, endColumn);
if (origin) {
result = new CssSyntaxError(message, origin.endLine === undefined ? origin.line : { column: origin.column, line: origin.line }, origin.endLine === undefined ? origin.column : { column: origin.endColumn, line: origin.endLine }, origin.source, origin.file, opts.plugin);
} else {
result = new CssSyntaxError(message, endLine === undefined ? line : { column, line }, endLine === undefined ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin);
}
result.input = { column, endColumn, endLine, line, source: this.css };
if (this.file) {
if (pathToFileURL) {
result.input.url = pathToFileURL(this.file).toString();
}
result.input.file = this.file;
}
return result;
}
fromOffset(offset) {
let lastLine, lineToIndex;
if (!this[fromOffsetCache]) {
let lines = this.css.split("\n");
lineToIndex = new Array(lines.length);
let prevIndex = 0;
for (let i = 0, l = lines.length;i < l; i++) {
lineToIndex[i] = prevIndex;
prevIndex += lines[i].length + 1;
}
this[fromOffsetCache] = lineToIndex;
} else {
lineToIndex = this[fromOffsetCache];
}
lastLine = lineToIndex[lineToIndex.length - 1];
let min = 0;
if (offset >= lastLine) {
min = lineToIndex.length - 1;
} else {
let max = lineToIndex.length - 2;
let mid;
while (min < max) {
mid = min + (max - min >> 1);
if (offset < lineToIndex[mid]) {
max = mid - 1;
} else if (offset >= lineToIndex[mid + 1]) {
min = mid + 1;
} else {
min = mid;
break;
}
}
}
return {
col: offset - lineToIndex[min] + 1,
line: min + 1
};
}
mapResolve(file) {
if (/^\w+:\/\//.test(file)) {
return file;
}
return resolve(this.map.consumer().sourceRoot || this.map.root || ".", file);
}
origin(line, column, endLine, endColumn) {
if (!this.map)
return false;
let consumer = this.map.consumer();
let from = consumer.originalPositionFor({ column, line });
if (!from.source)
return false;
let to;
if (typeof endLine === "number") {
to = consumer.originalPositionFor({ column: endColumn, line: endLine });
}
let fromUrl;
if (isAbsolute(from.source)) {
fromUrl = pathToFileURL(from.source);
} else {
fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile));
}
let result = {
column: from.column,
endColumn: to && to.column,
endLine: to && to.line,
line: from.line,
url: fromUrl.toString()
};
if (fromUrl.protocol === "file:") {
if (fileURLToPath) {
result.file = fileURLToPath(fromUrl);
} else {
throw new Error(`file: protocol is not available in this PostCSS build`);
}
}
let source = consumer.sourceContentFor(from.source);
if (source)
result.source = source;
return result;
}
toJSON() {
let json = {};
for (let name of ["hasBOM", "css", "file", "id"]) {
if (this[name] != null) {
json[name] = this[name];
}
}
if (this.map) {
json.map = { ...this.map };
if (json.map.consumerCache) {
json.map.consumerCache = undefined;
}
}
return json;
}
get from() {
return this.file || this.id;
}
}
module.exports = Input;
Input.default = Input;
if (terminalHighlight && terminalHighlight.registerInput) {
terminalHighlight.registerInput(Input);
}
});
// node_modules/postcss/lib/root.js
var require_root = __commonJS((exports, module) => {
var Container = require_container();
var LazyResult;
var Processor;
class Root extends Container {
constructor(defaults) {
super(defaults);
this.type = "root";
if (!this.nodes)
this.nodes = [];
}
normalize(child, sample, type) {
let nodes = super.normalize(child);
if (sample) {
if (type === "prepend") {
if (this.nodes.length > 1) {
sample.raws.before = this.nodes[1].raws.before;
} else {
delete sample.raws.before;
}
} else if (this.first !== sample) {
for (let node of nodes) {
node.raws.before = sample.raws.before;
}
}
}
return nodes;
}
removeChild(child, ignore) {
let index = this.index(child);
if (!ignore && index === 0 && this.nodes.length > 1) {
this.nodes[1].raws.before = this.nodes[index].raws.before;
}
return super.removeChild(child);
}
toResult(opts = {}) {
let lazy = new LazyResult(new Processor, this, opts);
return lazy.stringify();
}
}
Root.registerLazyResult = (dependant) => {
LazyResult = dependant;
};
Root.registerProcessor = (dependant) => {
Processor = dependant;
};
module.exports = Root;
Root.default = Root;
Container.registerRoot(Root);
});
// node_modules/postcss/lib/list.js
var require_list = __commonJS((exports, module) => {
var list = {
comma(string) {
return list.split(string, [","], true);
},
space(string) {
let spaces = [" ", "\n", "\t"];
return list.split(string, spaces);
},
split(string, separators, last) {
let array = [];
let current = "";
let split = false;
let func = 0;
let inQuote = false;
let prevQuote = "";
let escape = false;
for (let letter of string) {
if (escape) {
escape = false;
} else if (letter === "\\") {
escape = true;
} else if (inQuote) {
if (letter === prevQuote) {
inQuote = false;
}
} else if (letter === '"' || letter === "'") {
inQuote = true;
prevQuote = letter;
} else if (letter === "(") {
func += 1;
} else if (letter === ")") {
if (func > 0)
func -= 1;
} else if (func === 0) {
if (separators.includes(letter))
split = true;
}
if (split) {
if (current !== "")
array.push(current.trim());
current = "";
split = false;
} else {
current += letter;
}
}
if (last || current !== "")
array.push(current.trim());
return array;
}
};
module.exports = list;
list.default = list;
});
// node_modules/postcss/lib/rule.js
var require_rule = __commonJS((exports, module) => {
var Container = require_container();
var list = require_list();
class Rule extends Container {
constructor(defaults) {
super(defaults);
this.type = "rule";
if (!this.nodes)
this.nodes = [];
}
get selectors() {
return list.comma(this.selector);
}
set selectors(values) {
let match = this.selector ? this.selector.match(/,\s*/) : null;
let sep = match ? match[0] : "," + this.raw("between", "beforeOpen");
this.selector = values.join(sep);
}
}
module.exports = Rule;
Rule.default = Rule;
Container.registerRule(Rule);
});
// node_modules/postcss/lib/fromJSON.js
var require_fromJSON = __commonJS((exports, module) => {
var AtRule = require_at_rule();
var Comment = require_comment();
var Declaration = require_declaration();
var Input = require_input();
var PreviousMap = require_previous_map();
var Root = require_root();
var Rule = require_rule();
function fromJSON(json, inputs) {
if (Array.isArray(json))
return json.map((n) => fromJSON(n));
let { inputs: ownInputs, ...defaults } = json;
if (ownInputs) {
inputs = [];
for (let input of ownInputs) {
let inputHydrated = { ...input, __proto__: Input.prototype };
if (inputHydrated.map) {
inputHydrated.map = {
...inputHydrated.map,
__proto__: PreviousMap.prototype
};
}
inputs.push(inputHydrated);
}
}
if (defaults.nodes) {
defaults.nodes = json.nodes.map((n) => fromJSON(n, inputs));
}
if (defaults.source) {
let { inputId, ...source } = defaults.source;
defaults.source = source;
if (inputId != null) {
defaults.source.input = inputs[inputId];
}
}
if (defaults.type === "root") {
return new Root(defaults);
} else if (defaults.type === "decl") {
return new Declaration(defaults);
} else if (defaults.type === "rule") {
return new Rule(defaults);
} else if (defaults.type === "comment") {
return new Comment(defaults);
} else if (defaults.type === "atrule") {
return new AtRule(defaults);
} else {
throw new Error("Unknown node type: " + json.type);
}
}
module.exports = fromJSON;
fromJSON.default = fromJSON;
});
// node_modules/postcss/lib/map-generator.js
var require_map_generator = __commonJS((exports, module) => {
var { dirname, relative, resolve, sep } = __require("path");
var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
var { pathToFileURL } = __require("url");
var Input = require_input();
var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
var pathAvailable = Boolean(dirname && resolve && relative && sep);
class MapGenerator {
constructor(stringify, root, opts, cssString) {
this.stringify = stringify;
this.mapOpts = opts.map || {};
this.root = root;
this.opts = opts;
this.css = cssString;
this.originalCSS = cssString;
this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;
this.memoizedFileURLs = new Map;
this.memoizedPaths = new Map;
this.memoizedURLs = new Map;
}
addAnnotation() {
let content;
if (this.isInline()) {
content = "data:application/json;base64," + this.toBase64(this.map.toString());
} else if (typeof this.mapOpts.annotation === "string") {
content = this.mapOpts.annotation;
} else if (typeof this.mapOpts.annotation === "function") {
content = this.mapOpts.annotation(this.opts.to, this.root);
} else {
content = this.outputFile() + ".map";
}
let eol = "\n";
if (this.css.includes("\r\n"))
eol = "\r\n";
this.css += eol + "/*# sourceMappingURL=" + content + " */";
}
applyPrevMaps() {
for (let prev of this.previous()) {
let from = this.toUrl(this.path(prev.file));
let root = prev.root || dirname(prev.file);
let map;
if (this.mapOpts.sourcesContent === false) {
map = new SourceMapConsumer(prev.text);
if (map.sourcesContent) {
map.sourcesContent = null;
}
} else {
map = prev.consumer();
}
this.map.applySourceMap(map, from, this.toUrl(this.path(root)));
}
}
clearAnnotation() {
if (this.mapOpts.annotation === false)
return;
if (this.root) {
let node;
for (let i = this.root.nodes.length - 1;i >= 0; i--) {
node = this.root.nodes[i];
if (node.type !== "comment")
continue;
if (node.text.startsWith("# sourceMappingURL=")) {
this.root.removeChild(i);
}
}
} else if (this.css) {
this.css = this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm, "");
}
}
generate() {
this.clearAnnotation();
if (pathAvailable && sourceMapAvailable && this.isMap()) {
return this.generateMap();
} else {
let result = "";
this.stringify(this.root, (i) => {
result += i;
});
return [result];
}
}
generateMap() {
if (this.root) {
this.generateString();
} else if (this.previous().length === 1) {
let prev = this.previous()[0].consumer();
prev.file = this.outputFile();
this.map = SourceMapGenerator.fromSourceMap(prev, {
ignoreInvalidMapping: true
});
} else {
this.map = new SourceMapGenerator({
file: this.outputFile(),
ignoreInvalidMapping: true
});
this.map.addMapping({
generated: { column: 0, line: 1 },
original: { column: 0, line: 1 },
source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>"
});
}
if (this.isSourcesContent())
this.setSourcesContent();
if (this.root && this.previous().length > 0)
this.applyPrevMaps();
if (this.isAnnotation())
this.addAnnotation();
if (this.isInline()) {
return [this.css];
} else {
return [this.css, this.map];
}
}
generateString() {
this.css = "";
this.map = new SourceMapGenerator({
file: this.outputFile(),
ignoreInvalidMapping: true
});
let line = 1;
let column = 1;
let noSource = "<no source>";
let mapping = {
generated: { column: 0, line: 0 },
original: { column: 0, line: 0 },
source: ""
};
let last, lines;
this.stringify(this.root, (str, node, type) => {
this.css += str;
if (node && type !== "end") {
mapping.generated.line = line;
mapping.generated.column = column - 1;
if (node.source && node.source.start) {
mapping.source = this.sourcePath(node);
mapping.original.line = node.source.start.line;
mapping.original.column = node.source.start.column - 1;
this.map.addMapping(mapping);
} else {
mapping.source = noSource;
mapping.original.line = 1;
mapping.original.column = 0;
this.map.addMapping(mapping);
}
}
lines = str.match(/\n/g);
if (lines) {
line += lines.length;
last = str.lastIndexOf("\n");
column = str.length - last;
} else {
column += str.length;
}
if (node && type !== "start") {
let p = node.parent || { raws: {} };
let childless = node.type === "decl" || node.type === "atrule" && !node.nodes;
if (!childless || node !== p.last || p.raws.semicolon) {
if (node.source && node.source.end) {
mapping.source = this.sourcePath(node);
mapping.original.line = node.source.end.line;
mapping.original.column = node.source.end.column - 1;
mapping.generated.line = line;
mapping.generated.column = column - 2;
this.map.addMapping(mapping);
} else {
mapping.source = noSource;
mapping.original.line = 1;
mapping.original.column = 0;
mapping.generated.line = line;
mapping.generated.column = column - 1;
this.map.addMapping(mapping);
}
}
}
});
}
isAnnotation() {
if (this.isInline()) {
return true;
}
if (typeof this.mapOpts.annotation !== "undefined") {
return this.mapOpts.annotation;
}
if (this.previous().length) {
return this.previous().some((i) => i.annotation);
}
return true;
}
isInline() {
if (typeof this.mapOpts.inline !== "undefined") {
return this.mapOpts.inline;
}
let annotation = this.mapOpts.annotation;
if (typeof annotation !== "undefined" && annotation !== true) {
return false;
}
if (this.previous().length) {
return this.previous().some((i) => i.inline);
}
return true;
}
isMap() {
if (typeof this.opts.map !== "undefined") {
return !!this.opts.map;
}
return this.previous().length > 0;
}
isSourcesContent() {
if (typeof this.mapOpts.sourcesContent !== "undefined") {
return this.mapOpts.sourcesContent;
}
if (this.previous().length) {
return this.previous().some((i) => i.withContent());
}
return true;
}
outputFile() {
if (this.opts.to) {
return this.path(this.opts.to);
} else if (this.opts.from) {
return this.path(this.opts.from);
} else {
return "to.css";
}
}
path(file) {
if (this.mapOpts.absolute)
return file;
if (file.charCodeAt(0) === 60)
return file;
if (/^\w+:\/\//.test(file))
return file;
let cached = this.memoizedPaths.get(file);
if (cached)
return cached;
let from = this.opts.to ? dirname(this.opts.to) : ".";
if (typeof this.mapOpts.annotation === "string") {
from = dirname(resolve(from, this.mapOpts.annotation));
}
let path = relative(from, file);
this.memoizedPaths.set(file, path);
return path;
}
previous() {
if (!this.previousMaps) {
this.previousMaps = [];
if (this.root) {
this.root.walk((node) => {
if (node.source && node.source.input.map) {
let map = node.source.input.map;
if (!this.previousMaps.includes(map)) {
this.previousMaps.push(map);
}
}
});
} else {
let input = new Input(this.originalCSS, this.opts);
if (input.map)
this.previousMaps.push(input.map);
}
}
return this.previousMaps;
}
setSourcesContent() {
let already = {};
if (this.root) {
this.root.walk((node) => {
if (node.source) {
let from = node.source.input.from;
if (from && !already[from]) {
already[from] = true;
let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));
this.map.setSourceContent(fromUrl, node.source.input.css);
}
}
});
} else if (this.css) {
let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>";
this.map.setSourceContent(from, this.css);
}
}
sourcePath(node) {
if (this.mapOpts.from) {
return this.toUrl(this.mapOpts.from);
} else if (this.usesFileUrls) {
return this.toFileUrl(node.source.input.from);
} else {
return this.toUrl(this.path(node.source.input.from));
}
}
toBase64(str) {
if (Buffer) {
return Buffer.from(str).toString("base64");
} else {
return window.btoa(unescape(encodeURIComponent(str)));
}
}
toFileUrl(path) {
let cached = this.memoizedFileURLs.get(path);
if (cached)
return cached;
if (pathToFileURL) {
let fileURL = pathToFileURL(path).toString();
this.memoizedFileURLs.set(path, fileURL);
return fileURL;
} else {
throw new Error("`map.absolute` option is not available in this PostCSS build");
}
}
toUrl(path) {
let cached = this.memoizedURLs.get(path);
if (cached)
return cached;
if (sep === "\\") {
path = path.replace(/\\/g, "/");
}
let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);
this.memoizedURLs.set(path, url);
return url;
}
}
module.exports = MapGenerator;
});
// node_modules/postcss/lib/parser.js
var require_parser = __commonJS((exports, module) => {
var AtRule = require_at_rule();
var Comment = require_comment();
var Declaration = require_declaration();
var Root = require_root();
var Rule = require_rule();
var tokenizer = require_tokenize();
var SAFE_COMMENT_NEIGHBOR = {
empty: true,
space: true
};
function findLastWithPosition(tokens) {
for (let i = tokens.length - 1;i >= 0; i--) {
let token = tokens[i];
let pos = token[3] || token[2];
if (pos)
return pos;
}
}
class Parser {
constructor(input) {
this.input = input;
this.root = new Root;
this.current = this.root;
this.spaces = "";
this.semicolon = false;
this.createTokenizer();
this.root.source = { input, start: { column: 1, line: 1, offset: 0 } };
}
atrule(token) {
let node = new AtRule;
node.name = token[1].slice(1);
if (node.name === "") {
this.unnamedAtrule(node, token);
}
this.init(node, token[2]);
let type;
let prev;
let shift;
let last = false;
let open = false;
let params = [];
let brackets = [];
while (!this.tokenizer.endOfFile()) {
token = this.tokenizer.nextToken();
type = token[0];
if (type === "(" || type === "[") {
brackets.push(type === "(" ? ")" : "]");
} else if (type === "{" && brackets.length > 0) {
brackets.push("}");
} else if (type === brackets[brackets.length - 1]) {
brackets.pop();
}
if (brackets.length === 0) {
if (type === ";") {
node.source.end = this.getPosition(token[2]);
node.source.end.offset++;
this.semicolon = true;
break;
} else if (type === "{") {
open = true;
break;
} else if (type === "}") {
if (params.length > 0) {
shift = params.length - 1;
prev = params[shift];
while (prev && prev[0] === "space") {
prev = params[--shift];
}
if (prev) {
node.source.end = this.getPosition(prev[3] || prev[2]);
node.source.end.offset++;
}
}
this.end(token);
break;
} else {
params.push(token);
}
} else {
params.push(token);
}
if (this.tokenizer.endOfFile()) {
last = true;
break;
}
}
node.raws.between = this.spacesAndCommentsFromEnd(params);
if (params.length) {
node.raws.afterName = this.spacesAndCommentsFromStart(params);
this.raw(node, "params", params);
if (last) {
token = params[params.length - 1];
node.source.end = this.getPosition(token[3] || token[2]);
node.source.end.offset++;
this.spaces = node.raws.between;
node.raws.between = "";
}
} else {
node.raws.afterName = "";
node.params = "";
}
if (open) {
node.nodes = [];
this.current = node;
}
}
checkMissedSemicolon(tokens) {
let colon = this.colon(tokens);
if (colon === false)
return;
let founded = 0;
let token;
for (let j = colon - 1;j >= 0; j--) {
token = tokens[j];
if (token[0] !== "space") {
founded += 1;
if (founded === 2)
break;
}
}
throw this.input.error("Missed semicolon", token[0] === "word" ? token[3] + 1 : token[2]);
}
colon(tokens) {
let brackets = 0;
let prev, token, type;
for (let [i, element] of tokens.entries()) {
token = element;
type = token[0];
if (type === "(") {
brackets += 1;
}
if (type === ")") {
brackets -= 1;
}
if (brackets === 0 && type === ":") {
if (!prev) {
this.doubleColon(token);
} else if (prev[0] === "word" && prev[1] === "progid") {
continue;
} else {
return i;
}
}
prev = token;
}
return false;
}
comment(token) {
let node = new Comment;
this.init(node, token[2]);
node.source.end = this.getPosition(token[3] || token[2]);
node.source.end.offset++;
let text = token[1].slice(2, -2);
if (/^\s*$/.test(text)) {
node.text = "";
node.raws.left = text;
node.raws.right = "";
} else {
let match = text.match(/^(\s*)([^]*\S)(\s*)$/);
node.text = match[2];
node.raws.left = match[1];
node.raws.right = match[3];
}
}
createTokenizer() {
this.tokenizer = tokenizer(this.input);
}
decl(tokens, customProperty) {
let node = new Declaration;
this.init(node, tokens[0][2]);
let last = tokens[tokens.length - 1];
if (last[0] === ";") {
this.semicolon = true;
tokens.pop();
}
node.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));
node.source.end.offset++;
while (tokens[0][0] !== "word") {
if (tokens.length === 1)
this.unknownWord(tokens);
node.raws.before += tokens.shift()[1];
}
node.source.start = this.getPosition(tokens[0][2]);
node.prop = "";
while (tokens.length) {
let type = tokens[0][0];
if (type === ":" || type === "space" || type === "comment") {
break;
}
node.prop += tokens.shift()[1];
}
node.raws.between = "";
let token;
while (tokens.length) {
token = tokens.shift();
if (token[0] === ":") {
node.raws.between += token[1];
break;
} else {
if (token[0] === "word" && /\w/.test(token[1])) {
this.unknownWord([token]);
}
node.raws.between += token[1];
}
}
if (node.prop[0] === "_" || node.prop[0] === "*") {
node.raws.before += node.prop[0];
node.prop = node.prop.slice(1);
}
let firstSpaces = [];
let next;
while (tokens.length) {
next = tokens[0][0];
if (next !== "space" && next !== "comment")
break;
firstSpaces.push(tokens.shift());
}
this.precheckMissedSemicolon(tokens);
for (let i = tokens.length - 1;i >= 0; i--) {
token = tokens[i];
if (token[1].toLowerCase() === "!important") {
node.important = true;
let string = this.stringFrom(tokens, i);
string = this.spacesFromEnd(tokens) + string;
if (string !== " !important")
node.raws.important = string;
break;
} else if (token[1].toLowerCase() === "important") {
let cache = tokens.slice(0);
let str = "";
for (let j = i;j > 0; j--) {
let type = cache[j][0];
if (str.trim().startsWith("!") && type !== "space") {
break;
}
str = cache.pop()[1] + str;
}
if (str.trim().startsWith("!")) {
node.important = true;
node.raws.important = str;
tokens = cache;
}
}
if (token[0] !== "space" && token[0] !== "comment") {
break;
}
}
let hasWord = tokens.some((i) => i[0] !== "space" && i[0] !== "comment");
if (hasWord) {
node.raws.between += firstSpaces.map((i) => i[1]).join("");
firstSpaces = [];
}
this.raw(node, "value", firstSpaces.concat(tokens), customProperty);
if (node.value.includes(":") && !customProperty) {
this.checkMissedSemicolon(tokens);
}
}
doubleColon(token) {
throw this.input.error("Double colon", { offset: token[2] }, { offset: token[2] + token[1].length });
}
emptyRule(token) {
let node = new Rule;
this.init(node, token[2]);
node.selector = "";
node.raws.between = "";
this.current = node;
}
end(token) {
if (this.current.nodes && this.current.nodes.length) {
this.current.raws.semicolon = this.semicolon;
}
this.semicolon = false;
this.current.raws.after = (this.current.raws.after || "") + this.spaces;
this.spaces = "";
if (this.current.parent) {
this.current.source.end = this.getPosition(token[2]);
this.current.source.end.offset++;
this.current = this.current.parent;
} else {
this.unexpectedClose(token);
}
}
endFile() {
if (this.current.parent)
this.unclosedBlock();
if (this.current.nodes && this.current.nodes.length) {
this.current.raws.semicolon = this.semicolon;
}
this.current.raws.after = (this.current.raws.after || "") + this.spaces;
this.root.source.end = this.getPosition(this.tokenizer.position());
}
freeSemicolon(token) {
this.spaces += token[1];
if (this.current.nodes) {
let prev = this.current.nodes[this.current.nodes.length - 1];
if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) {
prev.raws.ownSemicolon = this.spaces;
this.spaces = "";
}
}
}
getPosition(offset) {
let pos = this.input.fromOffset(offset);
return {
column: pos.col,
line: pos.line,
offset
};
}
init(node, offset) {
this.current.push(node);
node.source = {
input: this.input,
start: this.getPosition(offset)
};
node.raws.before = this.spaces;
this.spaces = "";
if (node.type !== "comment")
this.semicolon = false;
}
other(start) {
let end = false;
let type = null;
let colon = false;
let bracket = null;
let brackets = [];
let customProperty = start[1].startsWith("--");
let tokens = [];
let token = start;
while (token) {
type = token[0];
tokens.push(token);
if (type === "(" || type === "[") {
if (!bracket)
bracket = token;
brackets.push(type === "(" ? ")" : "]");
} else if (customProperty && colon && type === "{") {
if (!bracket)
bracket = token;
brackets.push("}");
} else if (brackets.length === 0) {
if (type === ";") {
if (colon) {
this.decl(tokens, customProperty);
return;
} else {
break;
}
} else if (type === "{") {
this.rule(tokens);
return;
} else if (type === "}") {
this.tokenizer.back(tokens.pop());
end = true;
break;
} else if (type === ":") {
colon = true;
}
} else if (type === brackets[brackets.length - 1]) {
brackets.pop();
if (brackets.length === 0)
bracket = null;
}
token = this.tokenizer.nextToken();
}
if (this.tokenizer.endOfFile())
end = true;
if (brackets.length > 0)
this.unclosedBracket(bracket);
if (end && colon) {
if (!customProperty) {
while (tokens.length) {
token = tokens[tokens.length - 1][0];
if (token !== "space" && token !== "comment")
break;
this.tokenizer.back(tokens.pop());
}
}
this.decl(tokens, customProperty);
} else {
this.unknownWord(tokens);
}
}
parse() {
let token;
while (!this.tokenizer.endOfFile()) {
token = this.tokenizer.nextToken();
switch (token[0]) {
case "space":
this.spaces += token[1];
break;
case ";":
this.freeSemicolon(token);
break;
case "}":
this.end(token);
break;
case "comment":
this.comment(token);
break;
case "at-word":
this.atrule(token);
break;
case "{":
this.emptyRule(token);
break;
default:
this.other(token);
break;
}
}
this.endFile();
}
precheckMissedSemicolon() {
}
raw(node, prop, tokens, customProperty) {
let token, type;
let length = tokens.length;
let value = "";
let clean = true;
let next, prev;
for (let i = 0;i < length; i += 1) {
token = tokens[i];
type = token[0];
if (type === "space" && i === length - 1 && !customProperty) {
clean = false;
} else if (type === "comment") {
prev = tokens[i - 1] ? tokens[i - 1][0] : "empty";
next = tokens[i + 1] ? tokens[i + 1][0] : "empty";
if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {
if (value.slice(-1) === ",") {
clean = false;
} else {
value += token[1];
}
} else {
clean = false;
}
} else {
value += token[1];
}
}
if (!clean) {
let raw = tokens.reduce((all, i) => all + i[1], "");
node.raws[prop] = { raw, value };
}
node[prop] = value;
}
rule(tokens) {
tokens.pop();
let node = new Rule;
this.init(node, tokens[0][2]);
node.raws.between = this.spacesAndCommentsFromEnd(tokens);
this.raw(node, "selector", tokens);
this.current = node;
}
spacesAndCommentsFromEnd(tokens) {
let lastTokenType;
let spaces = "";
while (tokens.length) {
lastTokenType = tokens[tokens.length - 1][0];
if (lastTokenType !== "space" && lastTokenType !== "comment")
break;
spaces = tokens.pop()[1] + spaces;
}
return spaces;
}
spacesAndCommentsFromStart(tokens) {
let next;
let spaces = "";
while (tokens.length) {
next = tokens[0][0];
if (next !== "space" && next !== "comment")
break;
spaces += tokens.shift()[1];
}
return spaces;
}
spacesFromEnd(tokens) {
let lastTokenType;
let spaces = "";
while (tokens.length) {
lastTokenType = tokens[tokens.length - 1][0];
if (lastTokenType !== "space")
break;
spaces = tokens.pop()[1] + spaces;
}
return spaces;
}
stringFrom(tokens, from) {
let result = "";
for (let i = from;i < tokens.length; i++) {
result += tokens[i][1];
}
tokens.splice(from, tokens.length - from);
return result;
}
unclosedBlock() {
let pos = this.current.source.start;
throw this.input.error("Unclosed block", pos.line, pos.column);
}
unclosedBracket(bracket) {
throw this.input.error("Unclosed bracket", { offset: bracket[2] }, { offset: bracket[2] + 1 });
}
unexpectedClose(token) {
throw this.input.error("Unexpected }", { offset: token[2] }, { offset: token[2] + 1 });
}
unknownWord(tokens) {
throw this.input.error("Unknown word", { offset: tokens[0][2] }, { offset: tokens[0][2] + tokens[0][1].length });
}
unnamedAtrule(node, token) {
throw this.input.error("At-rule without name", { offset: token[2] }, { offset: token[2] + token[1].length });
}
}
module.exports = Parser;
});
// node_modules/postcss/lib/parse.js
var require_parse = __commonJS((exports, module) => {
var Container = require_container();
var Input = require_input();
var Parser = require_parser();
function parse(css, opts) {
let input = new Input(css, opts);
let parser = new Parser(input);
try {
parser.parse();
} catch (e) {
if (true) {
if (e.name === "CssSyntaxError" && opts && opts.from) {
if (/\.scss$/i.test(opts.from)) {
e.message += "\nYou tried to parse SCSS with " + "the standard CSS parser; " + "try again with the postcss-scss parser";
} else if (/\.sass/i.test(opts.from)) {
e.message += "\nYou tried to parse Sass with " + "the standard CSS parser; " + "try again with the postcss-sass parser";
} else if (/\.less$/i.test(opts.from)) {
e.message += "\nYou tried to parse Less with " + "the standard CSS parser; " + "try again with the postcss-less parser";
}
}
}
throw e;
}
return parser.root;
}
module.exports = parse;
parse.default = parse;
Container.registerParse(parse);
});
// node_modules/postcss/lib/warning.js
var require_warning = __commonJS((exports, module) => {
class Warning {
constructor(text, opts = {}) {
this.type = "warning";
this.text = text;
if (opts.node && opts.node.source) {
let range = opts.node.rangeBy(opts);
this.line = range.start.line;
this.column = range.start.column;
this.endLine = range.end.line;
this.endColumn = range.end.column;
}
for (let opt in opts)
this[opt] = opts[opt];
}
toString() {
if (this.node) {
return this.node.error(this.text, {
index: this.index,
plugin: this.plugin,
word: this.word
}).message;
}
if (this.plugin) {
return this.plugin + ": " + this.text;
}
return this.text;
}
}
module.exports = Warning;
Warning.default = Warning;
});
// node_modules/postcss/lib/result.js
var require_result = __commonJS((exports, module) => {
var Warning = require_warning();
class Result {
constructor(processor, root, opts) {
this.processor = processor;
this.messages = [];
this.root = root;
this.opts = opts;
this.css = undefined;
this.map = undefined;
}
toString() {
return this.css;
}
warn(text, opts = {}) {
if (!opts.plugin) {
if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
opts.plugin = this.lastPlugin.postcssPlugin;
}
}
let warning = new Warning(text, opts);
this.messages.push(warning);
return warning;
}
warnings() {
return this.messages.filter((i) => i.type === "warning");
}
get content() {
return this.css;
}
}
module.exports = Result;
Result.default = Result;
});
// node_modules/postcss/lib/warn-once.js
var require_warn_once = __commonJS((exports, module) => {
var printed = {};
module.exports = function warnOnce(message) {
if (printed[message])
return;
printed[message] = true;
if (typeof console !== "undefined" && console.warn) {
console.warn(message);
}
};
});
// node_modules/postcss/lib/lazy-result.js
var require_lazy_result = __commonJS((exports, module) => {
var Container = require_container();
var Document = require_document();
var MapGenerator = require_map_generator();
var parse = require_parse();
var Result = require_result();
var Root = require_root();
var stringify = require_stringify2();
var { isClean, my } = require_symbols();
var warnOnce = require_warn_once();
var TYPE_TO_CLASS_NAME = {
atrule: "AtRule",
comment: "Comment",
decl: "Declaration",
document: "Document",
root: "Root",
rule: "Rule"
};
var PLUGIN_PROPS = {
AtRule: true,
AtRuleExit: true,
Comment: true,
CommentExit: true,
Declaration: true,
DeclarationExit: true,
Document: true,
DocumentExit: true,
Once: true,
OnceExit: true,
postcssPlugin: true,
prepare: true,
Root: true,
RootExit: true,
Rule: true,
RuleExit: true
};
var NOT_VISITORS = {
Once: true,
postcssPlugin: true,
prepare: true
};
var CHILDREN = 0;
function isPromise(obj) {
return typeof obj === "object" && typeof obj.then === "function";
}
function getEvents(node) {
let key = false;
let type = TYPE_TO_CLASS_NAME[node.type];
if (node.type === "decl") {
key = node.prop.toLowerCase();
} else if (node.type === "atrule") {
key = node.name.toLowerCase();
}
if (key && node.append) {
return [
type,
type + "-" + key,
CHILDREN,
type + "Exit",
type + "Exit-" + key
];
} else if (key) {
return [type, type + "-" + key, type + "Exit", type + "Exit-" + key];
} else if (node.append) {
return [type, CHILDREN, type + "Exit"];
} else {
return [type, type + "Exit"];
}
}
function toStack(node) {
let events;
if (node.type === "document") {
events = ["Document", CHILDREN, "DocumentExit"];
} else if (node.type === "root") {
events = ["Root", CHILDREN, "RootExit"];
} else {
events = getEvents(node);
}
return {
eventIndex: 0,
events,
iterator: 0,
node,
visitorIndex: 0,
visitors: []
};
}
function cleanMarks(node) {
node[isClean] = false;
if (node.nodes)
node.nodes.forEach((i) => cleanMarks(i));
return node;
}
var postcss = {};
class LazyResult {
constructor(processor, css, opts) {
this.stringified = false;
this.processed = false;
let root;
if (typeof css === "object" && css !== null && (css.type === "root" || css.type === "document")) {
root = cleanMarks(css);
} else if (css instanceof LazyResult || css instanceof Result) {
root = cleanMarks(css.root);
if (css.map) {
if (typeof opts.map === "undefined")
opts.map = {};
if (!opts.map.inline)
opts.map.inline = false;
opts.map.prev = css.map;
}
} else {
let parser = parse;
if (opts.syntax)
parser = opts.syntax.parse;
if (opts.parser)
parser = opts.parser;
if (parser.parse)
parser = parser.parse;
try {
root = parser(css, opts);
} catch (error) {
this.processed = true;
this.error = error;
}
if (root && !root[my]) {
Container.rebuild(root);
}
}
this.result = new Result(processor, root, opts);
this.helpers = { ...postcss, postcss, result: this.result };
this.plugins = this.processor.plugins.map((plugin) => {
if (typeof plugin === "object" && plugin.prepare) {
return { ...plugin, ...plugin.prepare(this.result) };
} else {
return plugin;
}
});
}
async() {
if (this.error)
return Promise.reject(this.error);
if (this.processed)
return Promise.resolve(this.result);
if (!this.processing) {
this.processing = this.runAsync();
}
return this.processing;
}
catch(onRejected) {
return this.async().catch(onRejected);
}
finally(onFinally) {
return this.async().then(onFinally, onFinally);
}
getAsyncError() {
throw new Error("Use process(css).then(cb) to work with async plugins");
}
handleError(error, node) {
let plugin = this.result.lastPlugin;
try {
if (node)
node.addToError(error);
this.error = error;
if (error.name === "CssSyntaxError" && !error.plugin) {
error.plugin = plugin.postcssPlugin;
error.setMessage();
} else if (plugin.postcssVersion) {
if (true) {
let pluginName = plugin.postcssPlugin;
let pluginVer = plugin.postcssVersion;
let runtimeVer = this.result.processor.version;
let a = pluginVer.split(".");
let b = runtimeVer.split(".");
if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
console.error("Unknown error from PostCSS plugin. Your current PostCSS " + "version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below.");
}
}
}
} catch (err) {
if (console && console.error)
console.error(err);
}
return error;
}
prepareVisitors() {
this.listeners = {};
let add = (plugin, type, cb) => {
if (!this.listeners[type])
this.listeners[type] = [];
this.listeners[type].push([plugin, cb]);
};
for (let plugin of this.plugins) {
if (typeof plugin === "object") {
for (let event in plugin) {
if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
throw new Error(`Unknown event ${event} in ${plugin.postcssPlugin}. ` + `Try to update PostCSS (${this.processor.version} now).`);
}
if (!NOT_VISITORS[event]) {
if (typeof plugin[event] === "object") {
for (let filter in plugin[event]) {
if (filter === "*") {
add(plugin, event, plugin[event][filter]);
} else {
add(plugin, event + "-" + filter.toLowerCase(), plugin[event][filter]);
}
}
} else if (typeof plugin[event] === "function") {
add(plugin, event, plugin[event]);
}
}
}
}
}
this.hasListener = Object.keys(this.listeners).length > 0;
}
async runAsync() {
this.plugin = 0;
for (let i = 0;i < this.plugins.length; i++) {
let plugin = this.plugins[i];
let promise = this.runOnRoot(plugin);
if (isPromise(promise)) {
try {
await promise;
} catch (error) {
throw this.handleError(error);
}
}
}
this.prepareVisitors();
if (this.hasListener) {
let root = this.result.root;
while (!root[isClean]) {
root[isClean] = true;
let stack = [toStack(root)];
while (stack.length > 0) {
let promise = this.visitTick(stack);
if (isPromise(promise)) {
try {
await promise;
} catch (e) {
let node = stack[stack.length - 1].node;
throw this.handleError(e, node);
}
}
}
}
if (this.listeners.OnceExit) {
for (let [plugin, visitor] of this.listeners.OnceExit) {
this.result.lastPlugin = plugin;
try {
if (root.type === "document") {
let roots = root.nodes.map((subRoot) => visitor(subRoot, this.helpers));
await Promise.all(roots);
} else {
await visitor(root, this.helpers);
}
} catch (e) {
throw this.handleError(e);
}
}
}
}
this.processed = true;
return this.stringify();
}
runOnRoot(plugin) {
this.result.lastPlugin = plugin;
try {
if (typeof plugin === "object" && plugin.Once) {
if (this.result.root.type === "document") {
let roots = this.result.root.nodes.map((root) => plugin.Once(root, this.helpers));
if (isPromise(roots[0])) {
return Promise.all(roots);
}
return roots;
}
return plugin.Once(this.result.root, this.helpers);
} else if (typeof plugin === "function") {
return plugin(this.result.root, this.result);
}
} catch (error) {
throw this.handleError(error);
}
}
stringify() {
if (this.error)
throw this.error;
if (this.stringified)
return this.result;
this.stringified = true;
this.sync();
let opts = this.result.opts;
let str = stringify;
if (opts.syntax)
str = opts.syntax.stringify;
if (opts.stringifier)
str = opts.stringifier;
if (str.stringify)
str = str.stringify;
let map = new MapGenerator(str, this.result.root, this.result.opts);
let data = map.generate();
this.result.css = data[0];
this.result.map = data[1];
return this.result;
}
sync() {
if (this.error)
throw this.error;
if (this.processed)
return this.result;
this.processed = true;
if (this.processing) {
throw this.getAsyncError();
}
for (let plugin of this.plugins) {
let promise = this.runOnRoot(plugin);
if (isPromise(promise)) {
throw this.getAsyncError();
}
}
this.prepareVisitors();
if (this.hasListener) {
let root = this.result.root;
while (!root[isClean]) {
root[isClean] = true;
this.walkSync(root);
}
if (this.listeners.OnceExit) {
if (root.type === "document") {
for (let subRoot of root.nodes) {
this.visitSync(this.listeners.OnceExit, subRoot);
}
} else {
this.visitSync(this.listeners.OnceExit, root);
}
}
}
return this.result;
}
then(onFulfilled, onRejected) {
if (true) {
if (!("from" in this.opts)) {
warnOnce("Without `from` option PostCSS could generate wrong source map " + "and will not find Browserslist config. Set it to CSS file path " + "or to `undefined` to prevent this warning.");
}
}
return this.async().then(onFulfilled, onRejected);
}
toString() {
return this.css;
}
visitSync(visitors, node) {
for (let [plugin, visitor] of visitors) {
this.result.lastPlugin = plugin;
let promise;
try {
promise = visitor(node, this.helpers);
} catch (e) {
throw this.handleError(e, node.proxyOf);
}
if (node.type !== "root" && node.type !== "document" && !node.parent) {
return true;
}
if (isPromise(promise)) {
throw this.getAsyncError();
}
}
}
visitTick(stack) {
let visit = stack[stack.length - 1];
let { node, visitors } = visit;
if (node.type !== "root" && node.type !== "document" && !node.parent) {
stack.pop();
return;
}
if (visitors.length > 0 && visit.visitorIndex < visitors.length) {
let [plugin, visitor] = visitors[visit.visitorIndex];
visit.visitorIndex += 1;
if (visit.visitorIndex === visitors.length) {
visit.visitors = [];
visit.visitorIndex = 0;
}
this.result.lastPlugin = plugin;
try {
return visitor(node.toProxy(), this.helpers);
} catch (e) {
throw this.handleError(e, node);
}
}
if (visit.iterator !== 0) {
let iterator = visit.iterator;
let child;
while (child = node.nodes[node.indexes[iterator]]) {
node.indexes[iterator] += 1;
if (!child[isClean]) {
child[isClean] = true;
stack.push(toStack(child));
return;
}
}
visit.iterator = 0;
delete node.indexes[iterator];
}
let events = visit.events;
while (visit.eventIndex < events.length) {
let event = events[visit.eventIndex];
visit.eventIndex += 1;
if (event === CHILDREN) {
if (node.nodes && node.nodes.length) {
node[isClean] = true;
visit.iterator = node.getIterator();
}
return;
} else if (this.listeners[event]) {
visit.visitors = this.listeners[event];
return;
}
}
stack.pop();
}
walkSync(node) {
node[isClean] = true;
let events = getEvents(node);
for (let event of events) {
if (event === CHILDREN) {
if (node.nodes) {
node.each((child) => {
if (!child[isClean])
this.walkSync(child);
});
}
} else {
let visitors = this.listeners[event];
if (visitors) {
if (this.visitSync(visitors, node.toProxy()))
return;
}
}
}
}
warnings() {
return this.sync().warnings();
}
get content() {
return this.stringify().content;
}
get css() {
return this.stringify().css;
}
get map() {
return this.stringify().map;
}
get messages() {
return this.sync().messages;
}
get opts() {
return this.result.opts;
}
get processor() {
return this.result.processor;
}
get root() {
return this.sync().root;
}
get [Symbol.toStringTag]() {
return "LazyResult";
}
}
LazyResult.registerPostcss = (dependant) => {
postcss = dependant;
};
module.exports = LazyResult;
LazyResult.default = LazyResult;
Root.registerLazyResult(LazyResult);
Document.registerLazyResult(LazyResult);
});
// node_modules/postcss/lib/no-work-result.js
var require_no_work_result = __commonJS((exports, module) => {
var MapGenerator = require_map_generator();
var parse = require_parse();
var Result = require_result();
var stringify = require_stringify2();
var warnOnce = require_warn_once();
class NoWorkResult {
constructor(processor, css, opts) {
css = css.toString();
this.stringified = false;
this._processor = processor;
this._css = css;
this._opts = opts;
this._map = undefined;
let root;
let str = stringify;
this.result = new Result(this._processor, root, this._opts);
this.result.css = css;
let self2 = this;
Object.defineProperty(this.result, "root", {
get() {
return self2.root;
}
});
let map = new MapGenerator(str, root, this._opts, css);
if (map.isMap()) {
let [generatedCSS, generatedMap] = map.generate();
if (generatedCSS) {
this.result.css = generatedCSS;
}
if (generatedMap) {
this.result.map = generatedMap;
}
} else {
map.clearAnnotation();
this.result.css = map.css;
}
}
async() {
if (this.error)
return Promise.reject(this.error);
return Promise.resolve(this.result);
}
catch(onRejected) {
return this.async().catch(onRejected);
}
finally(onFinally) {
return this.async().then(onFinally, onFinally);
}
sync() {
if (this.error)
throw this.error;
return this.result;
}
then(onFulfilled, onRejected) {
if (true) {
if (!("from" in this._opts)) {
warnOnce("Without `from` option PostCSS could generate wrong source map " + "and will not find Browserslist config. Set it to CSS file path " + "or to `undefined` to prevent this warning.");
}
}
return this.async().then(onFulfilled, onRejected);
}
toString() {
return this._css;
}
warnings() {
return [];
}
get content() {
return this.result.css;
}
get css() {
return this.result.css;
}
get map() {
return this.result.map;
}
get messages() {
return [];
}
get opts() {
return this.result.opts;
}
get processor() {
return this.result.processor;
}
get root() {
if (this._root) {
return this._root;
}
let root;
let parser = parse;
try {
root = parser(this._css, this._opts);
} catch (error) {
this.error = error;
}
if (this.error) {
throw this.error;
} else {
this._root = root;
return root;
}
}
get [Symbol.toStringTag]() {
return "NoWorkResult";
}
}
module.exports = NoWorkResult;
NoWorkResult.default = NoWorkResult;
});
// node_modules/postcss/lib/processor.js
var require_processor = __commonJS((exports, module) => {
var Document = require_document();
var LazyResult = require_lazy_result();
var NoWorkResult = require_no_work_result();
var Root = require_root();
class Processor {
constructor(plugins = []) {
this.version = "8.4.47";
this.plugins = this.normalize(plugins);
}
normalize(plugins) {
let normalized = [];
for (let i of plugins) {
if (i.postcss === true) {
i = i();
} else if (i.postcss) {
i = i.postcss;
}
if (typeof i === "object" && Array.isArray(i.plugins)) {
normalized = normalized.concat(i.plugins);
} else if (typeof i === "object" && i.postcssPlugin) {
normalized.push(i);
} else if (typeof i === "function") {
normalized.push(i);
} else if (typeof i === "object" && (i.parse || i.stringify)) {
if (true) {
throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use " + "one of the syntax/parser/stringifier options as outlined " + "in your PostCSS runner documentation.");
}
} else {
throw new Error(i + " is not a PostCSS plugin");
}
}
return normalized;
}
process(css, opts = {}) {
if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {
return new NoWorkResult(this, css, opts);
} else {
return new LazyResult(this, css, opts);
}
}
use(plugin) {
this.plugins = this.plugins.concat(this.normalize([plugin]));
return this;
}
}
module.exports = Processor;
Processor.default = Processor;
Root.registerProcessor(Processor);
Document.registerProcessor(Processor);
});
// node_modules/postcss/lib/postcss.js
var require_postcss = __commonJS((exports, module) => {
var AtRule = require_at_rule();
var Comment = require_comment();
var Container = require_container();
var CssSyntaxError = require_css_syntax_error();
var Declaration = require_declaration();
var Document = require_document();
var fromJSON = require_fromJSON();
var Input = require_input();
var LazyResult = require_lazy_result();
var list = require_list();
var Node = require_node3();
var parse = require_parse();
var Processor = require_processor();
var Result = require_result();
var Root = require_root();
var Rule = require_rule();
var stringify = require_stringify2();
var Warning = require_warning();
function postcss(...plugins) {
if (plugins.length === 1 && Array.isArray(plugins[0])) {
plugins = plugins[0];
}
return new Processor(plugins);
}
postcss.plugin = function plugin(name, initializer) {
let warningPrinted = false;
function creator(...args) {
if (console && console.warn && !warningPrinted) {
warningPrinted = true;
console.warn(name + ": postcss.plugin was deprecated. Migration guide:\n" + "https://evilmartians.com/chronicles/postcss-8-plugin-migration");
if (process.env.LANG && process.env.LANG.startsWith("cn")) {
console.warn(name + `: \u91CC\u9762 postcss.plugin \u88AB\u5F03\u7528. \u8FC1\u79FB\u6307\u5357:
` + "https://www.w3ctech.com/topic/2226");
}
}
let transformer = initializer(...args);
transformer.postcssPlugin = name;
transformer.postcssVersion = new Processor().version;
return transformer;
}
let cache;
Object.defineProperty(creator, "postcss", {
get() {
if (!cache)
cache = creator();
return cache;
}
});
creator.process = function(css, processOpts, pluginOpts) {
return postcss([creator(pluginOpts)]).process(css, processOpts);
};
return creator;
};
postcss.stringify = stringify;
postcss.parse = parse;
postcss.fromJSON = fromJSON;
postcss.list = list;
postcss.comment = (defaults) => new Comment(defaults);
postcss.atRule = (defaults) => new AtRule(defaults);
postcss.decl = (defaults) => new Declaration(defaults);
postcss.rule = (defaults) => new Rule(defaults);
postcss.root = (defaults) => new Root(defaults);
postcss.document = (defaults) => new Document(defaults);
postcss.CssSyntaxError = CssSyntaxError;
postcss.Declaration = Declaration;
postcss.Container = Container;
postcss.Processor = Processor;
postcss.Document = Document;
postcss.Comment = Comment;
postcss.Warning = Warning;
postcss.AtRule = AtRule;
postcss.Result = Result;
postcss.Input = Input;
postcss.Rule = Rule;
postcss.Root = Root;
postcss.Node = Node;
LazyResult.registerPostcss(postcss);
module.exports = postcss;
postcss.default = postcss;
});
// node_modules/sanitize-html/index.js
var require_sanitize_html = __commonJS((exports, module) => {
var htmlparser = require_lib6();
var escapeStringRegexp = require_escape_string_regexp();
var { isPlainObject } = require_is_plain_object();
var deepmerge = require_cjs();
var parseSrcset = require_parse_srcset();
var { parse: postcssParse } = require_postcss();
var mediaTags = [
"img",
"audio",
"video",
"picture",
"svg",
"object",
"map",
"iframe",
"embed"
];
var vulnerableTags = ["script", "style"];
function each(obj, cb) {
if (obj) {
Object.keys(obj).forEach(function(key) {
cb(obj[key], key);
});
}
}
function has(obj, key) {
return {}.hasOwnProperty.call(obj, key);
}
function filter(a, cb) {
const n = [];
each(a, function(v) {
if (cb(v)) {
n.push(v);
}
});
return n;
}
function isEmptyObject(obj) {
for (const key in obj) {
if (has(obj, key)) {
return false;
}
}
return true;
}
function stringifySrcset(parsedSrcset) {
return parsedSrcset.map(function(part) {
if (!part.url) {
throw new Error("URL missing");
}
return part.url + (part.w ? ` ${part.w}w` : "") + (part.h ? ` ${part.h}h` : "") + (part.d ? ` ${part.d}x` : "");
}).join(", ");
}
module.exports = sanitizeHtml;
var VALID_HTML_ATTRIBUTE_NAME = /^[^\0\t\n\f\r /<=>]+$/;
function sanitizeHtml(html, options, _recursing) {
if (html == null) {
return "";
}
if (typeof html === "number") {
html = html.toString();
}
let result = "";
let tempResult = "";
function Frame(tag, attribs) {
const that = this;
this.tag = tag;
this.attribs = attribs || {};
this.tagPosition = result.length;
this.text = "";
this.mediaChildren = [];
this.updateParentNodeText = function() {
if (stack.length) {
const parentFrame = stack[stack.length - 1];
parentFrame.text += that.text;
}
};
this.updateParentNodeMediaChildren = function() {
if (stack.length && mediaTags.includes(this.tag)) {
const parentFrame = stack[stack.length - 1];
parentFrame.mediaChildren.push(this.tag);
}
};
}
options = Object.assign({}, sanitizeHtml.defaults, options);
options.parser = Object.assign({}, htmlParserDefaults, options.parser);
const tagAllowed = function(name) {
return options.allowedTags === false || (options.allowedTags || []).indexOf(name) > -1;
};
vulnerableTags.forEach(function(tag) {
if (tagAllowed(tag) && !options.allowVulnerableTags) {
console.warn(`
\u26A0\uFE0F Your \`allowedTags\` option includes, \`${tag}\`, which is inherently\nvulnerable to XSS attacks. Please remove it from \`allowedTags\`.\nOr, to disable this warning, add the \`allowVulnerableTags\` option\nand ensure you are accounting for this risk.\n\n`);
}
});
const nonTextTagsArray = options.nonTextTags || [
"script",
"style",
"textarea",
"option"
];
let allowedAttributesMap;
let allowedAttributesGlobMap;
if (options.allowedAttributes) {
allowedAttributesMap = {};
allowedAttributesGlobMap = {};
each(options.allowedAttributes, function(attributes, tag) {
allowedAttributesMap[tag] = [];
const globRegex = [];
attributes.forEach(function(obj) {
if (typeof obj === "string" && obj.indexOf("*") >= 0) {
globRegex.push(escapeStringRegexp(obj).replace(/\\\*/g, ".*"));
} else {
allowedAttributesMap[tag].push(obj);
}
});
if (globRegex.length) {
allowedAttributesGlobMap[tag] = new RegExp("^(" + globRegex.join("|") + ")$");
}
});
}
const allowedClassesMap = {};
const allowedClassesGlobMap = {};
const allowedClassesRegexMap = {};
each(options.allowedClasses, function(classes, tag) {
if (allowedAttributesMap) {
if (!has(allowedAttributesMap, tag)) {
allowedAttributesMap[tag] = [];
}
allowedAttributesMap[tag].push("class");
}
allowedClassesMap[tag] = classes;
if (Array.isArray(classes)) {
const globRegex = [];
allowedClassesMap[tag] = [];
allowedClassesRegexMap[tag] = [];
classes.forEach(function(obj) {
if (typeof obj === "string" && obj.indexOf("*") >= 0) {
globRegex.push(escapeStringRegexp(obj).replace(/\\\*/g, ".*"));
} else if (obj instanceof RegExp) {
allowedClassesRegexMap[tag].push(obj);
} else {
allowedClassesMap[tag].push(obj);
}
});
if (globRegex.length) {
allowedClassesGlobMap[tag] = new RegExp("^(" + globRegex.join("|") + ")$");
}
}
});
const transformTagsMap = {};
let transformTagsAll;
each(options.transformTags, function(transform, tag) {
let transFun;
if (typeof transform === "function") {
transFun = transform;
} else if (typeof transform === "string") {
transFun = sanitizeHtml.simpleTransform(transform);
}
if (tag === "*") {
transformTagsAll = transFun;
} else {
transformTagsMap[tag] = transFun;
}
});
let depth;
let stack;
let skipMap;
let transformMap;
let skipText;
let skipTextDepth;
let addedText = false;
initializeState();
const parser = new htmlparser.Parser({
onopentag: function(name, attribs) {
if (options.enforceHtmlBoundary && name === "html") {
initializeState();
}
if (skipText) {
skipTextDepth++;
return;
}
const frame = new Frame(name, attribs);
stack.push(frame);
let skip = false;
const hasText = !!frame.text;
let transformedTag;
if (has(transformTagsMap, name)) {
transformedTag = transformTagsMap[name](name, attribs);
frame.attribs = attribs = transformedTag.attribs;
if (transformedTag.text !== undefined) {
frame.innerText = transformedTag.text;
}
if (name !== transformedTag.tagName) {
frame.name = name = transformedTag.tagName;
transformMap[depth] = transformedTag.tagName;
}
}
if (transformTagsAll) {
transformedTag = transformTagsAll(name, attribs);
frame.attribs = attribs = transformedTag.attribs;
if (name !== transformedTag.tagName) {
frame.name = name = transformedTag.tagName;
transformMap[depth] = transformedTag.tagName;
}
}
if (!tagAllowed(name) || options.disallowedTagsMode === "recursiveEscape" && !isEmptyObject(skipMap) || options.nestingLimit != null && depth >= options.nestingLimit) {
skip = true;
skipMap[depth] = true;
if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
if (nonTextTagsArray.indexOf(name) !== -1) {
skipText = true;
skipTextDepth = 1;
}
}
skipMap[depth] = true;
}
depth++;
if (skip) {
if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
return;
}
tempResult = result;
result = "";
}
result += "<" + name;
if (name === "script") {
if (options.allowedScriptHostnames || options.allowedScriptDomains) {
frame.innerText = "";
}
}
if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap["*"]) {
each(attribs, function(value, a) {
if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {
delete frame.attribs[a];
return;
}
if (value === "" && !options.allowedEmptyAttributes.includes(a) && (options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes("*"))) {
delete frame.attribs[a];
return;
}
let passedAllowedAttributesMapCheck = false;
if (!allowedAttributesMap || has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1 || allowedAttributesMap["*"] && allowedAttributesMap["*"].indexOf(a) !== -1 || has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a) || allowedAttributesGlobMap["*"] && allowedAttributesGlobMap["*"].test(a)) {
passedAllowedAttributesMapCheck = true;
} else if (allowedAttributesMap && allowedAttributesMap[name]) {
for (const o of allowedAttributesMap[name]) {
if (isPlainObject(o) && o.name && o.name === a) {
passedAllowedAttributesMapCheck = true;
let newValue = "";
if (o.multiple === true) {
const splitStrArray = value.split(" ");
for (const s of splitStrArray) {
if (o.values.indexOf(s) !== -1) {
if (newValue === "") {
newValue = s;
} else {
newValue += " " + s;
}
}
}
} else if (o.values.indexOf(value) >= 0) {
newValue = value;
}
value = newValue;
}
}
}
if (passedAllowedAttributesMapCheck) {
if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {
if (naughtyHref(name, value)) {
delete frame.attribs[a];
return;
}
}
if (name === "script" && a === "src") {
let allowed = true;
try {
const parsed = parseUrl(value);
if (options.allowedScriptHostnames || options.allowedScriptDomains) {
const allowedHostname = (options.allowedScriptHostnames || []).find(function(hostname) {
return hostname === parsed.url.hostname;
});
const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
});
allowed = allowedHostname || allowedDomain;
}
} catch (e) {
allowed = false;
}
if (!allowed) {
delete frame.attribs[a];
return;
}
}
if (name === "iframe" && a === "src") {
let allowed = true;
try {
const parsed = parseUrl(value);
if (parsed.isRelativeUrl) {
allowed = has(options, "allowIframeRelativeUrls") ? options.allowIframeRelativeUrls : !options.allowedIframeHostnames && !options.allowedIframeDomains;
} else if (options.allowedIframeHostnames || options.allowedIframeDomains) {
const allowedHostname = (options.allowedIframeHostnames || []).find(function(hostname) {
return hostname === parsed.url.hostname;
});
const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
});
allowed = allowedHostname || allowedDomain;
}
} catch (e) {
allowed = false;
}
if (!allowed) {
delete frame.attribs[a];
return;
}
}
if (a === "srcset") {
try {
let parsed = parseSrcset(value);
parsed.forEach(function(value2) {
if (naughtyHref("srcset", value2.url)) {
value2.evil = true;
}
});
parsed = filter(parsed, function(v) {
return !v.evil;
});
if (!parsed.length) {
delete frame.attribs[a];
return;
} else {
value = stringifySrcset(filter(parsed, function(v) {
return !v.evil;
}));
frame.attribs[a] = value;
}
} catch (e) {
delete frame.attribs[a];
return;
}
}
if (a === "class") {
const allowedSpecificClasses = allowedClassesMap[name];
const allowedWildcardClasses = allowedClassesMap["*"];
const allowedSpecificClassesGlob = allowedClassesGlobMap[name];
const allowedSpecificClassesRegex = allowedClassesRegexMap[name];
const allowedWildcardClassesRegex = allowedClassesRegexMap["*"];
const allowedWildcardClassesGlob = allowedClassesGlobMap["*"];
const allowedClassesGlobs = [
allowedSpecificClassesGlob,
allowedWildcardClassesGlob
].concat(allowedSpecificClassesRegex, allowedWildcardClassesRegex).filter(function(t) {
return t;
});
if (allowedSpecificClasses && allowedWildcardClasses) {
value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);
} else {
value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);
}
if (!value.length) {
delete frame.attribs[a];
return;
}
}
if (a === "style") {
if (options.parseStyleAttributes) {
try {
const abstractSyntaxTree = postcssParse(name + " {" + value + "}", { map: false });
const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);
value = stringifyStyleAttributes(filteredAST);
if (value.length === 0) {
delete frame.attribs[a];
return;
}
} catch (e) {
if (typeof window !== "undefined") {
console.warn('Failed to parse "' + name + " {" + value + "}" + '", If you\'re running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547');
}
delete frame.attribs[a];
return;
}
} else if (options.allowedStyles) {
throw new Error("allowedStyles option cannot be used together with parseStyleAttributes: false.");
}
}
result += " " + a;
if (value && value.length) {
result += '="' + escapeHtml(value, true) + '"';
} else if (options.allowedEmptyAttributes.includes(a)) {
result += '=""';
}
} else {
delete frame.attribs[a];
}
});
}
if (options.selfClosing.indexOf(name) !== -1) {
result += " />";
} else {
result += ">";
if (frame.innerText && !hasText && !options.textFilter) {
result += escapeHtml(frame.innerText);
addedText = true;
}
}
if (skip) {
result = tempResult + escapeHtml(result);
tempResult = "";
}
},
ontext: function(text) {
if (skipText) {
return;
}
const lastFrame = stack[stack.length - 1];
let tag;
if (lastFrame) {
tag = lastFrame.tag;
text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;
}
if (options.disallowedTagsMode === "completelyDiscard" && !tagAllowed(tag)) {
text = "";
} else if ((options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") && (tag === "script" || tag === "style")) {
result += text;
} else {
const escaped = escapeHtml(text, false);
if (options.textFilter && !addedText) {
result += options.textFilter(escaped, tag);
} else if (!addedText) {
result += escaped;
}
}
if (stack.length) {
const frame = stack[stack.length - 1];
frame.text += text;
}
},
onclosetag: function(name, isImplied) {
if (skipText) {
skipTextDepth--;
if (!skipTextDepth) {
skipText = false;
} else {
return;
}
}
const frame = stack.pop();
if (!frame) {
return;
}
if (frame.tag !== name) {
stack.push(frame);
return;
}
skipText = options.enforceHtmlBoundary ? name === "html" : false;
depth--;
const skip = skipMap[depth];
if (skip) {
delete skipMap[depth];
if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
frame.updateParentNodeText();
return;
}
tempResult = result;
result = "";
}
if (transformMap[depth]) {
name = transformMap[depth];
delete transformMap[depth];
}
if (options.exclusiveFilter && options.exclusiveFilter(frame)) {
result = result.substr(0, frame.tagPosition);
return;
}
frame.updateParentNodeMediaChildren();
frame.updateParentNodeText();
if (options.selfClosing.indexOf(name) !== -1 || isImplied && !tagAllowed(name) && ["escape", "recursiveEscape"].indexOf(options.disallowedTagsMode) >= 0) {
if (skip) {
result = tempResult;
tempResult = "";
}
return;
}
result += "</" + name + ">";
if (skip) {
result = tempResult + escapeHtml(result);
tempResult = "";
}
addedText = false;
}
}, options.parser);
parser.write(html);
parser.end();
return result;
function initializeState() {
result = "";
depth = 0;
stack = [];
skipMap = {};
transformMap = {};
skipText = false;
skipTextDepth = 0;
}
function escapeHtml(s, quote) {
if (typeof s !== "string") {
s = s + "";
}
if (options.parser.decodeEntities) {
s = s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
if (quote) {
s = s.replace(/"/g, "&quot;");
}
}
s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
if (quote) {
s = s.replace(/"/g, "&quot;");
}
return s;
}
function naughtyHref(name, href) {
href = href.replace(/[\x00-\x20]+/g, "");
while (true) {
const firstIndex = href.indexOf("<!--");
if (firstIndex === -1) {
break;
}
const lastIndex = href.indexOf("-->", firstIndex + 4);
if (lastIndex === -1) {
break;
}
href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);
}
const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\-+]*):/);
if (!matches) {
if (href.match(/^[/\\]{2}/)) {
return !options.allowProtocolRelative;
}
return false;
}
const scheme = matches[1].toLowerCase();
if (has(options.allowedSchemesByTag, name)) {
return options.allowedSchemesByTag[name].indexOf(scheme) === -1;
}
return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;
}
function parseUrl(value) {
value = value.replace(/^(\w+:)?\s*[\\/]\s*[\\/]/, "$1//");
if (value.startsWith("relative:")) {
throw new Error("relative: exploit attempt");
}
let base = "relative://relative-site";
for (let i = 0;i < 100; i++) {
base += `/${i}`;
}
const parsed = new URL(value, base);
const isRelativeUrl = parsed && parsed.hostname === "relative-site" && parsed.protocol === "relative:";
return {
isRelativeUrl,
url: parsed
};
}
function filterCss(abstractSyntaxTree, allowedStyles) {
if (!allowedStyles) {
return abstractSyntaxTree;
}
const astRules = abstractSyntaxTree.nodes[0];
let selectedRule;
if (allowedStyles[astRules.selector] && allowedStyles["*"]) {
selectedRule = deepmerge(allowedStyles[astRules.selector], allowedStyles["*"]);
} else {
selectedRule = allowedStyles[astRules.selector] || allowedStyles["*"];
}
if (selectedRule) {
abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);
}
return abstractSyntaxTree;
}
function stringifyStyleAttributes(filteredAST) {
return filteredAST.nodes[0].nodes.reduce(function(extractedAttributes, attrObject) {
extractedAttributes.push(`${attrObject.prop}:${attrObject.value}${attrObject.important ? " !important" : ""}`);
return extractedAttributes;
}, []).join(";");
}
function filterDeclarations(selectedRule) {
return function(allowedDeclarationsList, attributeObject) {
if (has(selectedRule, attributeObject.prop)) {
const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {
return regularExpression.test(attributeObject.value);
});
if (matchesRegex) {
allowedDeclarationsList.push(attributeObject);
}
}
return allowedDeclarationsList;
};
}
function filterClasses(classes, allowed, allowedGlobs) {
if (!allowed) {
return classes;
}
classes = classes.split(/\s+/);
return classes.filter(function(clss) {
return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {
return glob.test(clss);
});
}).join(" ");
}
}
var htmlParserDefaults = {
decodeEntities: true
};
sanitizeHtml.defaults = {
allowedTags: [
"address",
"article",
"aside",
"footer",
"header",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"hgroup",
"main",
"nav",
"section",
"blockquote",
"dd",
"div",
"dl",
"dt",
"figcaption",
"figure",
"hr",
"li",
"main",
"ol",
"p",
"pre",
"ul",
"a",
"abbr",
"b",
"bdi",
"bdo",
"br",
"cite",
"code",
"data",
"dfn",
"em",
"i",
"kbd",
"mark",
"q",
"rb",
"rp",
"rt",
"rtc",
"ruby",
"s",
"samp",
"small",
"span",
"strong",
"sub",
"sup",
"time",
"u",
"var",
"wbr",
"caption",
"col",
"colgroup",
"table",
"tbody",
"td",
"tfoot",
"th",
"thead",
"tr"
],
nonBooleanAttributes: [
"abbr",
"accept",
"accept-charset",
"accesskey",
"action",
"allow",
"alt",
"as",
"autocapitalize",
"autocomplete",
"blocking",
"charset",
"cite",
"class",
"color",
"cols",
"colspan",
"content",
"contenteditable",
"coords",
"crossorigin",
"data",
"datetime",
"decoding",
"dir",
"dirname",
"download",
"draggable",
"enctype",
"enterkeyhint",
"fetchpriority",
"for",
"form",
"formaction",
"formenctype",
"formmethod",
"formtarget",
"headers",
"height",
"hidden",
"high",
"href",
"hreflang",
"http-equiv",
"id",
"imagesizes",
"imagesrcset",
"inputmode",
"integrity",
"is",
"itemid",
"itemprop",
"itemref",
"itemtype",
"kind",
"label",
"lang",
"list",
"loading",
"low",
"max",
"maxlength",
"media",
"method",
"min",
"minlength",
"name",
"nonce",
"optimum",
"pattern",
"ping",
"placeholder",
"popover",
"popovertarget",
"popovertargetaction",
"poster",
"preload",
"referrerpolicy",
"rel",
"rows",
"rowspan",
"sandbox",
"scope",
"shape",
"size",
"sizes",
"slot",
"span",
"spellcheck",
"src",
"srcdoc",
"srclang",
"srcset",
"start",
"step",
"style",
"tabindex",
"target",
"title",
"translate",
"type",
"usemap",
"value",
"width",
"wrap",
"onauxclick",
"onafterprint",
"onbeforematch",
"onbeforeprint",
"onbeforeunload",
"onbeforetoggle",
"onblur",
"oncancel",
"oncanplay",
"oncanplaythrough",
"onchange",
"onclick",
"onclose",
"oncontextlost",
"oncontextmenu",
"oncontextrestored",
"oncopy",
"oncuechange",
"oncut",
"ondblclick",
"ondrag",
"ondragend",
"ondragenter",
"ondragleave",
"ondragover",
"ondragstart",
"ondrop",
"ondurationchange",
"onemptied",
"onended",
"onerror",
"onfocus",
"onformdata",
"onhashchange",
"oninput",
"oninvalid",
"onkeydown",
"onkeypress",
"onkeyup",
"onlanguagechange",
"onload",
"onloadeddata",
"onloadedmetadata",
"onloadstart",
"onmessage",
"onmessageerror",
"onmousedown",
"onmouseenter",
"onmouseleave",
"onmousemove",
"onmouseout",
"onmouseover",
"onmouseup",
"onoffline",
"ononline",
"onpagehide",
"onpageshow",
"onpaste",
"onpause",
"onplay",
"onplaying",
"onpopstate",
"onprogress",
"onratechange",
"onreset",
"onresize",
"onrejectionhandled",
"onscroll",
"onscrollend",
"onsecuritypolicyviolation",
"onseeked",
"onseeking",
"onselect",
"onslotchange",
"onstalled",
"onstorage",
"onsubmit",
"onsuspend",
"ontimeupdate",
"ontoggle",
"onunhandledrejection",
"onunload",
"onvolumechange",
"onwaiting",
"onwheel"
],
disallowedTagsMode: "discard",
allowedAttributes: {
a: ["href", "name", "target"],
img: ["src", "srcset", "alt", "title", "width", "height", "loading"]
},
allowedEmptyAttributes: [
"alt"
],
selfClosing: ["img", "br", "hr", "area", "base", "basefont", "input", "link", "meta"],
allowedSchemes: ["http", "https", "ftp", "mailto", "tel"],
allowedSchemesByTag: {},
allowedSchemesAppliedToAttributes: ["href", "src", "cite"],
allowProtocolRelative: true,
enforceHtmlBoundary: false,
parseStyleAttributes: true
};
sanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {
merge = merge === undefined ? true : merge;
newAttribs = newAttribs || {};
return function(tagName, attribs) {
let attrib;
if (merge) {
for (attrib in newAttribs) {
attribs[attrib] = newAttribs[attrib];
}
} else {
attribs = newAttribs;
}
return {
tagName: newTagName,
attribs
};
};
};
});
// package-shared/utils/backend/global-db/DB_HANDLER.ts
async function DB_HANDLER(...args) {
try {
const results = await MASTER.query(...args);
await MASTER.end();
return JSON.parse(JSON.stringify(results));
} catch (error) {
console.log("DB Error =>", error);
return {
success: false,
error: error.message
};
}
}
var import_serverless_mysql3, MASTER;
var init_DB_HANDLER = __esm(() => {
import_serverless_mysql3 = __toESM(require_serverless_mysql(), 1);
init_grabDbSSL();
MASTER = import_serverless_mysql3.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT ? Number(process.env.DSQL_DB_PORT) : undefined,
charset: "utf8mb4",
ssl: grabDbSSL()
}
});
});
// package-shared/functions/dsql/encrypt.ts
var exports_encrypt = {};
__export(exports_encrypt, {
default: () => encrypt
});
import { scryptSync as scryptSync2, createCipheriv } from "crypto";
import { Buffer as Buffer3 } from "buffer";
function encrypt({
data,
encryptionKey,
encryptionSalt
}) {
if (!data?.match(/./)) {
console.log("Encryption string is invalid");
return data;
}
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
const finalKeyLen = process.env.DSQL_ENCRYPTION_KEY_LENGTH ? Number(process.env.DSQL_ENCRYPTION_KEY_LENGTH) : 24;
if (!finalEncryptionKey?.match(/.{8,}/)) {
console.log("Encryption key is invalid");
return data;
}
if (!finalEncryptionSalt?.match(/.{8,}/)) {
console.log("Encryption salt is invalid");
return data;
}
const algorithm = "aes-192-cbc";
const password = finalEncryptionKey;
let key = scryptSync2(password, finalEncryptionSalt, finalKeyLen);
let iv = Buffer3.alloc(16, 0);
const cipher = createCipheriv(algorithm, key, iv);
try {
let encrypted = cipher.update(data, "utf8", "hex");
encrypted += cipher.final("hex");
return encrypted;
} catch (error) {
console.log("Error in encrypting =>", error.message);
return data;
}
}
var init_encrypt = __esm(() => {
module_encrypt.exports = encrypt;
});
// package-shared/functions/backend/db/deleteDbEntry.ts
async function deleteDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
identifierColumnName,
identifierValue,
useLocal
}) {
try {
const isMaster = useLocal ? true : dbContext?.match(/dsql.user/i) ? false : dbFullName && !dbFullName.match(/^datasquirel$/) ? false : true;
const dbHandler = useLocal ? LOCAL_DB_HANDLER : isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
const query = `DELETE FROM ${tableName} WHERE \`${identifierColumnName}\`=?`;
const deletedEntry = isMaster ? await dbHandler(query, [identifierValue]) : await dbHandler({
paradigm,
queryString: query,
database: dbFullName,
queryValues: [identifierValue]
});
return deletedEntry;
} catch (error) {
return null;
}
}
var init_deleteDbEntry = __esm(() => {
init_DB_HANDLER();
init_DSQL_USER_DB_HANDLER();
init_LOCAL_DB_HANDLER();
});
// package-shared/utils/ejson.ts
function parse(string, reviver) {
if (!string)
return;
if (typeof string == "object")
return string;
if (typeof string !== "string")
return;
try {
return JSON.parse(string, reviver);
} catch (error) {
return;
}
}
function stringify(value, replacer, space) {
try {
return JSON.stringify(value, replacer, space);
} catch (error) {
return;
}
}
var EJSON, ejson_default;
var init_ejson = __esm(() => {
EJSON = {
parse,
stringify
};
ejson_default = EJSON;
});
// package-shared/data/defaultFields.json
var require_defaultFields = __commonJS((exports, module) => {
module.exports = [
{
fieldName: "id",
dataType: "BIGINT",
notNullValue: true,
primaryKey: true,
autoIncrement: true
},
{
fieldName: "uuid",
dataType: "UUID",
defaultValueLiteral: "UUID()"
},
{
fieldName: "date_created",
dataType: "VARCHAR(250)",
nullValue: true
},
{
fieldName: "date_created_code",
dataType: "BIGINT",
nullValue: true
},
{
fieldName: "date_created_timestamp",
dataType: "TIMESTAMP",
defaultValueLiteral: "CURRENT_TIMESTAMP"
},
{
fieldName: "date_updated",
dataType: "VARCHAR(250)",
nullValue: true
},
{
fieldName: "date_updated_code",
dataType: "BIGINT",
nullValue: true
},
{
fieldName: "date_updated_timestamp",
dataType: "TIMESTAMP",
defaultValueLiteral: "CURRENT_TIMESTAMP",
onUpdateLiteral: "CURRENT_TIMESTAMP"
}
];
});
// node_modules/dotenv/package.json
var require_package = __commonJS((exports, module) => {
module.exports = {
name: "dotenv",
version: "16.3.1",
description: "Loads environment variables from .env file",
main: "lib/main.js",
types: "lib/main.d.ts",
exports: {
".": {
types: "./lib/main.d.ts",
require: "./lib/main.js",
default: "./lib/main.js"
},
"./config": "./config.js",
"./config.js": "./config.js",
"./lib/env-options": "./lib/env-options.js",
"./lib/env-options.js": "./lib/env-options.js",
"./lib/cli-options": "./lib/cli-options.js",
"./lib/cli-options.js": "./lib/cli-options.js",
"./package.json": "./package.json"
},
scripts: {
"dts-check": "tsc --project tests/types/tsconfig.json",
lint: "standard",
"lint-readme": "standard-markdown",
pretest: "npm run lint && npm run dts-check",
test: "tap tests/*.js --100 -Rspec",
prerelease: "npm test",
release: "standard-version"
},
repository: {
type: "git",
url: "git://github.com/motdotla/dotenv.git"
},
funding: "https://github.com/motdotla/dotenv?sponsor=1",
keywords: [
"dotenv",
"env",
".env",
"environment",
"variables",
"config",
"settings"
],
readmeFilename: "README.md",
license: "BSD-2-Clause",
devDependencies: {
"@definitelytyped/dtslint": "^0.0.133",
"@types/node": "^18.11.3",
decache: "^4.6.1",
sinon: "^14.0.1",
standard: "^17.0.0",
"standard-markdown": "^7.1.0",
"standard-version": "^9.5.0",
tap: "^16.3.0",
tar: "^6.1.11",
typescript: "^4.8.4"
},
engines: {
node: ">=12"
},
browser: {
fs: false
}
};
});
// node_modules/dotenv/lib/main.js
var require_main = __commonJS((exports, module) => {
var fs10 = __require("fs");
var path6 = __require("path");
var os = __require("os");
var crypto2 = __require("crypto");
var packageJson = require_package();
var version = packageJson.version;
var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
function parse2(src) {
const obj = {};
let lines = src.toString();
lines = lines.replace(/\r\n?/mg, "\n");
let match;
while ((match = LINE.exec(lines)) != null) {
const key = match[1];
let value = match[2] || "";
value = value.trim();
const maybeQuote = value[0];
value = value.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
if (maybeQuote === '"') {
value = value.replace(/\\n/g, "\n");
value = value.replace(/\\r/g, "\r");
}
obj[key] = value;
}
return obj;
}
function _parseVault(options) {
const vaultPath = _vaultPath(options);
const result = DotenvModule.configDotenv({ path: vaultPath });
if (!result.parsed) {
throw new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);
}
const keys = _dotenvKey(options).split(",");
const length = keys.length;
let decrypted;
for (let i = 0;i < length; i++) {
try {
const key = keys[i].trim();
const attrs = _instructions(result, key);
decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key);
break;
} catch (error) {
if (i + 1 >= length) {
throw error;
}
}
}
return DotenvModule.parse(decrypted);
}
function _log(message) {
console.log(`[dotenv@${version}][INFO] ${message}`);
}
function _warn(message) {
console.log(`[dotenv@${version}][WARN] ${message}`);
}
function _debug(message) {
console.log(`[dotenv@${version}][DEBUG] ${message}`);
}
function _dotenvKey(options) {
if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {
return options.DOTENV_KEY;
}
if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {
return process.env.DOTENV_KEY;
}
return "";
}
function _instructions(result, dotenvKey) {
let uri;
try {
uri = new URL(dotenvKey);
} catch (error) {
if (error.code === "ERR_INVALID_URL") {
throw new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development");
}
throw error;
}
const key = uri.password;
if (!key) {
throw new Error("INVALID_DOTENV_KEY: Missing key part");
}
const environment = uri.searchParams.get("environment");
if (!environment) {
throw new Error("INVALID_DOTENV_KEY: Missing environment part");
}
const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`;
const ciphertext = result.parsed[environmentKey];
if (!ciphertext) {
throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`);
}
return { ciphertext, key };
}
function _vaultPath(options) {
let dotenvPath = path6.resolve(process.cwd(), ".env");
if (options && options.path && options.path.length > 0) {
dotenvPath = options.path;
}
return dotenvPath.endsWith(".vault") ? dotenvPath : `${dotenvPath}.vault`;
}
function _resolveHome(envPath) {
return envPath[0] === "~" ? path6.join(os.homedir(), envPath.slice(1)) : envPath;
}
function _configVault(options) {
_log("Loading env from encrypted .env.vault");
const parsed = DotenvModule._parseVault(options);
let processEnv = process.env;
if (options && options.processEnv != null) {
processEnv = options.processEnv;
}
DotenvModule.populate(processEnv, parsed, options);
return { parsed };
}
function configDotenv(options) {
let dotenvPath = path6.resolve(process.cwd(), ".env");
let encoding = "utf8";
const debug = Boolean(options && options.debug);
if (options) {
if (options.path != null) {
dotenvPath = _resolveHome(options.path);
}
if (options.encoding != null) {
encoding = options.encoding;
}
}
try {
const parsed = DotenvModule.parse(fs10.readFileSync(dotenvPath, { encoding }));
let processEnv = process.env;
if (options && options.processEnv != null) {
processEnv = options.processEnv;
}
DotenvModule.populate(processEnv, parsed, options);
return { parsed };
} catch (e) {
if (debug) {
_debug(`Failed to load ${dotenvPath} ${e.message}`);
}
return { error: e };
}
}
function config(options) {
const vaultPath = _vaultPath(options);
if (_dotenvKey(options).length === 0) {
return DotenvModule.configDotenv(options);
}
if (!fs10.existsSync(vaultPath)) {
_warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`);
return DotenvModule.configDotenv(options);
}
return DotenvModule._configVault(options);
}
function decrypt2(encrypted, keyStr) {
const key = Buffer.from(keyStr.slice(-64), "hex");
let ciphertext = Buffer.from(encrypted, "base64");
const nonce = ciphertext.slice(0, 12);
const authTag = ciphertext.slice(-16);
ciphertext = ciphertext.slice(12, -16);
try {
const aesgcm = crypto2.createDecipheriv("aes-256-gcm", key, nonce);
aesgcm.setAuthTag(authTag);
return `${aesgcm.update(ciphertext)}${aesgcm.final()}`;
} catch (error) {
const isRange = error instanceof RangeError;
const invalidKeyLength = error.message === "Invalid key length";
const decryptionFailed = error.message === "Unsupported state or unable to authenticate data";
if (isRange || invalidKeyLength) {
const msg = "INVALID_DOTENV_KEY: It must be 64 characters long (or more)";
throw new Error(msg);
} else if (decryptionFailed) {
const msg = "DECRYPTION_FAILED: Please check your DOTENV_KEY";
throw new Error(msg);
} else {
console.error("Error: ", error.code);
console.error("Error: ", error.message);
throw error;
}
}
}
function populate(processEnv, parsed, options = {}) {
const debug = Boolean(options && options.debug);
const override = Boolean(options && options.override);
if (typeof parsed !== "object") {
throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");
}
for (const key of Object.keys(parsed)) {
if (Object.prototype.hasOwnProperty.call(processEnv, key)) {
if (override === true) {
processEnv[key] = parsed[key];
}
if (debug) {
if (override === true) {
_debug(`"${key}" is already defined and WAS overwritten`);
} else {
_debug(`"${key}" is already defined and was NOT overwritten`);
}
}
} else {
processEnv[key] = parsed[key];
}
}
}
var DotenvModule = {
configDotenv,
_configVault,
_parseVault,
config,
decrypt: decrypt2,
parse: parse2,
populate
};
exports.configDotenv = DotenvModule.configDotenv;
exports._configVault = DotenvModule._configVault;
exports._parseVault = DotenvModule._parseVault;
exports.config = DotenvModule.config;
exports.decrypt = DotenvModule.decrypt;
exports.parse = DotenvModule.parse;
exports.populate = DotenvModule.populate;
module.exports = DotenvModule;
});
// package-shared/data/possibleFields.json
var require_possibleFields = __commonJS((exports, module) => {
module.exports = {
fieldName: "string",
dataType: "BIGINT",
nullValue: true,
primaryKey: true,
autoIncrement: true,
defaultValue: "CURRENT_TIMESTAMP",
defaultValueLiteral: "CURRENT_TIMESTAMP",
notNullValue: true,
foreignKey: {
foreignKeyName: "Name",
destinationTableName: "Table Name",
destinationTableColumnName: "Column Name",
cascadeDelete: true,
cascadeUpdate: true
},
onUpdate: "CURRENT_TIMESTAMP",
onUpdateLiteral: "CURRENT_TIMESTAMP",
onDelete: "CURRENT_TIMESTAMP",
onDeleteLiteral: "CURRENT_TIMESTAMP",
encrypted: false
};
});
// package-shared/data/dataTypes.json
var require_dataTypes = __commonJS((exports, module) => {
module.exports = [
{
title: "VARCHAR",
name: "VARCHAR",
value: "0-255",
argument: true,
description: "Varchar is simply letters and numbers within the range 0 - 255",
maxValue: 255
},
{
title: "TINYINT",
name: "TINYINT",
value: "0-100",
description: "TINYINT means Integers: 0 to 100",
maxValue: 127
},
{
title: "SMALLINT",
name: "SMALLINT",
value: "0-255",
description: "SMALLINT means Integers: 0 to 240933",
maxValue: 32767
},
{
title: "MEDIUMINT",
name: "MEDIUMINT",
value: "0-255",
description: "MEDIUMINT means Integers: 0 to 1245568545560",
maxValue: 8388607
},
{
title: "INT",
name: "INT",
value: "0-255",
description: "INT means Integers: 0 to 12560",
maxValue: 2147483647
},
{
title: "BIGINT",
name: "BIGINT",
value: "0-255",
description: "BIGINT means Integers: 0 to 1245569056767568545560",
maxValue: 2000000000000000000000000000000000000000000000000000000000000000
},
{
title: "TINYTEXT",
name: "TINYTEXT",
value: "0-255",
description: "Text with 255 max characters",
maxValue: 127
},
{
title: "TEXT",
name: "TEXT",
value: "0-100",
description: "MEDIUMTEXT is just text with max length 16,777,215",
maxValue: 127
},
{
title: "MEDIUMTEXT",
name: "MEDIUMTEXT",
value: "0-255",
description: "MEDIUMTEXT is just text with max length 16,777,215",
maxValue: 127
},
{
title: "LONGTEXT",
name: "LONGTEXT",
value: "0-255",
description: "LONGTEXT is just text with max length 4,294,967,295",
maxValue: 127
},
{
title: "UUID",
name: "UUID",
valueLiteral: "UUID()",
description: "A Unique ID"
}
];
});
// package-shared/data/presets/users.json
var require_users = __commonJS((exports, module) => {
module.exports = {
tableName: "users",
tableFullName: "Users",
fields: [
{
fieldName: "first_name",
dataType: "VARCHAR(100)",
notNullValue: true
},
{
fieldName: "last_name",
dataType: "VARCHAR(100)",
notNullValue: true
},
{
fieldName: "email",
dataType: "VARCHAR(200)",
notNullValue: true
},
{
fieldName: "phone",
dataType: "VARCHAR(50)"
},
{
fieldName: "user_type",
dataType: "VARCHAR(20)",
defaultValue: "default"
},
{
fieldName: "username",
dataType: "VARCHAR(100)",
nullValue: true
},
{
fieldName: "password",
dataType: "TEXT"
},
{
fieldName: "image",
dataType: "VARCHAR(250)"
},
{
fieldName: "image_thumbnail",
dataType: "VARCHAR(250)"
},
{
fieldName: "address",
dataType: "VARCHAR(255)"
},
{
fieldName: "city",
dataType: "VARCHAR(50)"
},
{
fieldName: "state",
dataType: "VARCHAR(50)"
},
{
fieldName: "country",
dataType: "VARCHAR(50)"
},
{
fieldName: "zip_code",
dataType: "VARCHAR(50)"
},
{
fieldName: "social_login",
dataType: "TINYINT",
defaultValue: "0"
},
{
fieldName: "social_platform",
dataType: "VARCHAR(50)",
nullValue: true
},
{
fieldName: "social_id",
dataType: "VARCHAR(250)",
nullValue: true
},
{
fieldName: "more_user_data",
dataType: "BIGINT",
defaultValue: "0"
},
{
fieldName: "verification_status",
dataType: "TINYINT",
defaultValue: "0"
},
{
fieldName: "temp_login_code",
dataType: "VARCHAR(50)",
nullValue: true
}
]
};
});
// package-shared/functions/backend/varDatabaseDbHandler.ts
async function varDatabaseDbHandler2({
queryString,
queryValuesArray,
database,
tableSchema,
useLocal
}) {
const isMaster = useLocal ? true : database?.match(/^datasquirel$/) ? true : false;
const FINAL_DB_HANDLER = useLocal ? LOCAL_DB_HANDLER : isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
let results;
try {
if (queryString && queryValuesArray && Array.isArray(queryValuesArray) && queryValuesArray[0]) {
results = isMaster ? await FINAL_DB_HANDLER(queryString, queryValuesArray) : await FINAL_DB_HANDLER({
paradigm: "Full Access",
database,
queryString,
queryValues: queryValuesArray
});
} else {
results = isMaster ? await FINAL_DB_HANDLER(queryString) : await FINAL_DB_HANDLER({
paradigm: "Full Access",
database,
queryString
});
}
} catch (error) {
serverError({
component: "varDatabaseDbHandler/lines-29-32",
message: error.message
});
}
if (results && tableSchema) {
try {
const unparsedResults = results;
const parsedResults = await parseDbResults({
unparsedResults,
tableSchema
});
return parsedResults;
} catch (error) {
console.log("\x1B[31mvarDatabaseDbHandler ERROR\x1B[0m =>", database, error);
serverError({
component: "varDatabaseDbHandler/lines-52-53",
message: error.message
});
return null;
}
} else if (results) {
return results;
} else {
return null;
}
}
var init_varDatabaseDbHandler = __esm(() => {
init_parseDbResults();
init_serverError();
init_DB_HANDLER();
init_DSQL_USER_DB_HANDLER();
init_LOCAL_DB_HANDLER();
});
// package-shared/functions/dsql/hashPassword.ts
var exports_hashPassword = {};
__export(exports_hashPassword, {
default: () => hashPassword
});
import { createHmac } from "crypto";
function hashPassword({
password,
encryptionKey
}) {
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
if (!finalEncryptionKey?.match(/.{8,}/)) {
throw new Error("Encryption key is invalid");
}
const hmac = createHmac("sha512", finalEncryptionKey);
hmac.update(password);
let hashed = hmac.digest("base64");
return hashed;
}
var init_hashPassword = () => {
};
// package-shared/functions/backend/cookies/get-auth-cookie-names.ts
function getAuthCookieNames(params) {
const cookiesPrefix = process.env.DSQL_COOKIES_PREFIX || "dsql_";
const cookiesKeyName = process.env.DSQL_COOKIES_KEY_NAME || "key";
const cookiesCSRFName = process.env.DSQL_COOKIES_CSRF_NAME || "csrf";
const cookieOneTimeCodeName = process.env.DSQL_COOKIES_ONE_TIME_CODE_NAME || "one-time-code";
const targetDatabase = params?.database?.replace(/^datasquirel_user_\d+_/, "") || process.env.DSQL_DB_NAME?.replace(/^datasquirel_user_\d+_/, "");
let keyCookieName = cookiesPrefix;
if (params?.userId)
keyCookieName += `user_${params.userId}_`;
if (targetDatabase)
keyCookieName += `${targetDatabase}_`;
keyCookieName += cookiesKeyName;
let csrfCookieName = cookiesPrefix;
if (params?.userId)
csrfCookieName += `user_${params.userId}_`;
if (targetDatabase)
csrfCookieName += `${targetDatabase}_`;
csrfCookieName += cookiesCSRFName;
let oneTimeCodeName = cookiesPrefix;
if (params?.userId)
oneTimeCodeName += `user_${params.userId}_`;
if (targetDatabase)
oneTimeCodeName += `${targetDatabase}_`;
oneTimeCodeName += cookieOneTimeCodeName;
return {
keyCookieName,
csrfCookieName,
oneTimeCodeName
};
}
// node_modules/nodemailer/lib/fetch/cookies.js
var require_cookies = __commonJS((exports, module) => {
var urllib = __require("url");
var SESSION_TIMEOUT = 1800;
class Cookies {
constructor(options) {
this.options = options || {};
this.cookies = [];
}
set(cookieStr, url) {
let urlparts = urllib.parse(url || "");
let cookie = this.parse(cookieStr);
let domain;
if (cookie.domain) {
domain = cookie.domain.replace(/^\./, "");
if (urlparts.hostname.length < domain.length || ("." + urlparts.hostname).substr(-domain.length + 1) !== "." + domain) {
cookie.domain = urlparts.hostname;
}
} else {
cookie.domain = urlparts.hostname;
}
if (!cookie.path) {
cookie.path = this.getPath(urlparts.pathname);
}
if (!cookie.expires) {
cookie.expires = new Date(Date.now() + (Number(this.options.sessionTimeout || SESSION_TIMEOUT) || SESSION_TIMEOUT) * 1000);
}
return this.add(cookie);
}
get(url) {
return this.list(url).map((cookie) => cookie.name + "=" + cookie.value).join("; ");
}
list(url) {
let result = [];
let i;
let cookie;
for (i = this.cookies.length - 1;i >= 0; i--) {
cookie = this.cookies[i];
if (this.isExpired(cookie)) {
this.cookies.splice(i, i);
continue;
}
if (this.match(cookie, url)) {
result.unshift(cookie);
}
}
return result;
}
parse(cookieStr) {
let cookie = {};
(cookieStr || "").toString().split(";").forEach((cookiePart) => {
let valueParts = cookiePart.split("=");
let key = valueParts.shift().trim().toLowerCase();
let value = valueParts.join("=").trim();
let domain;
if (!key) {
return;
}
switch (key) {
case "expires":
value = new Date(value);
if (value.toString() !== "Invalid Date") {
cookie.expires = value;
}
break;
case "path":
cookie.path = value;
break;
case "domain":
domain = value.toLowerCase();
if (domain.length && domain.charAt(0) !== ".") {
domain = "." + domain;
}
cookie.domain = domain;
break;
case "max-age":
cookie.expires = new Date(Date.now() + (Number(value) || 0) * 1000);
break;
case "secure":
cookie.secure = true;
break;
case "httponly":
cookie.httponly = true;
break;
default:
if (!cookie.name) {
cookie.name = key;
cookie.value = value;
}
}
});
return cookie;
}
match(cookie, url) {
let urlparts = urllib.parse(url || "");
if (urlparts.hostname !== cookie.domain && (cookie.domain.charAt(0) !== "." || ("." + urlparts.hostname).substr(-cookie.domain.length) !== cookie.domain)) {
return false;
}
let path11 = this.getPath(urlparts.pathname);
if (path11.substr(0, cookie.path.length) !== cookie.path) {
return false;
}
if (cookie.secure && urlparts.protocol !== "https:") {
return false;
}
return true;
}
add(cookie) {
let i;
let len;
if (!cookie || !cookie.name) {
return false;
}
for (i = 0, len = this.cookies.length;i < len; i++) {
if (this.compare(this.cookies[i], cookie)) {
if (this.isExpired(cookie)) {
this.cookies.splice(i, 1);
return false;
}
this.cookies[i] = cookie;
return true;
}
}
if (!this.isExpired(cookie)) {
this.cookies.push(cookie);
}
return true;
}
compare(a, b) {
return a.name === b.name && a.path === b.path && a.domain === b.domain && a.secure === b.secure && a.httponly === a.httponly;
}
isExpired(cookie) {
return cookie.expires && cookie.expires < new Date || !cookie.value;
}
getPath(pathname) {
let path11 = (pathname || "/").split("/");
path11.pop();
path11 = path11.join("/").trim();
if (path11.charAt(0) !== "/") {
path11 = "/" + path11;
}
if (path11.substr(-1) !== "/") {
path11 += "/";
}
return path11;
}
}
module.exports = Cookies;
});
// node_modules/nodemailer/package.json
var require_package2 = __commonJS((exports, module) => {
module.exports = {
name: "nodemailer",
version: "6.9.14",
description: "Easy as cake e-mail sending from your Node.js applications",
main: "lib/nodemailer.js",
scripts: {
test: "node --test --test-concurrency=1 test/**/*.test.js test/**/*-test.js",
"test:coverage": "c8 node --test --test-concurrency=1 test/**/*.test.js test/**/*-test.js",
lint: "eslint .",
update: "rm -rf node_modules/ package-lock.json && ncu -u && npm install"
},
repository: {
type: "git",
url: "https://github.com/nodemailer/nodemailer.git"
},
keywords: [
"Nodemailer"
],
author: "Andris Reinman",
license: "MIT-0",
bugs: {
url: "https://github.com/nodemailer/nodemailer/issues"
},
homepage: "https://nodemailer.com/",
devDependencies: {
"@aws-sdk/client-ses": "3.600.0",
bunyan: "1.8.15",
c8: "10.1.2",
eslint: "8.57.0",
"eslint-config-nodemailer": "1.2.0",
"eslint-config-prettier": "9.1.0",
libbase64: "1.3.0",
libmime: "5.3.5",
libqp: "2.1.0",
"nodemailer-ntlm-auth": "1.0.4",
proxy: "1.0.2",
"proxy-test-server": "1.0.0",
"smtp-server": "3.13.4"
},
engines: {
node: ">=6.0.0"
}
};
});
// node_modules/nodemailer/lib/fetch/index.js
var require_fetch = __commonJS((exports, module) => {
var http2 = __require("http");
var https2 = __require("https");
var urllib = __require("url");
var zlib = __require("zlib");
var PassThrough = __require("stream").PassThrough;
var Cookies = require_cookies();
var packageData = require_package2();
var net = __require("net");
var MAX_REDIRECTS = 5;
module.exports = function(url, options) {
return nmfetch(url, options);
};
module.exports.Cookies = Cookies;
function nmfetch(url, options) {
options = options || {};
options.fetchRes = options.fetchRes || new PassThrough;
options.cookies = options.cookies || new Cookies;
options.redirects = options.redirects || 0;
options.maxRedirects = isNaN(options.maxRedirects) ? MAX_REDIRECTS : options.maxRedirects;
if (options.cookie) {
[].concat(options.cookie || []).forEach((cookie) => {
options.cookies.set(cookie, url);
});
options.cookie = false;
}
let fetchRes = options.fetchRes;
let parsed = urllib.parse(url);
let method = (options.method || "").toString().trim().toUpperCase() || "GET";
let finished = false;
let cookies;
let body;
let handler = parsed.protocol === "https:" ? https2 : http2;
let headers = {
"accept-encoding": "gzip,deflate",
"user-agent": "nodemailer/" + packageData.version
};
Object.keys(options.headers || {}).forEach((key) => {
headers[key.toLowerCase().trim()] = options.headers[key];
});
if (options.userAgent) {
headers["user-agent"] = options.userAgent;
}
if (parsed.auth) {
headers.Authorization = "Basic " + Buffer.from(parsed.auth).toString("base64");
}
if (cookies = options.cookies.get(url)) {
headers.cookie = cookies;
}
if (options.body) {
if (options.contentType !== false) {
headers["Content-Type"] = options.contentType || "application/x-www-form-urlencoded";
}
if (typeof options.body.pipe === "function") {
headers["Transfer-Encoding"] = "chunked";
body = options.body;
body.on("error", (err) => {
if (finished) {
return;
}
finished = true;
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
});
} else {
if (options.body instanceof Buffer) {
body = options.body;
} else if (typeof options.body === "object") {
try {
body = Buffer.from(Object.keys(options.body).map((key) => {
let value = options.body[key].toString().trim();
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
}).join("&"));
} catch (E) {
if (finished) {
return;
}
finished = true;
E.type = "FETCH";
E.sourceUrl = url;
fetchRes.emit("error", E);
return;
}
} else {
body = Buffer.from(options.body.toString().trim());
}
headers["Content-Type"] = options.contentType || "application/x-www-form-urlencoded";
headers["Content-Length"] = body.length;
}
method = (options.method || "").toString().trim().toUpperCase() || "POST";
}
let req;
let reqOptions = {
method,
host: parsed.hostname,
path: parsed.path,
port: parsed.port ? parsed.port : parsed.protocol === "https:" ? 443 : 80,
headers,
rejectUnauthorized: false,
agent: false
};
if (options.tls) {
Object.keys(options.tls).forEach((key) => {
reqOptions[key] = options.tls[key];
});
}
if (parsed.protocol === "https:" && parsed.hostname && parsed.hostname !== reqOptions.host && !net.isIP(parsed.hostname) && !reqOptions.servername) {
reqOptions.servername = parsed.hostname;
}
try {
req = handler.request(reqOptions);
} catch (E) {
finished = true;
setImmediate(() => {
E.type = "FETCH";
E.sourceUrl = url;
fetchRes.emit("error", E);
});
return fetchRes;
}
if (options.timeout) {
req.setTimeout(options.timeout, () => {
if (finished) {
return;
}
finished = true;
req.abort();
let err = new Error("Request Timeout");
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
});
}
req.on("error", (err) => {
if (finished) {
return;
}
finished = true;
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
});
req.on("response", (res) => {
let inflate;
if (finished) {
return;
}
switch (res.headers["content-encoding"]) {
case "gzip":
case "deflate":
inflate = zlib.createUnzip();
break;
}
if (res.headers["set-cookie"]) {
[].concat(res.headers["set-cookie"] || []).forEach((cookie) => {
options.cookies.set(cookie, url);
});
}
if ([301, 302, 303, 307, 308].includes(res.statusCode) && res.headers.location) {
options.redirects++;
if (options.redirects > options.maxRedirects) {
finished = true;
let err = new Error("Maximum redirect count exceeded");
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
req.abort();
return;
}
options.method = "GET";
options.body = false;
return nmfetch(urllib.resolve(url, res.headers.location), options);
}
fetchRes.statusCode = res.statusCode;
fetchRes.headers = res.headers;
if (res.statusCode >= 300 && !options.allowErrorResponse) {
finished = true;
let err = new Error("Invalid status code " + res.statusCode);
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
req.abort();
return;
}
res.on("error", (err) => {
if (finished) {
return;
}
finished = true;
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
req.abort();
});
if (inflate) {
res.pipe(inflate).pipe(fetchRes);
inflate.on("error", (err) => {
if (finished) {
return;
}
finished = true;
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
req.abort();
});
} else {
res.pipe(fetchRes);
}
});
setImmediate(() => {
if (body) {
try {
if (typeof body.pipe === "function") {
return body.pipe(req);
} else {
req.write(body);
}
} catch (err) {
finished = true;
err.type = "FETCH";
err.sourceUrl = url;
fetchRes.emit("error", err);
return;
}
}
req.end();
});
return fetchRes;
}
});
// node_modules/nodemailer/lib/shared/index.js
var require_shared = __commonJS((exports, module) => {
var urllib = __require("url");
var util = __require("util");
var fs15 = __require("fs");
var nmfetch = require_fetch();
var dns = __require("dns");
var net = __require("net");
var os = __require("os");
var DNS_TTL = 5 * 60 * 1000;
var networkInterfaces;
try {
networkInterfaces = os.networkInterfaces();
} catch (err) {
}
exports.networkInterfaces = networkInterfaces;
var isFamilySupported = (family, allowInternal) => {
let networkInterfaces2 = exports.networkInterfaces;
if (!networkInterfaces2) {
return true;
}
const familySupported = Object.keys(networkInterfaces2).map((key) => networkInterfaces2[key]).reduce((acc, val) => acc.concat(val), []).filter((i) => !i.internal || allowInternal).filter((i) => i.family === "IPv" + family || i.family === family).length > 0;
return familySupported;
};
var resolver = (family, hostname, options, callback) => {
options = options || {};
const familySupported = isFamilySupported(family, options.allowInternalNetworkInterfaces);
if (!familySupported) {
return callback(null, []);
}
const resolver2 = dns.Resolver ? new dns.Resolver(options) : dns;
resolver2["resolve" + family](hostname, (err, addresses) => {
if (err) {
switch (err.code) {
case dns.NODATA:
case dns.NOTFOUND:
case dns.NOTIMP:
case dns.SERVFAIL:
case dns.CONNREFUSED:
case dns.REFUSED:
case "EAI_AGAIN":
return callback(null, []);
}
return callback(err);
}
return callback(null, Array.isArray(addresses) ? addresses : [].concat(addresses || []));
});
};
var dnsCache = exports.dnsCache = new Map;
var formatDNSValue = (value, extra) => {
if (!value) {
return Object.assign({}, extra || {});
}
return Object.assign({
servername: value.servername,
host: !value.addresses || !value.addresses.length ? null : value.addresses.length === 1 ? value.addresses[0] : value.addresses[Math.floor(Math.random() * value.addresses.length)]
}, extra || {});
};
exports.resolveHostname = (options, callback) => {
options = options || {};
if (!options.host && options.servername) {
options.host = options.servername;
}
if (!options.host || net.isIP(options.host)) {
let value = {
addresses: [options.host],
servername: options.servername || false
};
return callback(null, formatDNSValue(value, {
cached: false
}));
}
let cached;
if (dnsCache.has(options.host)) {
cached = dnsCache.get(options.host);
if (!cached.expires || cached.expires >= Date.now()) {
return callback(null, formatDNSValue(cached.value, {
cached: true
}));
}
}
resolver(4, options.host, options, (err, addresses) => {
if (err) {
if (cached) {
return callback(null, formatDNSValue(cached.value, {
cached: true,
error: err
}));
}
return callback(err);
}
if (addresses && addresses.length) {
let value = {
addresses,
servername: options.servername || options.host
};
dnsCache.set(options.host, {
value,
expires: Date.now() + (options.dnsTtl || DNS_TTL)
});
return callback(null, formatDNSValue(value, {
cached: false
}));
}
resolver(6, options.host, options, (err2, addresses2) => {
if (err2) {
if (cached) {
return callback(null, formatDNSValue(cached.value, {
cached: true,
error: err2
}));
}
return callback(err2);
}
if (addresses2 && addresses2.length) {
let value = {
addresses: addresses2,
servername: options.servername || options.host
};
dnsCache.set(options.host, {
value,
expires: Date.now() + (options.dnsTtl || DNS_TTL)
});
return callback(null, formatDNSValue(value, {
cached: false
}));
}
try {
dns.lookup(options.host, { all: true }, (err3, addresses3) => {
if (err3) {
if (cached) {
return callback(null, formatDNSValue(cached.value, {
cached: true,
error: err3
}));
}
return callback(err3);
}
let address = addresses3 ? addresses3.filter((addr) => isFamilySupported(addr.family)).map((addr) => addr.address).shift() : false;
if (addresses3 && addresses3.length && !address) {
console.warn(`Failed to resolve IPv${addresses3[0].family} addresses with current network`);
}
if (!address && cached) {
return callback(null, formatDNSValue(cached.value, {
cached: true
}));
}
let value = {
addresses: address ? [address] : [options.host],
servername: options.servername || options.host
};
dnsCache.set(options.host, {
value,
expires: Date.now() + (options.dnsTtl || DNS_TTL)
});
return callback(null, formatDNSValue(value, {
cached: false
}));
});
} catch (err3) {
if (cached) {
return callback(null, formatDNSValue(cached.value, {
cached: true,
error: err3
}));
}
return callback(err3);
}
});
});
};
exports.parseConnectionUrl = (str) => {
str = str || "";
let options = {};
[urllib.parse(str, true)].forEach((url) => {
let auth;
switch (url.protocol) {
case "smtp:":
options.secure = false;
break;
case "smtps:":
options.secure = true;
break;
case "direct:":
options.direct = true;
break;
}
if (!isNaN(url.port) && Number(url.port)) {
options.port = Number(url.port);
}
if (url.hostname) {
options.host = url.hostname;
}
if (url.auth) {
auth = url.auth.split(":");
if (!options.auth) {
options.auth = {};
}
options.auth.user = auth.shift();
options.auth.pass = auth.join(":");
}
Object.keys(url.query || {}).forEach((key) => {
let obj = options;
let lKey = key;
let value = url.query[key];
if (!isNaN(value)) {
value = Number(value);
}
switch (value) {
case "true":
value = true;
break;
case "false":
value = false;
break;
}
if (key.indexOf("tls.") === 0) {
lKey = key.substr(4);
if (!options.tls) {
options.tls = {};
}
obj = options.tls;
} else if (key.indexOf(".") >= 0) {
return;
}
if (!(lKey in obj)) {
obj[lKey] = value;
}
});
});
return options;
};
exports._logFunc = (logger, level, defaults, data, message, ...args) => {
let entry = {};
Object.keys(defaults || {}).forEach((key) => {
if (key !== "level") {
entry[key] = defaults[key];
}
});
Object.keys(data || {}).forEach((key) => {
if (key !== "level") {
entry[key] = data[key];
}
});
logger[level](entry, message, ...args);
};
exports.getLogger = (options, defaults) => {
options = options || {};
let response = {};
let levels = ["trace", "debug", "info", "warn", "error", "fatal"];
if (!options.logger) {
levels.forEach((level) => {
response[level] = () => false;
});
return response;
}
let logger = options.logger;
if (options.logger === true) {
logger = createDefaultLogger(levels);
}
levels.forEach((level) => {
response[level] = (data, message, ...args) => {
exports._logFunc(logger, level, defaults, data, message, ...args);
};
});
return response;
};
exports.callbackPromise = (resolve, reject) => function() {
let args = Array.from(arguments);
let err = args.shift();
if (err) {
reject(err);
} else {
resolve(...args);
}
};
exports.parseDataURI = (uri) => {
let input = uri;
let commaPos = input.indexOf(",");
if (!commaPos) {
return uri;
}
let data = input.substring(commaPos + 1);
let metaStr = input.substring("data:".length, commaPos);
let encoding;
let metaEntries = metaStr.split(";");
let lastMetaEntry = metaEntries.length > 1 ? metaEntries[metaEntries.length - 1] : false;
if (lastMetaEntry && lastMetaEntry.indexOf("=") < 0) {
encoding = lastMetaEntry.toLowerCase();
metaEntries.pop();
}
let contentType = metaEntries.shift() || "application/octet-stream";
let params = {};
for (let entry of metaEntries) {
let sep = entry.indexOf("=");
if (sep >= 0) {
let key = entry.substring(0, sep);
let value = entry.substring(sep + 1);
params[key] = value;
}
}
switch (encoding) {
case "base64":
data = Buffer.from(data, "base64");
break;
case "utf8":
data = Buffer.from(data);
break;
default:
try {
data = Buffer.from(decodeURIComponent(data));
} catch (err) {
data = Buffer.from(data);
}
data = Buffer.from(data);
}
return { data, encoding, contentType, params };
};
exports.resolveContent = (data, key, callback) => {
let promise;
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = exports.callbackPromise(resolve, reject);
});
}
let content = data && data[key] && data[key].content || data[key];
let contentStream;
let encoding = (typeof data[key] === "object" && data[key].encoding || "utf8").toString().toLowerCase().replace(/[-_\s]/g, "");
if (!content) {
return callback(null, content);
}
if (typeof content === "object") {
if (typeof content.pipe === "function") {
return resolveStream(content, (err, value) => {
if (err) {
return callback(err);
}
if (data[key].content) {
data[key].content = value;
} else {
data[key] = value;
}
callback(null, value);
});
} else if (/^https?:\/\//i.test(content.path || content.href)) {
contentStream = nmfetch(content.path || content.href);
return resolveStream(contentStream, callback);
} else if (/^data:/i.test(content.path || content.href)) {
let parsedDataUri = exports.parseDataURI(content.path || content.href);
if (!parsedDataUri || !parsedDataUri.data) {
return callback(null, Buffer.from(0));
}
return callback(null, parsedDataUri.data);
} else if (content.path) {
return resolveStream(fs15.createReadStream(content.path), callback);
}
}
if (typeof data[key].content === "string" && !["utf8", "usascii", "ascii"].includes(encoding)) {
content = Buffer.from(data[key].content, encoding);
}
setImmediate(() => callback(null, content));
return promise;
};
exports.assign = function() {
let args = Array.from(arguments);
let target = args.shift() || {};
args.forEach((source) => {
Object.keys(source || {}).forEach((key) => {
if (["tls", "auth"].includes(key) && source[key] && typeof source[key] === "object") {
if (!target[key]) {
target[key] = {};
}
Object.keys(source[key]).forEach((subKey) => {
target[key][subKey] = source[key][subKey];
});
} else {
target[key] = source[key];
}
});
});
return target;
};
exports.encodeXText = (str) => {
if (!/[^\x21-\x2A\x2C-\x3C\x3E-\x7E]/.test(str)) {
return str;
}
let buf = Buffer.from(str);
let result = "";
for (let i = 0, len = buf.length;i < len; i++) {
let c = buf[i];
if (c < 33 || c > 126 || c === 43 || c === 61) {
result += "+" + (c < 16 ? "0" : "") + c.toString(16).toUpperCase();
} else {
result += String.fromCharCode(c);
}
}
return result;
};
function resolveStream(stream, callback) {
let responded = false;
let chunks = [];
let chunklen = 0;
stream.on("error", (err) => {
if (responded) {
return;
}
responded = true;
callback(err);
});
stream.on("readable", () => {
let chunk;
while ((chunk = stream.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
stream.on("end", () => {
if (responded) {
return;
}
responded = true;
let value;
try {
value = Buffer.concat(chunks, chunklen);
} catch (E) {
return callback(E);
}
callback(null, value);
});
}
function createDefaultLogger(levels) {
let levelMaxLen = 0;
let levelNames = new Map;
levels.forEach((level) => {
if (level.length > levelMaxLen) {
levelMaxLen = level.length;
}
});
levels.forEach((level) => {
let levelName = level.toUpperCase();
if (levelName.length < levelMaxLen) {
levelName += " ".repeat(levelMaxLen - levelName.length);
}
levelNames.set(level, levelName);
});
let print = (level, entry, message, ...args) => {
let prefix = "";
if (entry) {
if (entry.tnx === "server") {
prefix = "S: ";
} else if (entry.tnx === "client") {
prefix = "C: ";
}
if (entry.sid) {
prefix = "[" + entry.sid + "] " + prefix;
}
if (entry.cid) {
prefix = "[#" + entry.cid + "] " + prefix;
}
}
message = util.format(message, ...args);
message.split(/\r?\n/).forEach((line) => {
console.log("[%s] %s %s", new Date().toISOString().substr(0, 19).replace(/T/, " "), levelNames.get(level), prefix + line);
});
};
let logger = {};
levels.forEach((level) => {
logger[level] = print.bind(null, level);
});
return logger;
}
});
// node_modules/nodemailer/lib/mime-funcs/mime-types.js
var require_mime_types = __commonJS((exports, module) => {
var path11 = __require("path");
var defaultMimeType = "application/octet-stream";
var defaultExtension = "bin";
var mimeTypes = new Map([
["application/acad", "dwg"],
["application/applixware", "aw"],
["application/arj", "arj"],
["application/atom+xml", "xml"],
["application/atomcat+xml", "atomcat"],
["application/atomsvc+xml", "atomsvc"],
["application/base64", ["mm", "mme"]],
["application/binhex", "hqx"],
["application/binhex4", "hqx"],
["application/book", ["book", "boo"]],
["application/ccxml+xml,", "ccxml"],
["application/cdf", "cdf"],
["application/cdmi-capability", "cdmia"],
["application/cdmi-container", "cdmic"],
["application/cdmi-domain", "cdmid"],
["application/cdmi-object", "cdmio"],
["application/cdmi-queue", "cdmiq"],
["application/clariscad", "ccad"],
["application/commonground", "dp"],
["application/cu-seeme", "cu"],
["application/davmount+xml", "davmount"],
["application/drafting", "drw"],
["application/dsptype", "tsp"],
["application/dssc+der", "dssc"],
["application/dssc+xml", "xdssc"],
["application/dxf", "dxf"],
["application/ecmascript", ["js", "es"]],
["application/emma+xml", "emma"],
["application/envoy", "evy"],
["application/epub+zip", "epub"],
["application/excel", ["xls", "xl", "xla", "xlb", "xlc", "xld", "xlk", "xll", "xlm", "xlt", "xlv", "xlw"]],
["application/exi", "exi"],
["application/font-tdpfr", "pfr"],
["application/fractals", "fif"],
["application/freeloader", "frl"],
["application/futuresplash", "spl"],
["application/gnutar", "tgz"],
["application/groupwise", "vew"],
["application/hlp", "hlp"],
["application/hta", "hta"],
["application/hyperstudio", "stk"],
["application/i-deas", "unv"],
["application/iges", ["iges", "igs"]],
["application/inf", "inf"],
["application/internet-property-stream", "acx"],
["application/ipfix", "ipfix"],
["application/java", "class"],
["application/java-archive", "jar"],
["application/java-byte-code", "class"],
["application/java-serialized-object", "ser"],
["application/java-vm", "class"],
["application/javascript", "js"],
["application/json", "json"],
["application/lha", "lha"],
["application/lzx", "lzx"],
["application/mac-binary", "bin"],
["application/mac-binhex", "hqx"],
["application/mac-binhex40", "hqx"],
["application/mac-compactpro", "cpt"],
["application/macbinary", "bin"],
["application/mads+xml", "mads"],
["application/marc", "mrc"],
["application/marcxml+xml", "mrcx"],
["application/mathematica", "ma"],
["application/mathml+xml", "mathml"],
["application/mbedlet", "mbd"],
["application/mbox", "mbox"],
["application/mcad", "mcd"],
["application/mediaservercontrol+xml", "mscml"],
["application/metalink4+xml", "meta4"],
["application/mets+xml", "mets"],
["application/mime", "aps"],
["application/mods+xml", "mods"],
["application/mp21", "m21"],
["application/mp4", "mp4"],
["application/mspowerpoint", ["ppt", "pot", "pps", "ppz"]],
["application/msword", ["doc", "dot", "w6w", "wiz", "word"]],
["application/mswrite", "wri"],
["application/mxf", "mxf"],
["application/netmc", "mcp"],
["application/octet-stream", ["*"]],
["application/oda", "oda"],
["application/oebps-package+xml", "opf"],
["application/ogg", "ogx"],
["application/olescript", "axs"],
["application/onenote", "onetoc"],
["application/patch-ops-error+xml", "xer"],
["application/pdf", "pdf"],
["application/pgp-encrypted", "asc"],
["application/pgp-signature", "pgp"],
["application/pics-rules", "prf"],
["application/pkcs-12", "p12"],
["application/pkcs-crl", "crl"],
["application/pkcs10", "p10"],
["application/pkcs7-mime", ["p7c", "p7m"]],
["application/pkcs7-signature", "p7s"],
["application/pkcs8", "p8"],
["application/pkix-attr-cert", "ac"],
["application/pkix-cert", ["cer", "crt"]],
["application/pkix-crl", "crl"],
["application/pkix-pkipath", "pkipath"],
["application/pkixcmp", "pki"],
["application/plain", "text"],
["application/pls+xml", "pls"],
["application/postscript", ["ps", "ai", "eps"]],
["application/powerpoint", "ppt"],
["application/pro_eng", ["part", "prt"]],
["application/prs.cww", "cww"],
["application/pskc+xml", "pskcxml"],
["application/rdf+xml", "rdf"],
["application/reginfo+xml", "rif"],
["application/relax-ng-compact-syntax", "rnc"],
["application/resource-lists+xml", "rl"],
["application/resource-lists-diff+xml", "rld"],
["application/ringing-tones", "rng"],
["application/rls-services+xml", "rs"],
["application/rsd+xml", "rsd"],
["application/rss+xml", "xml"],
["application/rtf", ["rtf", "rtx"]],
["application/sbml+xml", "sbml"],
["application/scvp-cv-request", "scq"],
["application/scvp-cv-response", "scs"],
["application/scvp-vp-request", "spq"],
["application/scvp-vp-response", "spp"],
["application/sdp", "sdp"],
["application/sea", "sea"],
["application/set", "set"],
["application/set-payment-initiation", "setpay"],
["application/set-registration-initiation", "setreg"],
["application/shf+xml", "shf"],
["application/sla", "stl"],
["application/smil", ["smi", "smil"]],
["application/smil+xml", "smi"],
["application/solids", "sol"],
["application/sounder", "sdr"],
["application/sparql-query", "rq"],
["application/sparql-results+xml", "srx"],
["application/srgs", "gram"],
["application/srgs+xml", "grxml"],
["application/sru+xml", "sru"],
["application/ssml+xml", "ssml"],
["application/step", ["step", "stp"]],
["application/streamingmedia", "ssm"],
["application/tei+xml", "tei"],
["application/thraud+xml", "tfi"],
["application/timestamped-data", "tsd"],
["application/toolbook", "tbk"],
["application/vda", "vda"],
["application/vnd.3gpp.pic-bw-large", "plb"],
["application/vnd.3gpp.pic-bw-small", "psb"],
["application/vnd.3gpp.pic-bw-var", "pvb"],
["application/vnd.3gpp2.tcap", "tcap"],
["application/vnd.3m.post-it-notes", "pwn"],
["application/vnd.accpac.simply.aso", "aso"],
["application/vnd.accpac.simply.imp", "imp"],
["application/vnd.acucobol", "acu"],
["application/vnd.acucorp", "atc"],
["application/vnd.adobe.air-application-installer-package+zip", "air"],
["application/vnd.adobe.fxp", "fxp"],
["application/vnd.adobe.xdp+xml", "xdp"],
["application/vnd.adobe.xfdf", "xfdf"],
["application/vnd.ahead.space", "ahead"],
["application/vnd.airzip.filesecure.azf", "azf"],
["application/vnd.airzip.filesecure.azs", "azs"],
["application/vnd.amazon.ebook", "azw"],
["application/vnd.americandynamics.acc", "acc"],
["application/vnd.amiga.ami", "ami"],
["application/vnd.android.package-archive", "apk"],
["application/vnd.anser-web-certificate-issue-initiation", "cii"],
["application/vnd.anser-web-funds-transfer-initiation", "fti"],
["application/vnd.antix.game-component", "atx"],
["application/vnd.apple.installer+xml", "mpkg"],
["application/vnd.apple.mpegurl", "m3u8"],
["application/vnd.aristanetworks.swi", "swi"],
["application/vnd.audiograph", "aep"],
["application/vnd.blueice.multipass", "mpm"],
["application/vnd.bmi", "bmi"],
["application/vnd.businessobjects", "rep"],
["application/vnd.chemdraw+xml", "cdxml"],
["application/vnd.chipnuts.karaoke-mmd", "mmd"],
["application/vnd.cinderella", "cdy"],
["application/vnd.claymore", "cla"],
["application/vnd.cloanto.rp9", "rp9"],
["application/vnd.clonk.c4group", "c4g"],
["application/vnd.cluetrust.cartomobile-config", "c11amc"],
["application/vnd.cluetrust.cartomobile-config-pkg", "c11amz"],
["application/vnd.commonspace", "csp"],
["application/vnd.contact.cmsg", "cdbcmsg"],
["application/vnd.cosmocaller", "cmc"],
["application/vnd.crick.clicker", "clkx"],
["application/vnd.crick.clicker.keyboard", "clkk"],
["application/vnd.crick.clicker.palette", "clkp"],
["application/vnd.crick.clicker.template", "clkt"],
["application/vnd.crick.clicker.wordbank", "clkw"],
["application/vnd.criticaltools.wbs+xml", "wbs"],
["application/vnd.ctc-posml", "pml"],
["application/vnd.cups-ppd", "ppd"],
["application/vnd.curl.car", "car"],
["application/vnd.curl.pcurl", "pcurl"],
["application/vnd.data-vision.rdz", "rdz"],
["application/vnd.denovo.fcselayout-link", "fe_launch"],
["application/vnd.dna", "dna"],
["application/vnd.dolby.mlp", "mlp"],
["application/vnd.dpgraph", "dpg"],
["application/vnd.dreamfactory", "dfac"],
["application/vnd.dvb.ait", "ait"],
["application/vnd.dvb.service", "svc"],
["application/vnd.dynageo", "geo"],
["application/vnd.ecowin.chart", "mag"],
["application/vnd.enliven", "nml"],
["application/vnd.epson.esf", "esf"],
["application/vnd.epson.msf", "msf"],
["application/vnd.epson.quickanime", "qam"],
["application/vnd.epson.salt", "slt"],
["application/vnd.epson.ssf", "ssf"],
["application/vnd.eszigno3+xml", "es3"],
["application/vnd.ezpix-album", "ez2"],
["application/vnd.ezpix-package", "ez3"],
["application/vnd.fdf", "fdf"],
["application/vnd.fdsn.seed", "seed"],
["application/vnd.flographit", "gph"],
["application/vnd.fluxtime.clip", "ftc"],
["application/vnd.framemaker", "fm"],
["application/vnd.frogans.fnc", "fnc"],
["application/vnd.frogans.ltf", "ltf"],
["application/vnd.fsc.weblaunch", "fsc"],
["application/vnd.fujitsu.oasys", "oas"],
["application/vnd.fujitsu.oasys2", "oa2"],
["application/vnd.fujitsu.oasys3", "oa3"],
["application/vnd.fujitsu.oasysgp", "fg5"],
["application/vnd.fujitsu.oasysprs", "bh2"],
["application/vnd.fujixerox.ddd", "ddd"],
["application/vnd.fujixerox.docuworks", "xdw"],
["application/vnd.fujixerox.docuworks.binder", "xbd"],
["application/vnd.fuzzysheet", "fzs"],
["application/vnd.genomatix.tuxedo", "txd"],
["application/vnd.geogebra.file", "ggb"],
["application/vnd.geogebra.tool", "ggt"],
["application/vnd.geometry-explorer", "gex"],
["application/vnd.geonext", "gxt"],
["application/vnd.geoplan", "g2w"],
["application/vnd.geospace", "g3w"],
["application/vnd.gmx", "gmx"],
["application/vnd.google-earth.kml+xml", "kml"],
["application/vnd.google-earth.kmz", "kmz"],
["application/vnd.grafeq", "gqf"],
["application/vnd.groove-account", "gac"],
["application/vnd.groove-help", "ghf"],
["application/vnd.groove-identity-message", "gim"],
["application/vnd.groove-injector", "grv"],
["application/vnd.groove-tool-message", "gtm"],
["application/vnd.groove-tool-template", "tpl"],
["application/vnd.groove-vcard", "vcg"],
["application/vnd.hal+xml", "hal"],
["application/vnd.handheld-entertainment+xml", "zmm"],
["application/vnd.hbci", "hbci"],
["application/vnd.hhe.lesson-player", "les"],
["application/vnd.hp-hpgl", ["hgl", "hpg", "hpgl"]],
["application/vnd.hp-hpid", "hpid"],
["application/vnd.hp-hps", "hps"],
["application/vnd.hp-jlyt", "jlt"],
["application/vnd.hp-pcl", "pcl"],
["application/vnd.hp-pclxl", "pclxl"],
["application/vnd.hydrostatix.sof-data", "sfd-hdstx"],
["application/vnd.hzn-3d-crossword", "x3d"],
["application/vnd.ibm.minipay", "mpy"],
["application/vnd.ibm.modcap", "afp"],
["application/vnd.ibm.rights-management", "irm"],
["application/vnd.ibm.secure-container", "sc"],
["application/vnd.iccprofile", "icc"],
["application/vnd.igloader", "igl"],
["application/vnd.immervision-ivp", "ivp"],
["application/vnd.immervision-ivu", "ivu"],
["application/vnd.insors.igm", "igm"],
["application/vnd.intercon.formnet", "xpw"],
["application/vnd.intergeo", "i2g"],
["application/vnd.intu.qbo", "qbo"],
["application/vnd.intu.qfx", "qfx"],
["application/vnd.ipunplugged.rcprofile", "rcprofile"],
["application/vnd.irepository.package+xml", "irp"],
["application/vnd.is-xpr", "xpr"],
["application/vnd.isac.fcs", "fcs"],
["application/vnd.jam", "jam"],
["application/vnd.jcp.javame.midlet-rms", "rms"],
["application/vnd.jisp", "jisp"],
["application/vnd.joost.joda-archive", "joda"],
["application/vnd.kahootz", "ktz"],
["application/vnd.kde.karbon", "karbon"],
["application/vnd.kde.kchart", "chrt"],
["application/vnd.kde.kformula", "kfo"],
["application/vnd.kde.kivio", "flw"],
["application/vnd.kde.kontour", "kon"],
["application/vnd.kde.kpresenter", "kpr"],
["application/vnd.kde.kspread", "ksp"],
["application/vnd.kde.kword", "kwd"],
["application/vnd.kenameaapp", "htke"],
["application/vnd.kidspiration", "kia"],
["application/vnd.kinar", "kne"],
["application/vnd.koan", "skp"],
["application/vnd.kodak-descriptor", "sse"],
["application/vnd.las.las+xml", "lasxml"],
["application/vnd.llamagraphics.life-balance.desktop", "lbd"],
["application/vnd.llamagraphics.life-balance.exchange+xml", "lbe"],
["application/vnd.lotus-1-2-3", "123"],
["application/vnd.lotus-approach", "apr"],
["application/vnd.lotus-freelance", "pre"],
["application/vnd.lotus-notes", "nsf"],
["application/vnd.lotus-organizer", "org"],
["application/vnd.lotus-screencam", "scm"],
["application/vnd.lotus-wordpro", "lwp"],
["application/vnd.macports.portpkg", "portpkg"],
["application/vnd.mcd", "mcd"],
["application/vnd.medcalcdata", "mc1"],
["application/vnd.mediastation.cdkey", "cdkey"],
["application/vnd.mfer", "mwf"],
["application/vnd.mfmp", "mfm"],
["application/vnd.micrografx.flo", "flo"],
["application/vnd.micrografx.igx", "igx"],
["application/vnd.mif", "mif"],
["application/vnd.mobius.daf", "daf"],
["application/vnd.mobius.dis", "dis"],
["application/vnd.mobius.mbk", "mbk"],
["application/vnd.mobius.mqy", "mqy"],
["application/vnd.mobius.msl", "msl"],
["application/vnd.mobius.plc", "plc"],
["application/vnd.mobius.txf", "txf"],
["application/vnd.mophun.application", "mpn"],
["application/vnd.mophun.certificate", "mpc"],
["application/vnd.mozilla.xul+xml", "xul"],
["application/vnd.ms-artgalry", "cil"],
["application/vnd.ms-cab-compressed", "cab"],
["application/vnd.ms-excel", ["xls", "xla", "xlc", "xlm", "xlt", "xlw", "xlb", "xll"]],
["application/vnd.ms-excel.addin.macroenabled.12", "xlam"],
["application/vnd.ms-excel.sheet.binary.macroenabled.12", "xlsb"],
["application/vnd.ms-excel.sheet.macroenabled.12", "xlsm"],
["application/vnd.ms-excel.template.macroenabled.12", "xltm"],
["application/vnd.ms-fontobject", "eot"],
["application/vnd.ms-htmlhelp", "chm"],
["application/vnd.ms-ims", "ims"],
["application/vnd.ms-lrm", "lrm"],
["application/vnd.ms-officetheme", "thmx"],
["application/vnd.ms-outlook", "msg"],
["application/vnd.ms-pki.certstore", "sst"],
["application/vnd.ms-pki.pko", "pko"],
["application/vnd.ms-pki.seccat", "cat"],
["application/vnd.ms-pki.stl", "stl"],
["application/vnd.ms-pkicertstore", "sst"],
["application/vnd.ms-pkiseccat", "cat"],
["application/vnd.ms-pkistl", "stl"],
["application/vnd.ms-powerpoint", ["ppt", "pot", "pps", "ppa", "pwz"]],
["application/vnd.ms-powerpoint.addin.macroenabled.12", "ppam"],
["application/vnd.ms-powerpoint.presentation.macroenabled.12", "pptm"],
["application/vnd.ms-powerpoint.slide.macroenabled.12", "sldm"],
["application/vnd.ms-powerpoint.slideshow.macroenabled.12", "ppsm"],
["application/vnd.ms-powerpoint.template.macroenabled.12", "potm"],
["application/vnd.ms-project", "mpp"],
["application/vnd.ms-word.document.macroenabled.12", "docm"],
["application/vnd.ms-word.template.macroenabled.12", "dotm"],
["application/vnd.ms-works", ["wks", "wcm", "wdb", "wps"]],
["application/vnd.ms-wpl", "wpl"],
["application/vnd.ms-xpsdocument", "xps"],
["application/vnd.mseq", "mseq"],
["application/vnd.musician", "mus"],
["application/vnd.muvee.style", "msty"],
["application/vnd.neurolanguage.nlu", "nlu"],
["application/vnd.noblenet-directory", "nnd"],
["application/vnd.noblenet-sealer", "nns"],
["application/vnd.noblenet-web", "nnw"],
["application/vnd.nokia.configuration-message", "ncm"],
["application/vnd.nokia.n-gage.data", "ngdat"],
["application/vnd.nokia.n-gage.symbian.install", "n-gage"],
["application/vnd.nokia.radio-preset", "rpst"],
["application/vnd.nokia.radio-presets", "rpss"],
["application/vnd.nokia.ringing-tone", "rng"],
["application/vnd.novadigm.edm", "edm"],
["application/vnd.novadigm.edx", "edx"],
["application/vnd.novadigm.ext", "ext"],
["application/vnd.oasis.opendocument.chart", "odc"],
["application/vnd.oasis.opendocument.chart-template", "otc"],
["application/vnd.oasis.opendocument.database", "odb"],
["application/vnd.oasis.opendocument.formula", "odf"],
["application/vnd.oasis.opendocument.formula-template", "odft"],
["application/vnd.oasis.opendocument.graphics", "odg"],
["application/vnd.oasis.opendocument.graphics-template", "otg"],
["application/vnd.oasis.opendocument.image", "odi"],
["application/vnd.oasis.opendocument.image-template", "oti"],
["application/vnd.oasis.opendocument.presentation", "odp"],
["application/vnd.oasis.opendocument.presentation-template", "otp"],
["application/vnd.oasis.opendocument.spreadsheet", "ods"],
["application/vnd.oasis.opendocument.spreadsheet-template", "ots"],
["application/vnd.oasis.opendocument.text", "odt"],
["application/vnd.oasis.opendocument.text-master", "odm"],
["application/vnd.oasis.opendocument.text-template", "ott"],
["application/vnd.oasis.opendocument.text-web", "oth"],
["application/vnd.olpc-sugar", "xo"],
["application/vnd.oma.dd2+xml", "dd2"],
["application/vnd.openofficeorg.extension", "oxt"],
["application/vnd.openxmlformats-officedocument.presentationml.presentation", "pptx"],
["application/vnd.openxmlformats-officedocument.presentationml.slide", "sldx"],
["application/vnd.openxmlformats-officedocument.presentationml.slideshow", "ppsx"],
["application/vnd.openxmlformats-officedocument.presentationml.template", "potx"],
["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlsx"],
["application/vnd.openxmlformats-officedocument.spreadsheetml.template", "xltx"],
["application/vnd.openxmlformats-officedocument.wordprocessingml.document", "docx"],
["application/vnd.openxmlformats-officedocument.wordprocessingml.template", "dotx"],
["application/vnd.osgeo.mapguide.package", "mgp"],
["application/vnd.osgi.dp", "dp"],
["application/vnd.palm", "pdb"],
["application/vnd.pawaafile", "paw"],
["application/vnd.pg.format", "str"],
["application/vnd.pg.osasli", "ei6"],
["application/vnd.picsel", "efif"],
["application/vnd.pmi.widget", "wg"],
["application/vnd.pocketlearn", "plf"],
["application/vnd.powerbuilder6", "pbd"],
["application/vnd.previewsystems.box", "box"],
["application/vnd.proteus.magazine", "mgz"],
["application/vnd.publishare-delta-tree", "qps"],
["application/vnd.pvi.ptid1", "ptid"],
["application/vnd.quark.quarkxpress", "qxd"],
["application/vnd.realvnc.bed", "bed"],
["application/vnd.recordare.musicxml", "mxl"],
["application/vnd.recordare.musicxml+xml", "musicxml"],
["application/vnd.rig.cryptonote", "cryptonote"],
["application/vnd.rim.cod", "cod"],
["application/vnd.rn-realmedia", "rm"],
["application/vnd.rn-realplayer", "rnx"],
["application/vnd.route66.link66+xml", "link66"],
["application/vnd.sailingtracker.track", "st"],
["application/vnd.seemail", "see"],
["application/vnd.sema", "sema"],
["application/vnd.semd", "semd"],
["application/vnd.semf", "semf"],
["application/vnd.shana.informed.formdata", "ifm"],
["application/vnd.shana.informed.formtemplate", "itp"],
["application/vnd.shana.informed.interchange", "iif"],
["application/vnd.shana.informed.package", "ipk"],
["application/vnd.simtech-mindmapper", "twd"],
["application/vnd.smaf", "mmf"],
["application/vnd.smart.teacher", "teacher"],
["application/vnd.solent.sdkm+xml", "sdkm"],
["application/vnd.spotfire.dxp", "dxp"],
["application/vnd.spotfire.sfs", "sfs"],
["application/vnd.stardivision.calc", "sdc"],
["application/vnd.stardivision.draw", "sda"],
["application/vnd.stardivision.impress", "sdd"],
["application/vnd.stardivision.math", "smf"],
["application/vnd.stardivision.writer", "sdw"],
["application/vnd.stardivision.writer-global", "sgl"],
["application/vnd.stepmania.stepchart", "sm"],
["application/vnd.sun.xml.calc", "sxc"],
["application/vnd.sun.xml.calc.template", "stc"],
["application/vnd.sun.xml.draw", "sxd"],
["application/vnd.sun.xml.draw.template", "std"],
["application/vnd.sun.xml.impress", "sxi"],
["application/vnd.sun.xml.impress.template", "sti"],
["application/vnd.sun.xml.math", "sxm"],
["application/vnd.sun.xml.writer", "sxw"],
["application/vnd.sun.xml.writer.global", "sxg"],
["application/vnd.sun.xml.writer.template", "stw"],
["application/vnd.sus-calendar", "sus"],
["application/vnd.svd", "svd"],
["application/vnd.symbian.install", "sis"],
["application/vnd.syncml+xml", "xsm"],
["application/vnd.syncml.dm+wbxml", "bdm"],
["application/vnd.syncml.dm+xml", "xdm"],
["application/vnd.tao.intent-module-archive", "tao"],
["application/vnd.tmobile-livetv", "tmo"],
["application/vnd.trid.tpt", "tpt"],
["application/vnd.triscape.mxs", "mxs"],
["application/vnd.trueapp", "tra"],
["application/vnd.ufdl", "ufd"],
["application/vnd.uiq.theme", "utz"],
["application/vnd.umajin", "umj"],
["application/vnd.unity", "unityweb"],
["application/vnd.uoml+xml", "uoml"],
["application/vnd.vcx", "vcx"],
["application/vnd.visio", "vsd"],
["application/vnd.visionary", "vis"],
["application/vnd.vsf", "vsf"],
["application/vnd.wap.wbxml", "wbxml"],
["application/vnd.wap.wmlc", "wmlc"],
["application/vnd.wap.wmlscriptc", "wmlsc"],
["application/vnd.webturbo", "wtb"],
["application/vnd.wolfram.player", "nbp"],
["application/vnd.wordperfect", "wpd"],
["application/vnd.wqd", "wqd"],
["application/vnd.wt.stf", "stf"],
["application/vnd.xara", ["web", "xar"]],
["application/vnd.xfdl", "xfdl"],
["application/vnd.yamaha.hv-dic", "hvd"],
["application/vnd.yamaha.hv-script", "hvs"],
["application/vnd.yamaha.hv-voice", "hvp"],
["application/vnd.yamaha.openscoreformat", "osf"],
["application/vnd.yamaha.openscoreformat.osfpvg+xml", "osfpvg"],
["application/vnd.yamaha.smaf-audio", "saf"],
["application/vnd.yamaha.smaf-phrase", "spf"],
["application/vnd.yellowriver-custom-menu", "cmp"],
["application/vnd.zul", "zir"],
["application/vnd.zzazz.deck+xml", "zaz"],
["application/vocaltec-media-desc", "vmd"],
["application/vocaltec-media-file", "vmf"],
["application/voicexml+xml", "vxml"],
["application/widget", "wgt"],
["application/winhlp", "hlp"],
["application/wordperfect", ["wp", "wp5", "wp6", "wpd"]],
["application/wordperfect6.0", ["w60", "wp5"]],
["application/wordperfect6.1", "w61"],
["application/wsdl+xml", "wsdl"],
["application/wspolicy+xml", "wspolicy"],
["application/x-123", "wk1"],
["application/x-7z-compressed", "7z"],
["application/x-abiword", "abw"],
["application/x-ace-compressed", "ace"],
["application/x-aim", "aim"],
["application/x-authorware-bin", "aab"],
["application/x-authorware-map", "aam"],
["application/x-authorware-seg", "aas"],
["application/x-bcpio", "bcpio"],
["application/x-binary", "bin"],
["application/x-binhex40", "hqx"],
["application/x-bittorrent", "torrent"],
["application/x-bsh", ["bsh", "sh", "shar"]],
["application/x-bytecode.elisp", "elc"],
["application/x-bytecode.python", "pyc"],
["application/x-bzip", "bz"],
["application/x-bzip2", ["boz", "bz2"]],
["application/x-cdf", "cdf"],
["application/x-cdlink", "vcd"],
["application/x-chat", ["cha", "chat"]],
["application/x-chess-pgn", "pgn"],
["application/x-cmu-raster", "ras"],
["application/x-cocoa", "cco"],
["application/x-compactpro", "cpt"],
["application/x-compress", "z"],
["application/x-compressed", ["tgz", "gz", "z", "zip"]],
["application/x-conference", "nsc"],
["application/x-cpio", "cpio"],
["application/x-cpt", "cpt"],
["application/x-csh", "csh"],
["application/x-debian-package", "deb"],
["application/x-deepv", "deepv"],
["application/x-director", ["dir", "dcr", "dxr"]],
["application/x-doom", "wad"],
["application/x-dtbncx+xml", "ncx"],
["application/x-dtbook+xml", "dtb"],
["application/x-dtbresource+xml", "res"],
["application/x-dvi", "dvi"],
["application/x-elc", "elc"],
["application/x-envoy", ["env", "evy"]],
["application/x-esrehber", "es"],
["application/x-excel", ["xls", "xla", "xlb", "xlc", "xld", "xlk", "xll", "xlm", "xlt", "xlv", "xlw"]],
["application/x-font-bdf", "bdf"],
["application/x-font-ghostscript", "gsf"],
["application/x-font-linux-psf", "psf"],
["application/x-font-otf", "otf"],
["application/x-font-pcf", "pcf"],
["application/x-font-snf", "snf"],
["application/x-font-ttf", "ttf"],
["application/x-font-type1", "pfa"],
["application/x-font-woff", "woff"],
["application/x-frame", "mif"],
["application/x-freelance", "pre"],
["application/x-futuresplash", "spl"],
["application/x-gnumeric", "gnumeric"],
["application/x-gsp", "gsp"],
["application/x-gss", "gss"],
["application/x-gtar", "gtar"],
["application/x-gzip", ["gz", "gzip"]],
["application/x-hdf", "hdf"],
["application/x-helpfile", ["help", "hlp"]],
["application/x-httpd-imap", "imap"],
["application/x-ima", "ima"],
["application/x-internet-signup", ["ins", "isp"]],
["application/x-internett-signup", "ins"],
["application/x-inventor", "iv"],
["application/x-ip2", "ip"],
["application/x-iphone", "iii"],
["application/x-java-class", "class"],
["application/x-java-commerce", "jcm"],
["application/x-java-jnlp-file", "jnlp"],
["application/x-javascript", "js"],
["application/x-koan", ["skd", "skm", "skp", "skt"]],
["application/x-ksh", "ksh"],
["application/x-latex", ["latex", "ltx"]],
["application/x-lha", "lha"],
["application/x-lisp", "lsp"],
["application/x-livescreen", "ivy"],
["application/x-lotus", "wq1"],
["application/x-lotusscreencam", "scm"],
["application/x-lzh", "lzh"],
["application/x-lzx", "lzx"],
["application/x-mac-binhex40", "hqx"],
["application/x-macbinary", "bin"],
["application/x-magic-cap-package-1.0", "mc$"],
["application/x-mathcad", "mcd"],
["application/x-meme", "mm"],
["application/x-midi", ["mid", "midi"]],
["application/x-mif", "mif"],
["application/x-mix-transfer", "nix"],
["application/x-mobipocket-ebook", "prc"],
["application/x-mplayer2", "asx"],
["application/x-ms-application", "application"],
["application/x-ms-wmd", "wmd"],
["application/x-ms-wmz", "wmz"],
["application/x-ms-xbap", "xbap"],
["application/x-msaccess", "mdb"],
["application/x-msbinder", "obd"],
["application/x-mscardfile", "crd"],
["application/x-msclip", "clp"],
["application/x-msdownload", ["exe", "dll"]],
["application/x-msexcel", ["xls", "xla", "xlw"]],
["application/x-msmediaview", ["mvb", "m13", "m14"]],
["application/x-msmetafile", "wmf"],
["application/x-msmoney", "mny"],
["application/x-mspowerpoint", "ppt"],
["application/x-mspublisher", "pub"],
["application/x-msschedule", "scd"],
["application/x-msterminal", "trm"],
["application/x-mswrite", "wri"],
["application/x-navi-animation", "ani"],
["application/x-navidoc", "nvd"],
["application/x-navimap", "map"],
["application/x-navistyle", "stl"],
["application/x-netcdf", ["cdf", "nc"]],
["application/x-newton-compatible-pkg", "pkg"],
["application/x-nokia-9000-communicator-add-on-software", "aos"],
["application/x-omc", "omc"],
["application/x-omcdatamaker", "omcd"],
["application/x-omcregerator", "omcr"],
["application/x-pagemaker", ["pm4", "pm5"]],
["application/x-pcl", "pcl"],
["application/x-perfmon", ["pma", "pmc", "pml", "pmr", "pmw"]],
["application/x-pixclscript", "plx"],
["application/x-pkcs10", "p10"],
["application/x-pkcs12", ["p12", "pfx"]],
["application/x-pkcs7-certificates", ["p7b", "spc"]],
["application/x-pkcs7-certreqresp", "p7r"],
["application/x-pkcs7-mime", ["p7m", "p7c"]],
["application/x-pkcs7-signature", ["p7s", "p7a"]],
["application/x-pointplus", "css"],
["application/x-portable-anymap", "pnm"],
["application/x-project", ["mpc", "mpt", "mpv", "mpx"]],
["application/x-qpro", "wb1"],
["application/x-rar-compressed", "rar"],
["application/x-rtf", "rtf"],
["application/x-sdp", "sdp"],
["application/x-sea", "sea"],
["application/x-seelogo", "sl"],
["application/x-sh", "sh"],
["application/x-shar", ["shar", "sh"]],
["application/x-shockwave-flash", "swf"],
["application/x-silverlight-app", "xap"],
["application/x-sit", "sit"],
["application/x-sprite", ["spr", "sprite"]],
["application/x-stuffit", "sit"],
["application/x-stuffitx", "sitx"],
["application/x-sv4cpio", "sv4cpio"],
["application/x-sv4crc", "sv4crc"],
["application/x-tar", "tar"],
["application/x-tbook", ["sbk", "tbk"]],
["application/x-tcl", "tcl"],
["application/x-tex", "tex"],
["application/x-tex-tfm", "tfm"],
["application/x-texinfo", ["texi", "texinfo"]],
["application/x-troff", ["roff", "t", "tr"]],
["application/x-troff-man", "man"],
["application/x-troff-me", "me"],
["application/x-troff-ms", "ms"],
["application/x-troff-msvideo", "avi"],
["application/x-ustar", "ustar"],
["application/x-visio", ["vsd", "vst", "vsw"]],
["application/x-vnd.audioexplosion.mzz", "mzz"],
["application/x-vnd.ls-xpix", "xpix"],
["application/x-vrml", "vrml"],
["application/x-wais-source", ["src", "wsrc"]],
["application/x-winhelp", "hlp"],
["application/x-wintalk", "wtk"],
["application/x-world", ["wrl", "svr"]],
["application/x-wpwin", "wpd"],
["application/x-wri", "wri"],
["application/x-x509-ca-cert", ["cer", "crt", "der"]],
["application/x-x509-user-cert", "crt"],
["application/x-xfig", "fig"],
["application/x-xpinstall", "xpi"],
["application/x-zip-compressed", "zip"],
["application/xcap-diff+xml", "xdf"],
["application/xenc+xml", "xenc"],
["application/xhtml+xml", "xhtml"],
["application/xml", "xml"],
["application/xml-dtd", "dtd"],
["application/xop+xml", "xop"],
["application/xslt+xml", "xslt"],
["application/xspf+xml", "xspf"],
["application/xv+xml", "mxml"],
["application/yang", "yang"],
["application/yin+xml", "yin"],
["application/ynd.ms-pkipko", "pko"],
["application/zip", "zip"],
["audio/adpcm", "adp"],
["audio/aiff", ["aiff", "aif", "aifc"]],
["audio/basic", ["snd", "au"]],
["audio/it", "it"],
["audio/make", ["funk", "my", "pfunk"]],
["audio/make.my.funk", "pfunk"],
["audio/mid", ["mid", "rmi"]],
["audio/midi", ["midi", "kar", "mid"]],
["audio/mod", "mod"],
["audio/mp4", "mp4a"],
["audio/mpeg", ["mpga", "mp3", "m2a", "mp2", "mpa", "mpg"]],
["audio/mpeg3", "mp3"],
["audio/nspaudio", ["la", "lma"]],
["audio/ogg", "oga"],
["audio/s3m", "s3m"],
["audio/tsp-audio", "tsi"],
["audio/tsplayer", "tsp"],
["audio/vnd.dece.audio", "uva"],
["audio/vnd.digital-winds", "eol"],
["audio/vnd.dra", "dra"],
["audio/vnd.dts", "dts"],
["audio/vnd.dts.hd", "dtshd"],
["audio/vnd.lucent.voice", "lvp"],
["audio/vnd.ms-playready.media.pya", "pya"],
["audio/vnd.nuera.ecelp4800", "ecelp4800"],
["audio/vnd.nuera.ecelp7470", "ecelp7470"],
["audio/vnd.nuera.ecelp9600", "ecelp9600"],
["audio/vnd.qcelp", "qcp"],
["audio/vnd.rip", "rip"],
["audio/voc", "voc"],
["audio/voxware", "vox"],
["audio/wav", "wav"],
["audio/webm", "weba"],
["audio/x-aac", "aac"],
["audio/x-adpcm", "snd"],
["audio/x-aiff", ["aiff", "aif", "aifc"]],
["audio/x-au", "au"],
["audio/x-gsm", ["gsd", "gsm"]],
["audio/x-jam", "jam"],
["audio/x-liveaudio", "lam"],
["audio/x-mid", ["mid", "midi"]],
["audio/x-midi", ["midi", "mid"]],
["audio/x-mod", "mod"],
["audio/x-mpeg", "mp2"],
["audio/x-mpeg-3", "mp3"],
["audio/x-mpegurl", "m3u"],
["audio/x-mpequrl", "m3u"],
["audio/x-ms-wax", "wax"],
["audio/x-ms-wma", "wma"],
["audio/x-nspaudio", ["la", "lma"]],
["audio/x-pn-realaudio", ["ra", "ram", "rm", "rmm", "rmp"]],
["audio/x-pn-realaudio-plugin", ["ra", "rmp", "rpm"]],
["audio/x-psid", "sid"],
["audio/x-realaudio", "ra"],
["audio/x-twinvq", "vqf"],
["audio/x-twinvq-plugin", ["vqe", "vql"]],
["audio/x-vnd.audioexplosion.mjuicemediafile", "mjf"],
["audio/x-voc", "voc"],
["audio/x-wav", "wav"],
["audio/xm", "xm"],
["chemical/x-cdx", "cdx"],
["chemical/x-cif", "cif"],
["chemical/x-cmdf", "cmdf"],
["chemical/x-cml", "cml"],
["chemical/x-csml", "csml"],
["chemical/x-pdb", ["pdb", "xyz"]],
["chemical/x-xyz", "xyz"],
["drawing/x-dwf", "dwf"],
["i-world/i-vrml", "ivr"],
["image/bmp", ["bmp", "bm"]],
["image/cgm", "cgm"],
["image/cis-cod", "cod"],
["image/cmu-raster", ["ras", "rast"]],
["image/fif", "fif"],
["image/florian", ["flo", "turbot"]],
["image/g3fax", "g3"],
["image/gif", "gif"],
["image/ief", ["ief", "iefs"]],
["image/jpeg", ["jpeg", "jpe", "jpg", "jfif", "jfif-tbnl"]],
["image/jutvision", "jut"],
["image/ktx", "ktx"],
["image/naplps", ["nap", "naplps"]],
["image/pict", ["pic", "pict"]],
["image/pipeg", "jfif"],
["image/pjpeg", ["jfif", "jpe", "jpeg", "jpg"]],
["image/png", ["png", "x-png"]],
["image/prs.btif", "btif"],
["image/svg+xml", "svg"],
["image/tiff", ["tif", "tiff"]],
["image/vasa", "mcf"],
["image/vnd.adobe.photoshop", "psd"],
["image/vnd.dece.graphic", "uvi"],
["image/vnd.djvu", "djvu"],
["image/vnd.dvb.subtitle", "sub"],
["image/vnd.dwg", ["dwg", "dxf", "svf"]],
["image/vnd.dxf", "dxf"],
["image/vnd.fastbidsheet", "fbs"],
["image/vnd.fpx", "fpx"],
["image/vnd.fst", "fst"],
["image/vnd.fujixerox.edmics-mmr", "mmr"],
["image/vnd.fujixerox.edmics-rlc", "rlc"],
["image/vnd.ms-modi", "mdi"],
["image/vnd.net-fpx", ["fpx", "npx"]],
["image/vnd.rn-realflash", "rf"],
["image/vnd.rn-realpix", "rp"],
["image/vnd.wap.wbmp", "wbmp"],
["image/vnd.xiff", "xif"],
["image/webp", "webp"],
["image/x-cmu-raster", "ras"],
["image/x-cmx", "cmx"],
["image/x-dwg", ["dwg", "dxf", "svf"]],
["image/x-freehand", "fh"],
["image/x-icon", "ico"],
["image/x-jg", "art"],
["image/x-jps", "jps"],
["image/x-niff", ["niff", "nif"]],
["image/x-pcx", "pcx"],
["image/x-pict", ["pct", "pic"]],
["image/x-portable-anymap", "pnm"],
["image/x-portable-bitmap", "pbm"],
["image/x-portable-graymap", "pgm"],
["image/x-portable-greymap", "pgm"],
["image/x-portable-pixmap", "ppm"],
["image/x-quicktime", ["qif", "qti", "qtif"]],
["image/x-rgb", "rgb"],
["image/x-tiff", ["tif", "tiff"]],
["image/x-windows-bmp", "bmp"],
["image/x-xbitmap", "xbm"],
["image/x-xbm", "xbm"],
["image/x-xpixmap", ["xpm", "pm"]],
["image/x-xwd", "xwd"],
["image/x-xwindowdump", "xwd"],
["image/xbm", "xbm"],
["image/xpm", "xpm"],
["message/rfc822", ["eml", "mht", "mhtml", "nws", "mime"]],
["model/iges", ["iges", "igs"]],
["model/mesh", "msh"],
["model/vnd.collada+xml", "dae"],
["model/vnd.dwf", "dwf"],
["model/vnd.gdl", "gdl"],
["model/vnd.gtw", "gtw"],
["model/vnd.mts", "mts"],
["model/vnd.vtu", "vtu"],
["model/vrml", ["vrml", "wrl", "wrz"]],
["model/x-pov", "pov"],
["multipart/x-gzip", "gzip"],
["multipart/x-ustar", "ustar"],
["multipart/x-zip", "zip"],
["music/crescendo", ["mid", "midi"]],
["music/x-karaoke", "kar"],
["paleovu/x-pv", "pvu"],
["text/asp", "asp"],
["text/calendar", "ics"],
["text/css", "css"],
["text/csv", "csv"],
["text/ecmascript", "js"],
["text/h323", "323"],
["text/html", ["html", "htm", "stm", "acgi", "htmls", "htx", "shtml"]],
["text/iuls", "uls"],
["text/javascript", "js"],
["text/mcf", "mcf"],
["text/n3", "n3"],
["text/pascal", "pas"],
[
"text/plain",
[
"txt",
"bas",
"c",
"h",
"c++",
"cc",
"com",
"conf",
"cxx",
"def",
"f",
"f90",
"for",
"g",
"hh",
"idc",
"jav",
"java",
"list",
"log",
"lst",
"m",
"mar",
"pl",
"sdml",
"text"
]
],
["text/plain-bas", "par"],
["text/prs.lines.tag", "dsc"],
["text/richtext", ["rtx", "rt", "rtf"]],
["text/scriplet", "wsc"],
["text/scriptlet", "sct"],
["text/sgml", ["sgm", "sgml"]],
["text/tab-separated-values", "tsv"],
["text/troff", "t"],
["text/turtle", "ttl"],
["text/uri-list", ["uni", "unis", "uri", "uris"]],
["text/vnd.abc", "abc"],
["text/vnd.curl", "curl"],
["text/vnd.curl.dcurl", "dcurl"],
["text/vnd.curl.mcurl", "mcurl"],
["text/vnd.curl.scurl", "scurl"],
["text/vnd.fly", "fly"],
["text/vnd.fmi.flexstor", "flx"],
["text/vnd.graphviz", "gv"],
["text/vnd.in3d.3dml", "3dml"],
["text/vnd.in3d.spot", "spot"],
["text/vnd.rn-realtext", "rt"],
["text/vnd.sun.j2me.app-descriptor", "jad"],
["text/vnd.wap.wml", "wml"],
["text/vnd.wap.wmlscript", "wmls"],
["text/webviewhtml", "htt"],
["text/x-asm", ["asm", "s"]],
["text/x-audiosoft-intra", "aip"],
["text/x-c", ["c", "cc", "cpp"]],
["text/x-component", "htc"],
["text/x-fortran", ["for", "f", "f77", "f90"]],
["text/x-h", ["h", "hh"]],
["text/x-java-source", ["java", "jav"]],
["text/x-java-source,java", "java"],
["text/x-la-asf", "lsx"],
["text/x-m", "m"],
["text/x-pascal", "p"],
["text/x-script", "hlb"],
["text/x-script.csh", "csh"],
["text/x-script.elisp", "el"],
["text/x-script.guile", "scm"],
["text/x-script.ksh", "ksh"],
["text/x-script.lisp", "lsp"],
["text/x-script.perl", "pl"],
["text/x-script.perl-module", "pm"],
["text/x-script.phyton", "py"],
["text/x-script.rexx", "rexx"],
["text/x-script.scheme", "scm"],
["text/x-script.sh", "sh"],
["text/x-script.tcl", "tcl"],
["text/x-script.tcsh", "tcsh"],
["text/x-script.zsh", "zsh"],
["text/x-server-parsed-html", ["shtml", "ssi"]],
["text/x-setext", "etx"],
["text/x-sgml", ["sgm", "sgml"]],
["text/x-speech", ["spc", "talk"]],
["text/x-uil", "uil"],
["text/x-uuencode", ["uu", "uue"]],
["text/x-vcalendar", "vcs"],
["text/x-vcard", "vcf"],
["text/xml", "xml"],
["video/3gpp", "3gp"],
["video/3gpp2", "3g2"],
["video/animaflex", "afl"],
["video/avi", "avi"],
["video/avs-video", "avs"],
["video/dl", "dl"],
["video/fli", "fli"],
["video/gl", "gl"],
["video/h261", "h261"],
["video/h263", "h263"],
["video/h264", "h264"],
["video/jpeg", "jpgv"],
["video/jpm", "jpm"],
["video/mj2", "mj2"],
["video/mp4", "mp4"],
["video/mpeg", ["mpeg", "mp2", "mpa", "mpe", "mpg", "mpv2", "m1v", "m2v", "mp3"]],
["video/msvideo", "avi"],
["video/ogg", "ogv"],
["video/quicktime", ["mov", "qt", "moov"]],
["video/vdo", "vdo"],
["video/vivo", ["viv", "vivo"]],
["video/vnd.dece.hd", "uvh"],
["video/vnd.dece.mobile", "uvm"],
["video/vnd.dece.pd", "uvp"],
["video/vnd.dece.sd", "uvs"],
["video/vnd.dece.video", "uvv"],
["video/vnd.fvt", "fvt"],
["video/vnd.mpegurl", "mxu"],
["video/vnd.ms-playready.media.pyv", "pyv"],
["video/vnd.rn-realvideo", "rv"],
["video/vnd.uvvu.mp4", "uvu"],
["video/vnd.vivo", ["viv", "vivo"]],
["video/vosaic", "vos"],
["video/webm", "webm"],
["video/x-amt-demorun", "xdr"],
["video/x-amt-showrun", "xsr"],
["video/x-atomic3d-feature", "fmf"],
["video/x-dl", "dl"],
["video/x-dv", ["dif", "dv"]],
["video/x-f4v", "f4v"],
["video/x-fli", "fli"],
["video/x-flv", "flv"],
["video/x-gl", "gl"],
["video/x-isvideo", "isu"],
["video/x-la-asf", ["lsf", "lsx"]],
["video/x-m4v", "m4v"],
["video/x-motion-jpeg", "mjpg"],
["video/x-mpeg", ["mp3", "mp2"]],
["video/x-mpeq2a", "mp2"],
["video/x-ms-asf", ["asf", "asr", "asx"]],
["video/x-ms-asf-plugin", "asx"],
["video/x-ms-wm", "wm"],
["video/x-ms-wmv", "wmv"],
["video/x-ms-wmx", "wmx"],
["video/x-ms-wvx", "wvx"],
["video/x-msvideo", "avi"],
["video/x-qtc", "qtc"],
["video/x-scm", "scm"],
["video/x-sgi-movie", ["movie", "mv"]],
["windows/metafile", "wmf"],
["www/mime", "mime"],
["x-conference/x-cooltalk", "ice"],
["x-music/x-midi", ["mid", "midi"]],
["x-world/x-3dmf", ["3dm", "3dmf", "qd3", "qd3d"]],
["x-world/x-svr", "svr"],
["x-world/x-vrml", ["flr", "vrml", "wrl", "wrz", "xaf", "xof"]],
["x-world/x-vrt", "vrt"],
["xgl/drawing", "xgz"],
["xgl/movie", "xmz"]
]);
var extensions = new Map([
["123", "application/vnd.lotus-1-2-3"],
["323", "text/h323"],
["*", "application/octet-stream"],
["3dm", "x-world/x-3dmf"],
["3dmf", "x-world/x-3dmf"],
["3dml", "text/vnd.in3d.3dml"],
["3g2", "video/3gpp2"],
["3gp", "video/3gpp"],
["7z", "application/x-7z-compressed"],
["a", "application/octet-stream"],
["aab", "application/x-authorware-bin"],
["aac", "audio/x-aac"],
["aam", "application/x-authorware-map"],
["aas", "application/x-authorware-seg"],
["abc", "text/vnd.abc"],
["abw", "application/x-abiword"],
["ac", "application/pkix-attr-cert"],
["acc", "application/vnd.americandynamics.acc"],
["ace", "application/x-ace-compressed"],
["acgi", "text/html"],
["acu", "application/vnd.acucobol"],
["acx", "application/internet-property-stream"],
["adp", "audio/adpcm"],
["aep", "application/vnd.audiograph"],
["afl", "video/animaflex"],
["afp", "application/vnd.ibm.modcap"],
["ahead", "application/vnd.ahead.space"],
["ai", "application/postscript"],
["aif", ["audio/aiff", "audio/x-aiff"]],
["aifc", ["audio/aiff", "audio/x-aiff"]],
["aiff", ["audio/aiff", "audio/x-aiff"]],
["aim", "application/x-aim"],
["aip", "text/x-audiosoft-intra"],
["air", "application/vnd.adobe.air-application-installer-package+zip"],
["ait", "application/vnd.dvb.ait"],
["ami", "application/vnd.amiga.ami"],
["ani", "application/x-navi-animation"],
["aos", "application/x-nokia-9000-communicator-add-on-software"],
["apk", "application/vnd.android.package-archive"],
["application", "application/x-ms-application"],
["apr", "application/vnd.lotus-approach"],
["aps", "application/mime"],
["arc", "application/octet-stream"],
["arj", ["application/arj", "application/octet-stream"]],
["art", "image/x-jg"],
["asf", "video/x-ms-asf"],
["asm", "text/x-asm"],
["aso", "application/vnd.accpac.simply.aso"],
["asp", "text/asp"],
["asr", "video/x-ms-asf"],
["asx", ["video/x-ms-asf", "application/x-mplayer2", "video/x-ms-asf-plugin"]],
["atc", "application/vnd.acucorp"],
["atomcat", "application/atomcat+xml"],
["atomsvc", "application/atomsvc+xml"],
["atx", "application/vnd.antix.game-component"],
["au", ["audio/basic", "audio/x-au"]],
["avi", ["video/avi", "video/msvideo", "application/x-troff-msvideo", "video/x-msvideo"]],
["avs", "video/avs-video"],
["aw", "application/applixware"],
["axs", "application/olescript"],
["azf", "application/vnd.airzip.filesecure.azf"],
["azs", "application/vnd.airzip.filesecure.azs"],
["azw", "application/vnd.amazon.ebook"],
["bas", "text/plain"],
["bcpio", "application/x-bcpio"],
["bdf", "application/x-font-bdf"],
["bdm", "application/vnd.syncml.dm+wbxml"],
["bed", "application/vnd.realvnc.bed"],
["bh2", "application/vnd.fujitsu.oasysprs"],
["bin", ["application/octet-stream", "application/mac-binary", "application/macbinary", "application/x-macbinary", "application/x-binary"]],
["bm", "image/bmp"],
["bmi", "application/vnd.bmi"],
["bmp", ["image/bmp", "image/x-windows-bmp"]],
["boo", "application/book"],
["book", "application/book"],
["box", "application/vnd.previewsystems.box"],
["boz", "application/x-bzip2"],
["bsh", "application/x-bsh"],
["btif", "image/prs.btif"],
["bz", "application/x-bzip"],
["bz2", "application/x-bzip2"],
["c", ["text/plain", "text/x-c"]],
["c++", "text/plain"],
["c11amc", "application/vnd.cluetrust.cartomobile-config"],
["c11amz", "application/vnd.cluetrust.cartomobile-config-pkg"],
["c4g", "application/vnd.clonk.c4group"],
["cab", "application/vnd.ms-cab-compressed"],
["car", "application/vnd.curl.car"],
["cat", ["application/vnd.ms-pkiseccat", "application/vnd.ms-pki.seccat"]],
["cc", ["text/plain", "text/x-c"]],
["ccad", "application/clariscad"],
["cco", "application/x-cocoa"],
["ccxml", "application/ccxml+xml,"],
["cdbcmsg", "application/vnd.contact.cmsg"],
["cdf", ["application/cdf", "application/x-cdf", "application/x-netcdf"]],
["cdkey", "application/vnd.mediastation.cdkey"],
["cdmia", "application/cdmi-capability"],
["cdmic", "application/cdmi-container"],
["cdmid", "application/cdmi-domain"],
["cdmio", "application/cdmi-object"],
["cdmiq", "application/cdmi-queue"],
["cdx", "chemical/x-cdx"],
["cdxml", "application/vnd.chemdraw+xml"],
["cdy", "application/vnd.cinderella"],
["cer", ["application/pkix-cert", "application/x-x509-ca-cert"]],
["cgm", "image/cgm"],
["cha", "application/x-chat"],
["chat", "application/x-chat"],
["chm", "application/vnd.ms-htmlhelp"],
["chrt", "application/vnd.kde.kchart"],
["cif", "chemical/x-cif"],
["cii", "application/vnd.anser-web-certificate-issue-initiation"],
["cil", "application/vnd.ms-artgalry"],
["cla", "application/vnd.claymore"],
["class", ["application/octet-stream", "application/java", "application/java-byte-code", "application/java-vm", "application/x-java-class"]],
["clkk", "application/vnd.crick.clicker.keyboard"],
["clkp", "application/vnd.crick.clicker.palette"],
["clkt", "application/vnd.crick.clicker.template"],
["clkw", "application/vnd.crick.clicker.wordbank"],
["clkx", "application/vnd.crick.clicker"],
["clp", "application/x-msclip"],
["cmc", "application/vnd.cosmocaller"],
["cmdf", "chemical/x-cmdf"],
["cml", "chemical/x-cml"],
["cmp", "application/vnd.yellowriver-custom-menu"],
["cmx", "image/x-cmx"],
["cod", ["image/cis-cod", "application/vnd.rim.cod"]],
["com", ["application/octet-stream", "text/plain"]],
["conf", "text/plain"],
["cpio", "application/x-cpio"],
["cpp", "text/x-c"],
["cpt", ["application/mac-compactpro", "application/x-compactpro", "application/x-cpt"]],
["crd", "application/x-mscardfile"],
["crl", ["application/pkix-crl", "application/pkcs-crl"]],
["crt", ["application/pkix-cert", "application/x-x509-user-cert", "application/x-x509-ca-cert"]],
["cryptonote", "application/vnd.rig.cryptonote"],
["csh", ["text/x-script.csh", "application/x-csh"]],
["csml", "chemical/x-csml"],
["csp", "application/vnd.commonspace"],
["css", ["text/css", "application/x-pointplus"]],
["csv", "text/csv"],
["cu", "application/cu-seeme"],
["curl", "text/vnd.curl"],
["cww", "application/prs.cww"],
["cxx", "text/plain"],
["dae", "model/vnd.collada+xml"],
["daf", "application/vnd.mobius.daf"],
["davmount", "application/davmount+xml"],
["dcr", "application/x-director"],
["dcurl", "text/vnd.curl.dcurl"],
["dd2", "application/vnd.oma.dd2+xml"],
["ddd", "application/vnd.fujixerox.ddd"],
["deb", "application/x-debian-package"],
["deepv", "application/x-deepv"],
["def", "text/plain"],
["der", "application/x-x509-ca-cert"],
["dfac", "application/vnd.dreamfactory"],
["dif", "video/x-dv"],
["dir", "application/x-director"],
["dis", "application/vnd.mobius.dis"],
["djvu", "image/vnd.djvu"],
["dl", ["video/dl", "video/x-dl"]],
["dll", "application/x-msdownload"],
["dms", "application/octet-stream"],
["dna", "application/vnd.dna"],
["doc", "application/msword"],
["docm", "application/vnd.ms-word.document.macroenabled.12"],
["docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
["dot", "application/msword"],
["dotm", "application/vnd.ms-word.template.macroenabled.12"],
["dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"],
["dp", ["application/commonground", "application/vnd.osgi.dp"]],
["dpg", "application/vnd.dpgraph"],
["dra", "audio/vnd.dra"],
["drw", "application/drafting"],
["dsc", "text/prs.lines.tag"],
["dssc", "application/dssc+der"],
["dtb", "application/x-dtbook+xml"],
["dtd", "application/xml-dtd"],
["dts", "audio/vnd.dts"],
["dtshd", "audio/vnd.dts.hd"],
["dump", "application/octet-stream"],
["dv", "video/x-dv"],
["dvi", "application/x-dvi"],
["dwf", ["model/vnd.dwf", "drawing/x-dwf"]],
["dwg", ["application/acad", "image/vnd.dwg", "image/x-dwg"]],
["dxf", ["application/dxf", "image/vnd.dwg", "image/vnd.dxf", "image/x-dwg"]],
["dxp", "application/vnd.spotfire.dxp"],
["dxr", "application/x-director"],
["ecelp4800", "audio/vnd.nuera.ecelp4800"],
["ecelp7470", "audio/vnd.nuera.ecelp7470"],
["ecelp9600", "audio/vnd.nuera.ecelp9600"],
["edm", "application/vnd.novadigm.edm"],
["edx", "application/vnd.novadigm.edx"],
["efif", "application/vnd.picsel"],
["ei6", "application/vnd.pg.osasli"],
["el", "text/x-script.elisp"],
["elc", ["application/x-elc", "application/x-bytecode.elisp"]],
["eml", "message/rfc822"],
["emma", "application/emma+xml"],
["env", "application/x-envoy"],
["eol", "audio/vnd.digital-winds"],
["eot", "application/vnd.ms-fontobject"],
["eps", "application/postscript"],
["epub", "application/epub+zip"],
["es", ["application/ecmascript", "application/x-esrehber"]],
["es3", "application/vnd.eszigno3+xml"],
["esf", "application/vnd.epson.esf"],
["etx", "text/x-setext"],
["evy", ["application/envoy", "application/x-envoy"]],
["exe", ["application/octet-stream", "application/x-msdownload"]],
["exi", "application/exi"],
["ext", "application/vnd.novadigm.ext"],
["ez2", "application/vnd.ezpix-album"],
["ez3", "application/vnd.ezpix-package"],
["f", ["text/plain", "text/x-fortran"]],
["f4v", "video/x-f4v"],
["f77", "text/x-fortran"],
["f90", ["text/plain", "text/x-fortran"]],
["fbs", "image/vnd.fastbidsheet"],
["fcs", "application/vnd.isac.fcs"],
["fdf", "application/vnd.fdf"],
["fe_launch", "application/vnd.denovo.fcselayout-link"],
["fg5", "application/vnd.fujitsu.oasysgp"],
["fh", "image/x-freehand"],
["fif", ["application/fractals", "image/fif"]],
["fig", "application/x-xfig"],
["fli", ["video/fli", "video/x-fli"]],
["flo", ["image/florian", "application/vnd.micrografx.flo"]],
["flr", "x-world/x-vrml"],
["flv", "video/x-flv"],
["flw", "application/vnd.kde.kivio"],
["flx", "text/vnd.fmi.flexstor"],
["fly", "text/vnd.fly"],
["fm", "application/vnd.framemaker"],
["fmf", "video/x-atomic3d-feature"],
["fnc", "application/vnd.frogans.fnc"],
["for", ["text/plain", "text/x-fortran"]],
["fpx", ["image/vnd.fpx", "image/vnd.net-fpx"]],
["frl", "application/freeloader"],
["fsc", "application/vnd.fsc.weblaunch"],
["fst", "image/vnd.fst"],
["ftc", "application/vnd.fluxtime.clip"],
["fti", "application/vnd.anser-web-funds-transfer-initiation"],
["funk", "audio/make"],
["fvt", "video/vnd.fvt"],
["fxp", "application/vnd.adobe.fxp"],
["fzs", "application/vnd.fuzzysheet"],
["g", "text/plain"],
["g2w", "application/vnd.geoplan"],
["g3", "image/g3fax"],
["g3w", "application/vnd.geospace"],
["gac", "application/vnd.groove-account"],
["gdl", "model/vnd.gdl"],
["geo", "application/vnd.dynageo"],
["gex", "application/vnd.geometry-explorer"],
["ggb", "application/vnd.geogebra.file"],
["ggt", "application/vnd.geogebra.tool"],
["ghf", "application/vnd.groove-help"],
["gif", "image/gif"],
["gim", "application/vnd.groove-identity-message"],
["gl", ["video/gl", "video/x-gl"]],
["gmx", "application/vnd.gmx"],
["gnumeric", "application/x-gnumeric"],
["gph", "application/vnd.flographit"],
["gqf", "application/vnd.grafeq"],
["gram", "application/srgs"],
["grv", "application/vnd.groove-injector"],
["grxml", "application/srgs+xml"],
["gsd", "audio/x-gsm"],
["gsf", "application/x-font-ghostscript"],
["gsm", "audio/x-gsm"],
["gsp", "application/x-gsp"],
["gss", "application/x-gss"],
["gtar", "application/x-gtar"],
["gtm", "application/vnd.groove-tool-message"],
["gtw", "model/vnd.gtw"],
["gv", "text/vnd.graphviz"],
["gxt", "application/vnd.geonext"],
["gz", ["application/x-gzip", "application/x-compressed"]],
["gzip", ["multipart/x-gzip", "application/x-gzip"]],
["h", ["text/plain", "text/x-h"]],
["h261", "video/h261"],
["h263", "video/h263"],
["h264", "video/h264"],
["hal", "application/vnd.hal+xml"],
["hbci", "application/vnd.hbci"],
["hdf", "application/x-hdf"],
["help", "application/x-helpfile"],
["hgl", "application/vnd.hp-hpgl"],
["hh", ["text/plain", "text/x-h"]],
["hlb", "text/x-script"],
["hlp", ["application/winhlp", "application/hlp", "application/x-helpfile", "application/x-winhelp"]],
["hpg", "application/vnd.hp-hpgl"],
["hpgl", "application/vnd.hp-hpgl"],
["hpid", "application/vnd.hp-hpid"],
["hps", "application/vnd.hp-hps"],
[
"hqx",
[
"application/mac-binhex40",
"application/binhex",
"application/binhex4",
"application/mac-binhex",
"application/x-binhex40",
"application/x-mac-binhex40"
]
],
["hta", "application/hta"],
["htc", "text/x-component"],
["htke", "application/vnd.kenameaapp"],
["htm", "text/html"],
["html", "text/html"],
["htmls", "text/html"],
["htt", "text/webviewhtml"],
["htx", "text/html"],
["hvd", "application/vnd.yamaha.hv-dic"],
["hvp", "application/vnd.yamaha.hv-voice"],
["hvs", "application/vnd.yamaha.hv-script"],
["i2g", "application/vnd.intergeo"],
["icc", "application/vnd.iccprofile"],
["ice", "x-conference/x-cooltalk"],
["ico", "image/x-icon"],
["ics", "text/calendar"],
["idc", "text/plain"],
["ief", "image/ief"],
["iefs", "image/ief"],
["ifm", "application/vnd.shana.informed.formdata"],
["iges", ["application/iges", "model/iges"]],
["igl", "application/vnd.igloader"],
["igm", "application/vnd.insors.igm"],
["igs", ["application/iges", "model/iges"]],
["igx", "application/vnd.micrografx.igx"],
["iif", "application/vnd.shana.informed.interchange"],
["iii", "application/x-iphone"],
["ima", "application/x-ima"],
["imap", "application/x-httpd-imap"],
["imp", "application/vnd.accpac.simply.imp"],
["ims", "application/vnd.ms-ims"],
["inf", "application/inf"],
["ins", ["application/x-internet-signup", "application/x-internett-signup"]],
["ip", "application/x-ip2"],
["ipfix", "application/ipfix"],
["ipk", "application/vnd.shana.informed.package"],
["irm", "application/vnd.ibm.rights-management"],
["irp", "application/vnd.irepository.package+xml"],
["isp", "application/x-internet-signup"],
["isu", "video/x-isvideo"],
["it", "audio/it"],
["itp", "application/vnd.shana.informed.formtemplate"],
["iv", "application/x-inventor"],
["ivp", "application/vnd.immervision-ivp"],
["ivr", "i-world/i-vrml"],
["ivu", "application/vnd.immervision-ivu"],
["ivy", "application/x-livescreen"],
["jad", "text/vnd.sun.j2me.app-descriptor"],
["jam", ["application/vnd.jam", "audio/x-jam"]],
["jar", "application/java-archive"],
["jav", ["text/plain", "text/x-java-source"]],
["java", ["text/plain", "text/x-java-source,java", "text/x-java-source"]],
["jcm", "application/x-java-commerce"],
["jfif", ["image/pipeg", "image/jpeg", "image/pjpeg"]],
["jfif-tbnl", "image/jpeg"],
["jisp", "application/vnd.jisp"],
["jlt", "application/vnd.hp-jlyt"],
["jnlp", "application/x-java-jnlp-file"],
["joda", "application/vnd.joost.joda-archive"],
["jpe", ["image/jpeg", "image/pjpeg"]],
["jpeg", ["image/jpeg", "image/pjpeg"]],
["jpg", ["image/jpeg", "image/pjpeg"]],
["jpgv", "video/jpeg"],
["jpm", "video/jpm"],
["jps", "image/x-jps"],
["js", ["application/javascript", "application/ecmascript", "text/javascript", "text/ecmascript", "application/x-javascript"]],
["json", "application/json"],
["jut", "image/jutvision"],
["kar", ["audio/midi", "music/x-karaoke"]],
["karbon", "application/vnd.kde.karbon"],
["kfo", "application/vnd.kde.kformula"],
["kia", "application/vnd.kidspiration"],
["kml", "application/vnd.google-earth.kml+xml"],
["kmz", "application/vnd.google-earth.kmz"],
["kne", "application/vnd.kinar"],
["kon", "application/vnd.kde.kontour"],
["kpr", "application/vnd.kde.kpresenter"],
["ksh", ["application/x-ksh", "text/x-script.ksh"]],
["ksp", "application/vnd.kde.kspread"],
["ktx", "image/ktx"],
["ktz", "application/vnd.kahootz"],
["kwd", "application/vnd.kde.kword"],
["la", ["audio/nspaudio", "audio/x-nspaudio"]],
["lam", "audio/x-liveaudio"],
["lasxml", "application/vnd.las.las+xml"],
["latex", "application/x-latex"],
["lbd", "application/vnd.llamagraphics.life-balance.desktop"],
["lbe", "application/vnd.llamagraphics.life-balance.exchange+xml"],
["les", "application/vnd.hhe.lesson-player"],
["lha", ["application/octet-stream", "application/lha", "application/x-lha"]],
["lhx", "application/octet-stream"],
["link66", "application/vnd.route66.link66+xml"],
["list", "text/plain"],
["lma", ["audio/nspaudio", "audio/x-nspaudio"]],
["log", "text/plain"],
["lrm", "application/vnd.ms-lrm"],
["lsf", "video/x-la-asf"],
["lsp", ["application/x-lisp", "text/x-script.lisp"]],
["lst", "text/plain"],
["lsx", ["video/x-la-asf", "text/x-la-asf"]],
["ltf", "application/vnd.frogans.ltf"],
["ltx", "application/x-latex"],
["lvp", "audio/vnd.lucent.voice"],
["lwp", "application/vnd.lotus-wordpro"],
["lzh", ["application/octet-stream", "application/x-lzh"]],
["lzx", ["application/lzx", "application/octet-stream", "application/x-lzx"]],
["m", ["text/plain", "text/x-m"]],
["m13", "application/x-msmediaview"],
["m14", "application/x-msmediaview"],
["m1v", "video/mpeg"],
["m21", "application/mp21"],
["m2a", "audio/mpeg"],
["m2v", "video/mpeg"],
["m3u", ["audio/x-mpegurl", "audio/x-mpequrl"]],
["m3u8", "application/vnd.apple.mpegurl"],
["m4v", "video/x-m4v"],
["ma", "application/mathematica"],
["mads", "application/mads+xml"],
["mag", "application/vnd.ecowin.chart"],
["man", "application/x-troff-man"],
["map", "application/x-navimap"],
["mar", "text/plain"],
["mathml", "application/mathml+xml"],
["mbd", "application/mbedlet"],
["mbk", "application/vnd.mobius.mbk"],
["mbox", "application/mbox"],
["mc$", "application/x-magic-cap-package-1.0"],
["mc1", "application/vnd.medcalcdata"],
["mcd", ["application/mcad", "application/vnd.mcd", "application/x-mathcad"]],
["mcf", ["image/vasa", "text/mcf"]],
["mcp", "application/netmc"],
["mcurl", "text/vnd.curl.mcurl"],
["mdb", "application/x-msaccess"],
["mdi", "image/vnd.ms-modi"],
["me", "application/x-troff-me"],
["meta4", "application/metalink4+xml"],
["mets", "application/mets+xml"],
["mfm", "application/vnd.mfmp"],
["mgp", "application/vnd.osgeo.mapguide.package"],
["mgz", "application/vnd.proteus.magazine"],
["mht", "message/rfc822"],
["mhtml", "message/rfc822"],
["mid", ["audio/mid", "audio/midi", "music/crescendo", "x-music/x-midi", "audio/x-midi", "application/x-midi", "audio/x-mid"]],
["midi", ["audio/midi", "music/crescendo", "x-music/x-midi", "audio/x-midi", "application/x-midi", "audio/x-mid"]],
["mif", ["application/vnd.mif", "application/x-mif", "application/x-frame"]],
["mime", ["message/rfc822", "www/mime"]],
["mj2", "video/mj2"],
["mjf", "audio/x-vnd.audioexplosion.mjuicemediafile"],
["mjpg", "video/x-motion-jpeg"],
["mlp", "application/vnd.dolby.mlp"],
["mm", ["application/base64", "application/x-meme"]],
["mmd", "application/vnd.chipnuts.karaoke-mmd"],
["mme", "application/base64"],
["mmf", "application/vnd.smaf"],
["mmr", "image/vnd.fujixerox.edmics-mmr"],
["mny", "application/x-msmoney"],
["mod", ["audio/mod", "audio/x-mod"]],
["mods", "application/mods+xml"],
["moov", "video/quicktime"],
["mov", "video/quicktime"],
["movie", "video/x-sgi-movie"],
["mp2", ["video/mpeg", "audio/mpeg", "video/x-mpeg", "audio/x-mpeg", "video/x-mpeq2a"]],
["mp3", ["audio/mpeg", "audio/mpeg3", "video/mpeg", "audio/x-mpeg-3", "video/x-mpeg"]],
["mp4", ["video/mp4", "application/mp4"]],
["mp4a", "audio/mp4"],
["mpa", ["video/mpeg", "audio/mpeg"]],
["mpc", ["application/vnd.mophun.certificate", "application/x-project"]],
["mpe", "video/mpeg"],
["mpeg", "video/mpeg"],
["mpg", ["video/mpeg", "audio/mpeg"]],
["mpga", "audio/mpeg"],
["mpkg", "application/vnd.apple.installer+xml"],
["mpm", "application/vnd.blueice.multipass"],
["mpn", "application/vnd.mophun.application"],
["mpp", "application/vnd.ms-project"],
["mpt", "application/x-project"],
["mpv", "application/x-project"],
["mpv2", "video/mpeg"],
["mpx", "application/x-project"],
["mpy", "application/vnd.ibm.minipay"],
["mqy", "application/vnd.mobius.mqy"],
["mrc", "application/marc"],
["mrcx", "application/marcxml+xml"],
["ms", "application/x-troff-ms"],
["mscml", "application/mediaservercontrol+xml"],
["mseq", "application/vnd.mseq"],
["msf", "application/vnd.epson.msf"],
["msg", "application/vnd.ms-outlook"],
["msh", "model/mesh"],
["msl", "application/vnd.mobius.msl"],
["msty", "application/vnd.muvee.style"],
["mts", "model/vnd.mts"],
["mus", "application/vnd.musician"],
["musicxml", "application/vnd.recordare.musicxml+xml"],
["mv", "video/x-sgi-movie"],
["mvb", "application/x-msmediaview"],
["mwf", "application/vnd.mfer"],
["mxf", "application/mxf"],
["mxl", "application/vnd.recordare.musicxml"],
["mxml", "application/xv+xml"],
["mxs", "application/vnd.triscape.mxs"],
["mxu", "video/vnd.mpegurl"],
["my", "audio/make"],
["mzz", "application/x-vnd.audioexplosion.mzz"],
["n-gage", "application/vnd.nokia.n-gage.symbian.install"],
["n3", "text/n3"],
["nap", "image/naplps"],
["naplps", "image/naplps"],
["nbp", "application/vnd.wolfram.player"],
["nc", "application/x-netcdf"],
["ncm", "application/vnd.nokia.configuration-message"],
["ncx", "application/x-dtbncx+xml"],
["ngdat", "application/vnd.nokia.n-gage.data"],
["nif", "image/x-niff"],
["niff", "image/x-niff"],
["nix", "application/x-mix-transfer"],
["nlu", "application/vnd.neurolanguage.nlu"],
["nml", "application/vnd.enliven"],
["nnd", "application/vnd.noblenet-directory"],
["nns", "application/vnd.noblenet-sealer"],
["nnw", "application/vnd.noblenet-web"],
["npx", "image/vnd.net-fpx"],
["nsc", "application/x-conference"],
["nsf", "application/vnd.lotus-notes"],
["nvd", "application/x-navidoc"],
["nws", "message/rfc822"],
["o", "application/octet-stream"],
["oa2", "application/vnd.fujitsu.oasys2"],
["oa3", "application/vnd.fujitsu.oasys3"],
["oas", "application/vnd.fujitsu.oasys"],
["obd", "application/x-msbinder"],
["oda", "application/oda"],
["odb", "application/vnd.oasis.opendocument.database"],
["odc", "application/vnd.oasis.opendocument.chart"],
["odf", "application/vnd.oasis.opendocument.formula"],
["odft", "application/vnd.oasis.opendocument.formula-template"],
["odg", "application/vnd.oasis.opendocument.graphics"],
["odi", "application/vnd.oasis.opendocument.image"],
["odm", "application/vnd.oasis.opendocument.text-master"],
["odp", "application/vnd.oasis.opendocument.presentation"],
["ods", "application/vnd.oasis.opendocument.spreadsheet"],
["odt", "application/vnd.oasis.opendocument.text"],
["oga", "audio/ogg"],
["ogv", "video/ogg"],
["ogx", "application/ogg"],
["omc", "application/x-omc"],
["omcd", "application/x-omcdatamaker"],
["omcr", "application/x-omcregerator"],
["onetoc", "application/onenote"],
["opf", "application/oebps-package+xml"],
["org", "application/vnd.lotus-organizer"],
["osf", "application/vnd.yamaha.openscoreformat"],
["osfpvg", "application/vnd.yamaha.openscoreformat.osfpvg+xml"],
["otc", "application/vnd.oasis.opendocument.chart-template"],
["otf", "application/x-font-otf"],
["otg", "application/vnd.oasis.opendocument.graphics-template"],
["oth", "application/vnd.oasis.opendocument.text-web"],
["oti", "application/vnd.oasis.opendocument.image-template"],
["otp", "application/vnd.oasis.opendocument.presentation-template"],
["ots", "application/vnd.oasis.opendocument.spreadsheet-template"],
["ott", "application/vnd.oasis.opendocument.text-template"],
["oxt", "application/vnd.openofficeorg.extension"],
["p", "text/x-pascal"],
["p10", ["application/pkcs10", "application/x-pkcs10"]],
["p12", ["application/pkcs-12", "application/x-pkcs12"]],
["p7a", "application/x-pkcs7-signature"],
["p7b", "application/x-pkcs7-certificates"],
["p7c", ["application/pkcs7-mime", "application/x-pkcs7-mime"]],
["p7m", ["application/pkcs7-mime", "application/x-pkcs7-mime"]],
["p7r", "application/x-pkcs7-certreqresp"],
["p7s", ["application/pkcs7-signature", "application/x-pkcs7-signature"]],
["p8", "application/pkcs8"],
["par", "text/plain-bas"],
["part", "application/pro_eng"],
["pas", "text/pascal"],
["paw", "application/vnd.pawaafile"],
["pbd", "application/vnd.powerbuilder6"],
["pbm", "image/x-portable-bitmap"],
["pcf", "application/x-font-pcf"],
["pcl", ["application/vnd.hp-pcl", "application/x-pcl"]],
["pclxl", "application/vnd.hp-pclxl"],
["pct", "image/x-pict"],
["pcurl", "application/vnd.curl.pcurl"],
["pcx", "image/x-pcx"],
["pdb", ["application/vnd.palm", "chemical/x-pdb"]],
["pdf", "application/pdf"],
["pfa", "application/x-font-type1"],
["pfr", "application/font-tdpfr"],
["pfunk", ["audio/make", "audio/make.my.funk"]],
["pfx", "application/x-pkcs12"],
["pgm", ["image/x-portable-graymap", "image/x-portable-greymap"]],
["pgn", "application/x-chess-pgn"],
["pgp", "application/pgp-signature"],
["pic", ["image/pict", "image/x-pict"]],
["pict", "image/pict"],
["pkg", "application/x-newton-compatible-pkg"],
["pki", "application/pkixcmp"],
["pkipath", "application/pkix-pkipath"],
["pko", ["application/ynd.ms-pkipko", "application/vnd.ms-pki.pko"]],
["pl", ["text/plain", "text/x-script.perl"]],
["plb", "application/vnd.3gpp.pic-bw-large"],
["plc", "application/vnd.mobius.plc"],
["plf", "application/vnd.pocketlearn"],
["pls", "application/pls+xml"],
["plx", "application/x-pixclscript"],
["pm", ["text/x-script.perl-module", "image/x-xpixmap"]],
["pm4", "application/x-pagemaker"],
["pm5", "application/x-pagemaker"],
["pma", "application/x-perfmon"],
["pmc", "application/x-perfmon"],
["pml", ["application/vnd.ctc-posml", "application/x-perfmon"]],
["pmr", "application/x-perfmon"],
["pmw", "application/x-perfmon"],
["png", "image/png"],
["pnm", ["application/x-portable-anymap", "image/x-portable-anymap"]],
["portpkg", "application/vnd.macports.portpkg"],
["pot", ["application/vnd.ms-powerpoint", "application/mspowerpoint"]],
["potm", "application/vnd.ms-powerpoint.template.macroenabled.12"],
["potx", "application/vnd.openxmlformats-officedocument.presentationml.template"],
["pov", "model/x-pov"],
["ppa", "application/vnd.ms-powerpoint"],
["ppam", "application/vnd.ms-powerpoint.addin.macroenabled.12"],
["ppd", "application/vnd.cups-ppd"],
["ppm", "image/x-portable-pixmap"],
["pps", ["application/vnd.ms-powerpoint", "application/mspowerpoint"]],
["ppsm", "application/vnd.ms-powerpoint.slideshow.macroenabled.12"],
["ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"],
["ppt", ["application/vnd.ms-powerpoint", "application/mspowerpoint", "application/powerpoint", "application/x-mspowerpoint"]],
["pptm", "application/vnd.ms-powerpoint.presentation.macroenabled.12"],
["pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"],
["ppz", "application/mspowerpoint"],
["prc", "application/x-mobipocket-ebook"],
["pre", ["application/vnd.lotus-freelance", "application/x-freelance"]],
["prf", "application/pics-rules"],
["prt", "application/pro_eng"],
["ps", "application/postscript"],
["psb", "application/vnd.3gpp.pic-bw-small"],
["psd", ["application/octet-stream", "image/vnd.adobe.photoshop"]],
["psf", "application/x-font-linux-psf"],
["pskcxml", "application/pskc+xml"],
["ptid", "application/vnd.pvi.ptid1"],
["pub", "application/x-mspublisher"],
["pvb", "application/vnd.3gpp.pic-bw-var"],
["pvu", "paleovu/x-pv"],
["pwn", "application/vnd.3m.post-it-notes"],
["pwz", "application/vnd.ms-powerpoint"],
["py", "text/x-script.phyton"],
["pya", "audio/vnd.ms-playready.media.pya"],
["pyc", "application/x-bytecode.python"],
["pyv", "video/vnd.ms-playready.media.pyv"],
["qam", "application/vnd.epson.quickanime"],
["qbo", "application/vnd.intu.qbo"],
["qcp", "audio/vnd.qcelp"],
["qd3", "x-world/x-3dmf"],
["qd3d", "x-world/x-3dmf"],
["qfx", "application/vnd.intu.qfx"],
["qif", "image/x-quicktime"],
["qps", "application/vnd.publishare-delta-tree"],
["qt", "video/quicktime"],
["qtc", "video/x-qtc"],
["qti", "image/x-quicktime"],
["qtif", "image/x-quicktime"],
["qxd", "application/vnd.quark.quarkxpress"],
["ra", ["audio/x-realaudio", "audio/x-pn-realaudio", "audio/x-pn-realaudio-plugin"]],
["ram", "audio/x-pn-realaudio"],
["rar", "application/x-rar-compressed"],
["ras", ["image/cmu-raster", "application/x-cmu-raster", "image/x-cmu-raster"]],
["rast", "image/cmu-raster"],
["rcprofile", "application/vnd.ipunplugged.rcprofile"],
["rdf", "application/rdf+xml"],
["rdz", "application/vnd.data-vision.rdz"],
["rep", "application/vnd.businessobjects"],
["res", "application/x-dtbresource+xml"],
["rexx", "text/x-script.rexx"],
["rf", "image/vnd.rn-realflash"],
["rgb", "image/x-rgb"],
["rif", "application/reginfo+xml"],
["rip", "audio/vnd.rip"],
["rl", "application/resource-lists+xml"],
["rlc", "image/vnd.fujixerox.edmics-rlc"],
["rld", "application/resource-lists-diff+xml"],
["rm", ["application/vnd.rn-realmedia", "audio/x-pn-realaudio"]],
["rmi", "audio/mid"],
["rmm", "audio/x-pn-realaudio"],
["rmp", ["audio/x-pn-realaudio-plugin", "audio/x-pn-realaudio"]],
["rms", "application/vnd.jcp.javame.midlet-rms"],
["rnc", "application/relax-ng-compact-syntax"],
["rng", ["application/ringing-tones", "application/vnd.nokia.ringing-tone"]],
["rnx", "application/vnd.rn-realplayer"],
["roff", "application/x-troff"],
["rp", "image/vnd.rn-realpix"],
["rp9", "application/vnd.cloanto.rp9"],
["rpm", "audio/x-pn-realaudio-plugin"],
["rpss", "application/vnd.nokia.radio-presets"],
["rpst", "application/vnd.nokia.radio-preset"],
["rq", "application/sparql-query"],
["rs", "application/rls-services+xml"],
["rsd", "application/rsd+xml"],
["rt", ["text/richtext", "text/vnd.rn-realtext"]],
["rtf", ["application/rtf", "text/richtext", "application/x-rtf"]],
["rtx", ["text/richtext", "application/rtf"]],
["rv", "video/vnd.rn-realvideo"],
["s", "text/x-asm"],
["s3m", "audio/s3m"],
["saf", "application/vnd.yamaha.smaf-audio"],
["saveme", "application/octet-stream"],
["sbk", "application/x-tbook"],
["sbml", "application/sbml+xml"],
["sc", "application/vnd.ibm.secure-container"],
["scd", "application/x-msschedule"],
["scm", ["application/vnd.lotus-screencam", "video/x-scm", "text/x-script.guile", "application/x-lotusscreencam", "text/x-script.scheme"]],
["scq", "application/scvp-cv-request"],
["scs", "application/scvp-cv-response"],
["sct", "text/scriptlet"],
["scurl", "text/vnd.curl.scurl"],
["sda", "application/vnd.stardivision.draw"],
["sdc", "application/vnd.stardivision.calc"],
["sdd", "application/vnd.stardivision.impress"],
["sdkm", "application/vnd.solent.sdkm+xml"],
["sdml", "text/plain"],
["sdp", ["application/sdp", "application/x-sdp"]],
["sdr", "application/sounder"],
["sdw", "application/vnd.stardivision.writer"],
["sea", ["application/sea", "application/x-sea"]],
["see", "application/vnd.seemail"],
["seed", "application/vnd.fdsn.seed"],
["sema", "application/vnd.sema"],
["semd", "application/vnd.semd"],
["semf", "application/vnd.semf"],
["ser", "application/java-serialized-object"],
["set", "application/set"],
["setpay", "application/set-payment-initiation"],
["setreg", "application/set-registration-initiation"],
["sfd-hdstx", "application/vnd.hydrostatix.sof-data"],
["sfs", "application/vnd.spotfire.sfs"],
["sgl", "application/vnd.stardivision.writer-global"],
["sgm", ["text/sgml", "text/x-sgml"]],
["sgml", ["text/sgml", "text/x-sgml"]],
["sh", ["application/x-shar", "application/x-bsh", "application/x-sh", "text/x-script.sh"]],
["shar", ["application/x-bsh", "application/x-shar"]],
["shf", "application/shf+xml"],
["shtml", ["text/html", "text/x-server-parsed-html"]],
["sid", "audio/x-psid"],
["sis", "application/vnd.symbian.install"],
["sit", ["application/x-stuffit", "application/x-sit"]],
["sitx", "application/x-stuffitx"],
["skd", "application/x-koan"],
["skm", "application/x-koan"],
["skp", ["application/vnd.koan", "application/x-koan"]],
["skt", "application/x-koan"],
["sl", "application/x-seelogo"],
["sldm", "application/vnd.ms-powerpoint.slide.macroenabled.12"],
["sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"],
["slt", "application/vnd.epson.salt"],
["sm", "application/vnd.stepmania.stepchart"],
["smf", "application/vnd.stardivision.math"],
["smi", ["application/smil", "application/smil+xml"]],
["smil", "application/smil"],
["snd", ["audio/basic", "audio/x-adpcm"]],
["snf", "application/x-font-snf"],
["sol", "application/solids"],
["spc", ["text/x-speech", "application/x-pkcs7-certificates"]],
["spf", "application/vnd.yamaha.smaf-phrase"],
["spl", ["application/futuresplash", "application/x-futuresplash"]],
["spot", "text/vnd.in3d.spot"],
["spp", "application/scvp-vp-response"],
["spq", "application/scvp-vp-request"],
["spr", "application/x-sprite"],
["sprite", "application/x-sprite"],
["src", "application/x-wais-source"],
["sru", "application/sru+xml"],
["srx", "application/sparql-results+xml"],
["sse", "application/vnd.kodak-descriptor"],
["ssf", "application/vnd.epson.ssf"],
["ssi", "text/x-server-parsed-html"],
["ssm", "application/streamingmedia"],
["ssml", "application/ssml+xml"],
["sst", ["application/vnd.ms-pkicertstore", "application/vnd.ms-pki.certstore"]],
["st", "application/vnd.sailingtracker.track"],
["stc", "application/vnd.sun.xml.calc.template"],
["std", "application/vnd.sun.xml.draw.template"],
["step", "application/step"],
["stf", "application/vnd.wt.stf"],
["sti", "application/vnd.sun.xml.impress.template"],
["stk", "application/hyperstudio"],
["stl", ["application/vnd.ms-pkistl", "application/sla", "application/vnd.ms-pki.stl", "application/x-navistyle"]],
["stm", "text/html"],
["stp", "application/step"],
["str", "application/vnd.pg.format"],
["stw", "application/vnd.sun.xml.writer.template"],
["sub", "image/vnd.dvb.subtitle"],
["sus", "application/vnd.sus-calendar"],
["sv4cpio", "application/x-sv4cpio"],
["sv4crc", "application/x-sv4crc"],
["svc", "application/vnd.dvb.service"],
["svd", "application/vnd.svd"],
["svf", ["image/vnd.dwg", "image/x-dwg"]],
["svg", "image/svg+xml"],
["svr", ["x-world/x-svr", "application/x-world"]],
["swf", "application/x-shockwave-flash"],
["swi", "application/vnd.aristanetworks.swi"],
["sxc", "application/vnd.sun.xml.calc"],
["sxd", "application/vnd.sun.xml.draw"],
["sxg", "application/vnd.sun.xml.writer.global"],
["sxi", "application/vnd.sun.xml.impress"],
["sxm", "application/vnd.sun.xml.math"],
["sxw", "application/vnd.sun.xml.writer"],
["t", ["text/troff", "application/x-troff"]],
["talk", "text/x-speech"],
["tao", "application/vnd.tao.intent-module-archive"],
["tar", "application/x-tar"],
["tbk", ["application/toolbook", "application/x-tbook"]],
["tcap", "application/vnd.3gpp2.tcap"],
["tcl", ["text/x-script.tcl", "application/x-tcl"]],
["tcsh", "text/x-script.tcsh"],
["teacher", "application/vnd.smart.teacher"],
["tei", "application/tei+xml"],
["tex", "application/x-tex"],
["texi", "application/x-texinfo"],
["texinfo", "application/x-texinfo"],
["text", ["application/plain", "text/plain"]],
["tfi", "application/thraud+xml"],
["tfm", "application/x-tex-tfm"],
["tgz", ["application/gnutar", "application/x-compressed"]],
["thmx", "application/vnd.ms-officetheme"],
["tif", ["image/tiff", "image/x-tiff"]],
["tiff", ["image/tiff", "image/x-tiff"]],
["tmo", "application/vnd.tmobile-livetv"],
["torrent", "application/x-bittorrent"],
["tpl", "application/vnd.groove-tool-template"],
["tpt", "application/vnd.trid.tpt"],
["tr", "application/x-troff"],
["tra", "application/vnd.trueapp"],
["trm", "application/x-msterminal"],
["tsd", "application/timestamped-data"],
["tsi", "audio/tsp-audio"],
["tsp", ["application/dsptype", "audio/tsplayer"]],
["tsv", "text/tab-separated-values"],
["ttf", "application/x-font-ttf"],
["ttl", "text/turtle"],
["turbot", "image/florian"],
["twd", "application/vnd.simtech-mindmapper"],
["txd", "application/vnd.genomatix.tuxedo"],
["txf", "application/vnd.mobius.txf"],
["txt", "text/plain"],
["ufd", "application/vnd.ufdl"],
["uil", "text/x-uil"],
["uls", "text/iuls"],
["umj", "application/vnd.umajin"],
["uni", "text/uri-list"],
["unis", "text/uri-list"],
["unityweb", "application/vnd.unity"],
["unv", "application/i-deas"],
["uoml", "application/vnd.uoml+xml"],
["uri", "text/uri-list"],
["uris", "text/uri-list"],
["ustar", ["application/x-ustar", "multipart/x-ustar"]],
["utz", "application/vnd.uiq.theme"],
["uu", ["application/octet-stream", "text/x-uuencode"]],
["uue", "text/x-uuencode"],
["uva", "audio/vnd.dece.audio"],
["uvh", "video/vnd.dece.hd"],
["uvi", "image/vnd.dece.graphic"],
["uvm", "video/vnd.dece.mobile"],
["uvp", "video/vnd.dece.pd"],
["uvs", "video/vnd.dece.sd"],
["uvu", "video/vnd.uvvu.mp4"],
["uvv", "video/vnd.dece.video"],
["vcd", "application/x-cdlink"],
["vcf", "text/x-vcard"],
["vcg", "application/vnd.groove-vcard"],
["vcs", "text/x-vcalendar"],
["vcx", "application/vnd.vcx"],
["vda", "application/vda"],
["vdo", "video/vdo"],
["vew", "application/groupwise"],
["vis", "application/vnd.visionary"],
["viv", ["video/vivo", "video/vnd.vivo"]],
["vivo", ["video/vivo", "video/vnd.vivo"]],
["vmd", "application/vocaltec-media-desc"],
["vmf", "application/vocaltec-media-file"],
["voc", ["audio/voc", "audio/x-voc"]],
["vos", "video/vosaic"],
["vox", "audio/voxware"],
["vqe", "audio/x-twinvq-plugin"],
["vqf", "audio/x-twinvq"],
["vql", "audio/x-twinvq-plugin"],
["vrml", ["model/vrml", "x-world/x-vrml", "application/x-vrml"]],
["vrt", "x-world/x-vrt"],
["vsd", ["application/vnd.visio", "application/x-visio"]],
["vsf", "application/vnd.vsf"],
["vst", "application/x-visio"],
["vsw", "application/x-visio"],
["vtu", "model/vnd.vtu"],
["vxml", "application/voicexml+xml"],
["w60", "application/wordperfect6.0"],
["w61", "application/wordperfect6.1"],
["w6w", "application/msword"],
["wad", "application/x-doom"],
["wav", ["audio/wav", "audio/x-wav"]],
["wax", "audio/x-ms-wax"],
["wb1", "application/x-qpro"],
["wbmp", "image/vnd.wap.wbmp"],
["wbs", "application/vnd.criticaltools.wbs+xml"],
["wbxml", "application/vnd.wap.wbxml"],
["wcm", "application/vnd.ms-works"],
["wdb", "application/vnd.ms-works"],
["web", "application/vnd.xara"],
["weba", "audio/webm"],
["webm", "video/webm"],
["webp", "image/webp"],
["wg", "application/vnd.pmi.widget"],
["wgt", "application/widget"],
["wiz", "application/msword"],
["wk1", "application/x-123"],
["wks", "application/vnd.ms-works"],
["wm", "video/x-ms-wm"],
["wma", "audio/x-ms-wma"],
["wmd", "application/x-ms-wmd"],
["wmf", ["windows/metafile", "application/x-msmetafile"]],
["wml", "text/vnd.wap.wml"],
["wmlc", "application/vnd.wap.wmlc"],
["wmls", "text/vnd.wap.wmlscript"],
["wmlsc", "application/vnd.wap.wmlscriptc"],
["wmv", "video/x-ms-wmv"],
["wmx", "video/x-ms-wmx"],
["wmz", "application/x-ms-wmz"],
["woff", "application/x-font-woff"],
["word", "application/msword"],
["wp", "application/wordperfect"],
["wp5", ["application/wordperfect", "application/wordperfect6.0"]],
["wp6", "application/wordperfect"],
["wpd", ["application/wordperfect", "application/vnd.wordperfect", "application/x-wpwin"]],
["wpl", "application/vnd.ms-wpl"],
["wps", "application/vnd.ms-works"],
["wq1", "application/x-lotus"],
["wqd", "application/vnd.wqd"],
["wri", ["application/mswrite", "application/x-wri", "application/x-mswrite"]],
["wrl", ["model/vrml", "x-world/x-vrml", "application/x-world"]],
["wrz", ["model/vrml", "x-world/x-vrml"]],
["wsc", "text/scriplet"],
["wsdl", "application/wsdl+xml"],
["wspolicy", "application/wspolicy+xml"],
["wsrc", "application/x-wais-source"],
["wtb", "application/vnd.webturbo"],
["wtk", "application/x-wintalk"],
["wvx", "video/x-ms-wvx"],
["x-png", "image/png"],
["x3d", "application/vnd.hzn-3d-crossword"],
["xaf", "x-world/x-vrml"],
["xap", "application/x-silverlight-app"],
["xar", "application/vnd.xara"],
["xbap", "application/x-ms-xbap"],
["xbd", "application/vnd.fujixerox.docuworks.binder"],
["xbm", ["image/xbm", "image/x-xbm", "image/x-xbitmap"]],
["xdf", "application/xcap-diff+xml"],
["xdm", "application/vnd.syncml.dm+xml"],
["xdp", "application/vnd.adobe.xdp+xml"],
["xdr", "video/x-amt-demorun"],
["xdssc", "application/dssc+xml"],
["xdw", "application/vnd.fujixerox.docuworks"],
["xenc", "application/xenc+xml"],
["xer", "application/patch-ops-error+xml"],
["xfdf", "application/vnd.adobe.xfdf"],
["xfdl", "application/vnd.xfdl"],
["xgz", "xgl/drawing"],
["xhtml", "application/xhtml+xml"],
["xif", "image/vnd.xiff"],
["xl", "application/excel"],
["xla", ["application/vnd.ms-excel", "application/excel", "application/x-msexcel", "application/x-excel"]],
["xlam", "application/vnd.ms-excel.addin.macroenabled.12"],
["xlb", ["application/excel", "application/vnd.ms-excel", "application/x-excel"]],
["xlc", ["application/vnd.ms-excel", "application/excel", "application/x-excel"]],
["xld", ["application/excel", "application/x-excel"]],
["xlk", ["application/excel", "application/x-excel"]],
["xll", ["application/excel", "application/vnd.ms-excel", "application/x-excel"]],
["xlm", ["application/vnd.ms-excel", "application/excel", "application/x-excel"]],
["xls", ["application/vnd.ms-excel", "application/excel", "application/x-msexcel", "application/x-excel"]],
["xlsb", "application/vnd.ms-excel.sheet.binary.macroenabled.12"],
["xlsm", "application/vnd.ms-excel.sheet.macroenabled.12"],
["xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
["xlt", ["application/vnd.ms-excel", "application/excel", "application/x-excel"]],
["xltm", "application/vnd.ms-excel.template.macroenabled.12"],
["xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"],
["xlv", ["application/excel", "application/x-excel"]],
["xlw", ["application/vnd.ms-excel", "application/excel", "application/x-msexcel", "application/x-excel"]],
["xm", "audio/xm"],
["xml", ["application/xml", "text/xml", "application/atom+xml", "application/rss+xml"]],
["xmz", "xgl/movie"],
["xo", "application/vnd.olpc-sugar"],
["xof", "x-world/x-vrml"],
["xop", "application/xop+xml"],
["xpi", "application/x-xpinstall"],
["xpix", "application/x-vnd.ls-xpix"],
["xpm", ["image/xpm", "image/x-xpixmap"]],
["xpr", "application/vnd.is-xpr"],
["xps", "application/vnd.ms-xpsdocument"],
["xpw", "application/vnd.intercon.formnet"],
["xslt", "application/xslt+xml"],
["xsm", "application/vnd.syncml+xml"],
["xspf", "application/xspf+xml"],
["xsr", "video/x-amt-showrun"],
["xul", "application/vnd.mozilla.xul+xml"],
["xwd", ["image/x-xwd", "image/x-xwindowdump"]],
["xyz", ["chemical/x-xyz", "chemical/x-pdb"]],
["yang", "application/yang"],
["yin", "application/yin+xml"],
["z", ["application/x-compressed", "application/x-compress"]],
["zaz", "application/vnd.zzazz.deck+xml"],
["zip", ["application/zip", "multipart/x-zip", "application/x-zip-compressed", "application/x-compressed"]],
["zir", "application/vnd.zul"],
["zmm", "application/vnd.handheld-entertainment+xml"],
["zoo", "application/octet-stream"],
["zsh", "text/x-script.zsh"]
]);
module.exports = {
detectMimeType(filename) {
if (!filename) {
return defaultMimeType;
}
let parsed = path11.parse(filename);
let extension = (parsed.ext.substr(1) || parsed.name || "").split("?").shift().trim().toLowerCase();
let value = defaultMimeType;
if (extensions.has(extension)) {
value = extensions.get(extension);
}
if (Array.isArray(value)) {
return value[0];
}
return value;
},
detectExtension(mimeType) {
if (!mimeType) {
return defaultExtension;
}
let parts = (mimeType || "").toLowerCase().trim().split("/");
let rootType = parts.shift().trim();
let subType = parts.join("/").trim();
if (mimeTypes.has(rootType + "/" + subType)) {
let value = mimeTypes.get(rootType + "/" + subType);
if (Array.isArray(value)) {
return value[0];
}
return value;
}
switch (rootType) {
case "text":
return "txt";
default:
return "bin";
}
}
};
});
// node_modules/nodemailer/lib/punycode/index.js
var require_punycode = __commonJS((exports, module) => {
var maxInt = 2147483647;
var base = 36;
var tMin = 1;
var tMax = 26;
var skew = 38;
var damp = 700;
var initialBias = 72;
var initialN = 128;
var delimiter = "-";
var regexPunycode = /^xn--/;
var regexNonASCII = /[^\0-\x7F]/;
var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g;
var errors = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
};
var baseMinusTMin = base - tMin;
var floor = Math.floor;
var stringFromCharCode = String.fromCharCode;
function error(type) {
throw new RangeError(errors[type]);
}
function map(array, callback) {
const result = [];
let length = array.length;
while (length--) {
result[length] = callback(array[length]);
}
return result;
}
function mapDomain(domain, callback) {
const parts = domain.split("@");
let result = "";
if (parts.length > 1) {
result = parts[0] + "@";
domain = parts[1];
}
domain = domain.replace(regexSeparators, ".");
const labels = domain.split(".");
const encoded = map(labels, callback).join(".");
return result + encoded;
}
function ucs2decode(string) {
const output = [];
let counter = 0;
const length = string.length;
while (counter < length) {
const value = string.charCodeAt(counter++);
if (value >= 55296 && value <= 56319 && counter < length) {
const extra = string.charCodeAt(counter++);
if ((extra & 64512) == 56320) {
output.push(((value & 1023) << 10) + (extra & 1023) + 65536);
} else {
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
var ucs2encode = (codePoints) => String.fromCodePoint(...codePoints);
var basicToDigit = function(codePoint) {
if (codePoint >= 48 && codePoint < 58) {
return 26 + (codePoint - 48);
}
if (codePoint >= 65 && codePoint < 91) {
return codePoint - 65;
}
if (codePoint >= 97 && codePoint < 123) {
return codePoint - 97;
}
return base;
};
var digitToBasic = function(digit, flag) {
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
};
var adapt = function(delta, numPoints, firstTime) {
let k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (;delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
};
var decode = function(input) {
const output = [];
const inputLength = input.length;
let i = 0;
let n = initialN;
let bias = initialBias;
let basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (let j = 0;j < basic; ++j) {
if (input.charCodeAt(j) >= 128) {
error("not-basic");
}
output.push(input.charCodeAt(j));
}
for (let index = basic > 0 ? basic + 1 : 0;index < inputLength; ) {
const oldi = i;
for (let w = 1, k = base;; k += base) {
if (index >= inputLength) {
error("invalid-input");
}
const digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base) {
error("invalid-input");
}
if (digit > floor((maxInt - i) / w)) {
error("overflow");
}
i += digit * w;
const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
if (digit < t) {
break;
}
const baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error("overflow");
}
w *= baseMinusT;
}
const out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
if (floor(i / out) > maxInt - n) {
error("overflow");
}
n += floor(i / out);
i %= out;
output.splice(i++, 0, n);
}
return String.fromCodePoint(...output);
};
var encode = function(input) {
const output = [];
input = ucs2decode(input);
const inputLength = input.length;
let n = initialN;
let delta = 0;
let bias = initialBias;
for (const currentValue of input) {
if (currentValue < 128) {
output.push(stringFromCharCode(currentValue));
}
}
const basicLength = output.length;
let handledCPCount = basicLength;
if (basicLength) {
output.push(delimiter);
}
while (handledCPCount < inputLength) {
let m = maxInt;
for (const currentValue of input) {
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
const handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error("overflow");
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (const currentValue of input) {
if (currentValue < n && ++delta > maxInt) {
error("overflow");
}
if (currentValue === n) {
let q = delta;
for (let k = base;; k += base) {
const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
if (q < t) {
break;
}
const qMinusT = q - t;
const baseMinusT = base - t;
output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join("");
};
var toUnicode = function(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;
});
};
var toASCII = function(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string) ? "xn--" + encode(string) : string;
});
};
var punycode = {
version: "2.3.1",
ucs2: {
decode: ucs2decode,
encode: ucs2encode
},
decode,
encode,
toASCII,
toUnicode
};
module.exports = punycode;
});
// node_modules/nodemailer/lib/base64/index.js
var require_base642 = __commonJS((exports, module) => {
var Transform = __require("stream").Transform;
function encode(buffer) {
if (typeof buffer === "string") {
buffer = Buffer.from(buffer, "utf-8");
}
return buffer.toString("base64");
}
function wrap(str, lineLength) {
str = (str || "").toString();
lineLength = lineLength || 76;
if (str.length <= lineLength) {
return str;
}
let result = [];
let pos = 0;
let chunkLength = lineLength * 1024;
while (pos < str.length) {
let wrappedLines = str.substr(pos, chunkLength).replace(new RegExp(".{" + lineLength + "}", "g"), "$&\r\n").trim();
result.push(wrappedLines);
pos += chunkLength;
}
return result.join("\r\n").trim();
}
class Encoder extends Transform {
constructor(options) {
super();
this.options = options || {};
if (this.options.lineLength !== false) {
this.options.lineLength = this.options.lineLength || 76;
}
this._curLine = "";
this._remainingBytes = false;
this.inputBytes = 0;
this.outputBytes = 0;
}
_transform(chunk, encoding, done) {
if (encoding !== "buffer") {
chunk = Buffer.from(chunk, encoding);
}
if (!chunk || !chunk.length) {
return setImmediate(done);
}
this.inputBytes += chunk.length;
if (this._remainingBytes && this._remainingBytes.length) {
chunk = Buffer.concat([this._remainingBytes, chunk], this._remainingBytes.length + chunk.length);
this._remainingBytes = false;
}
if (chunk.length % 3) {
this._remainingBytes = chunk.slice(chunk.length - chunk.length % 3);
chunk = chunk.slice(0, chunk.length - chunk.length % 3);
} else {
this._remainingBytes = false;
}
let b64 = this._curLine + encode(chunk);
if (this.options.lineLength) {
b64 = wrap(b64, this.options.lineLength);
let lastLF = b64.lastIndexOf("\n");
if (lastLF < 0) {
this._curLine = b64;
b64 = "";
} else if (lastLF === b64.length - 1) {
this._curLine = "";
} else {
this._curLine = b64.substr(lastLF + 1);
b64 = b64.substr(0, lastLF + 1);
}
}
if (b64) {
this.outputBytes += b64.length;
this.push(Buffer.from(b64, "ascii"));
}
setImmediate(done);
}
_flush(done) {
if (this._remainingBytes && this._remainingBytes.length) {
this._curLine += encode(this._remainingBytes);
}
if (this._curLine) {
this._curLine = wrap(this._curLine, this.options.lineLength);
this.outputBytes += this._curLine.length;
this.push(this._curLine, "ascii");
this._curLine = "";
}
done();
}
}
module.exports = {
encode,
wrap,
Encoder
};
});
// node_modules/nodemailer/lib/qp/index.js
var require_qp = __commonJS((exports, module) => {
var Transform = __require("stream").Transform;
function encode(buffer) {
if (typeof buffer === "string") {
buffer = Buffer.from(buffer, "utf-8");
}
let ranges = [
[9],
[10],
[13],
[32, 60],
[62, 126]
];
let result = "";
let ord;
for (let i = 0, len = buffer.length;i < len; i++) {
ord = buffer[i];
if (checkRanges(ord, ranges) && !((ord === 32 || ord === 9) && (i === len - 1 || buffer[i + 1] === 10 || buffer[i + 1] === 13))) {
result += String.fromCharCode(ord);
continue;
}
result += "=" + (ord < 16 ? "0" : "") + ord.toString(16).toUpperCase();
}
return result;
}
function wrap(str, lineLength) {
str = (str || "").toString();
lineLength = lineLength || 76;
if (str.length <= lineLength) {
return str;
}
let pos = 0;
let len = str.length;
let match, code, line;
let lineMargin = Math.floor(lineLength / 3);
let result = "";
while (pos < len) {
line = str.substr(pos, lineLength);
if (match = line.match(/\r\n/)) {
line = line.substr(0, match.index + match[0].length);
result += line;
pos += line.length;
continue;
}
if (line.substr(-1) === "\n") {
result += line;
pos += line.length;
continue;
} else if (match = line.substr(-lineMargin).match(/\n.*?$/)) {
line = line.substr(0, line.length - (match[0].length - 1));
result += line;
pos += line.length;
continue;
} else if (line.length > lineLength - lineMargin && (match = line.substr(-lineMargin).match(/[ \t.,!?][^ \t.,!?]*$/))) {
line = line.substr(0, line.length - (match[0].length - 1));
} else if (line.match(/[=][\da-f]{0,2}$/i)) {
if (match = line.match(/[=][\da-f]{0,1}$/i)) {
line = line.substr(0, line.length - match[0].length);
}
while (line.length > 3 && line.length < len - pos && !line.match(/^(?:=[\da-f]{2}){1,4}$/i) && (match = line.match(/[=][\da-f]{2}$/gi))) {
code = parseInt(match[0].substr(1, 2), 16);
if (code < 128) {
break;
}
line = line.substr(0, line.length - 3);
if (code >= 192) {
break;
}
}
}
if (pos + line.length < len && line.substr(-1) !== "\n") {
if (line.length === lineLength && line.match(/[=][\da-f]{2}$/i)) {
line = line.substr(0, line.length - 3);
} else if (line.length === lineLength) {
line = line.substr(0, line.length - 1);
}
pos += line.length;
line += "=\r\n";
} else {
pos += line.length;
}
result += line;
}
return result;
}
function checkRanges(nr, ranges) {
for (let i = ranges.length - 1;i >= 0; i--) {
if (!ranges[i].length) {
continue;
}
if (ranges[i].length === 1 && nr === ranges[i][0]) {
return true;
}
if (ranges[i].length === 2 && nr >= ranges[i][0] && nr <= ranges[i][1]) {
return true;
}
}
return false;
}
class Encoder extends Transform {
constructor(options) {
super();
this.options = options || {};
if (this.options.lineLength !== false) {
this.options.lineLength = this.options.lineLength || 76;
}
this._curLine = "";
this.inputBytes = 0;
this.outputBytes = 0;
}
_transform(chunk, encoding, done) {
let qp;
if (encoding !== "buffer") {
chunk = Buffer.from(chunk, encoding);
}
if (!chunk || !chunk.length) {
return done();
}
this.inputBytes += chunk.length;
if (this.options.lineLength) {
qp = this._curLine + encode(chunk);
qp = wrap(qp, this.options.lineLength);
qp = qp.replace(/(^|\n)([^\n]*)$/, (match, lineBreak, lastLine) => {
this._curLine = lastLine;
return lineBreak;
});
if (qp) {
this.outputBytes += qp.length;
this.push(qp);
}
} else {
qp = encode(chunk);
this.outputBytes += qp.length;
this.push(qp, "ascii");
}
done();
}
_flush(done) {
if (this._curLine) {
this.outputBytes += this._curLine.length;
this.push(this._curLine, "ascii");
}
done();
}
}
module.exports = {
encode,
wrap,
Encoder
};
});
// node_modules/nodemailer/lib/mime-funcs/index.js
var require_mime_funcs = __commonJS((exports, module) => {
var base64 = require_base642();
var qp = require_qp();
var mimeTypes = require_mime_types();
module.exports = {
isPlainText(value, isParam) {
const re = isParam ? /[\x00-\x08\x0b\x0c\x0e-\x1f"\u0080-\uFFFF]/ : /[\x00-\x08\x0b\x0c\x0e-\x1f\u0080-\uFFFF]/;
if (typeof value !== "string" || re.test(value)) {
return false;
} else {
return true;
}
},
hasLongerLines(str, lineLength) {
if (str.length > 128 * 1024) {
return true;
}
return new RegExp("^.{" + (lineLength + 1) + ",}", "m").test(str);
},
encodeWord(data, mimeWordEncoding, maxLength) {
mimeWordEncoding = (mimeWordEncoding || "Q").toString().toUpperCase().trim().charAt(0);
maxLength = maxLength || 0;
let encodedStr;
let toCharset = "UTF-8";
if (maxLength && maxLength > 7 + toCharset.length) {
maxLength -= 7 + toCharset.length;
}
if (mimeWordEncoding === "Q") {
encodedStr = qp.encode(data).replace(/[^a-z0-9!*+\-/=]/gi, (chr) => {
let ord = chr.charCodeAt(0).toString(16).toUpperCase();
if (chr === " ") {
return "_";
} else {
return "=" + (ord.length === 1 ? "0" + ord : ord);
}
});
} else if (mimeWordEncoding === "B") {
encodedStr = typeof data === "string" ? data : base64.encode(data);
maxLength = maxLength ? Math.max(3, (maxLength - maxLength % 4) / 4 * 3) : 0;
}
if (maxLength && (mimeWordEncoding !== "B" ? encodedStr : base64.encode(data)).length > maxLength) {
if (mimeWordEncoding === "Q") {
encodedStr = this.splitMimeEncodedString(encodedStr, maxLength).join("?= =?" + toCharset + "?" + mimeWordEncoding + "?");
} else {
let parts = [];
let lpart = "";
for (let i = 0, len = encodedStr.length;i < len; i++) {
let chr = encodedStr.charAt(i);
if (/[\ud83c\ud83d\ud83e]/.test(chr) && i < len - 1) {
chr += encodedStr.charAt(++i);
}
if (Buffer.byteLength(lpart + chr) <= maxLength || i === 0) {
lpart += chr;
} else {
parts.push(base64.encode(lpart));
lpart = chr;
}
}
if (lpart) {
parts.push(base64.encode(lpart));
}
if (parts.length > 1) {
encodedStr = parts.join("?= =?" + toCharset + "?" + mimeWordEncoding + "?");
} else {
encodedStr = parts.join("");
}
}
} else if (mimeWordEncoding === "B") {
encodedStr = base64.encode(data);
}
return "=?" + toCharset + "?" + mimeWordEncoding + "?" + encodedStr + (encodedStr.substr(-2) === "?=" ? "" : "?=");
},
encodeWords(value, mimeWordEncoding, maxLength, encodeAll) {
maxLength = maxLength || 0;
let encodedValue;
let firstMatch = value.match(/(?:^|\s)([^\s]*["\u0080-\uFFFF])/);
if (!firstMatch) {
return value;
}
if (encodeAll) {
return this.encodeWord(value, mimeWordEncoding, maxLength);
}
let lastMatch = value.match(/(["\u0080-\uFFFF][^\s]*)[^"\u0080-\uFFFF]*$/);
if (!lastMatch) {
return value;
}
let startIndex = firstMatch.index + (firstMatch[0].match(/[^\s]/) || {
index: 0
}).index;
let endIndex = lastMatch.index + (lastMatch[1] || "").length;
encodedValue = (startIndex ? value.substr(0, startIndex) : "") + this.encodeWord(value.substring(startIndex, endIndex), mimeWordEncoding || "Q", maxLength) + (endIndex < value.length ? value.substr(endIndex) : "");
return encodedValue;
},
buildHeaderValue(structured) {
let paramsArray = [];
Object.keys(structured.params || {}).forEach((param) => {
let value = structured.params[param];
if (!this.isPlainText(value, true) || value.length >= 75) {
this.buildHeaderParam(param, value, 50).forEach((encodedParam) => {
if (!/[\s"\\;:/=(),<>@[\]?]|^[-']|'$/.test(encodedParam.value) || encodedParam.key.substr(-1) === "*") {
paramsArray.push(encodedParam.key + "=" + encodedParam.value);
} else {
paramsArray.push(encodedParam.key + "=" + JSON.stringify(encodedParam.value));
}
});
} else if (/[\s'"\\;:/=(),<>@[\]?]|^-/.test(value)) {
paramsArray.push(param + "=" + JSON.stringify(value));
} else {
paramsArray.push(param + "=" + value);
}
});
return structured.value + (paramsArray.length ? "; " + paramsArray.join("; ") : "");
},
buildHeaderParam(key, data, maxLength) {
let list = [];
let encodedStr = typeof data === "string" ? data : (data || "").toString();
let encodedStrArr;
let chr, ord;
let line;
let startPos = 0;
let i, len;
maxLength = maxLength || 50;
if (this.isPlainText(data, true)) {
if (encodedStr.length <= maxLength) {
return [
{
key,
value: encodedStr
}
];
}
encodedStr = encodedStr.replace(new RegExp(".{" + maxLength + "}", "g"), (str) => {
list.push({
line: str
});
return "";
});
if (encodedStr) {
list.push({
line: encodedStr
});
}
} else {
if (/[\uD800-\uDBFF]/.test(encodedStr)) {
encodedStrArr = [];
for (i = 0, len = encodedStr.length;i < len; i++) {
chr = encodedStr.charAt(i);
ord = chr.charCodeAt(0);
if (ord >= 55296 && ord <= 56319 && i < len - 1) {
chr += encodedStr.charAt(i + 1);
encodedStrArr.push(chr);
i++;
} else {
encodedStrArr.push(chr);
}
}
encodedStr = encodedStrArr;
}
line = "utf-8''";
let encoded = true;
startPos = 0;
for (i = 0, len = encodedStr.length;i < len; i++) {
chr = encodedStr[i];
if (encoded) {
chr = this.safeEncodeURIComponent(chr);
} else {
chr = chr === " " ? chr : this.safeEncodeURIComponent(chr);
if (chr !== encodedStr[i]) {
if ((this.safeEncodeURIComponent(line) + chr).length >= maxLength) {
list.push({
line,
encoded
});
line = "";
startPos = i - 1;
} else {
encoded = true;
i = startPos;
line = "";
continue;
}
}
}
if ((line + chr).length >= maxLength) {
list.push({
line,
encoded
});
line = chr = encodedStr[i] === " " ? " " : this.safeEncodeURIComponent(encodedStr[i]);
if (chr === encodedStr[i]) {
encoded = false;
startPos = i - 1;
} else {
encoded = true;
}
} else {
line += chr;
}
}
if (line) {
list.push({
line,
encoded
});
}
}
return list.map((item, i2) => ({
key: key + "*" + i2 + (item.encoded ? "*" : ""),
value: item.line
}));
},
parseHeaderValue(str) {
let response = {
value: false,
params: {}
};
let key = false;
let value = "";
let type = "value";
let quote = false;
let escaped = false;
let chr;
for (let i = 0, len = str.length;i < len; i++) {
chr = str.charAt(i);
if (type === "key") {
if (chr === "=") {
key = value.trim().toLowerCase();
type = "value";
value = "";
continue;
}
value += chr;
} else {
if (escaped) {
value += chr;
} else if (chr === "\\") {
escaped = true;
continue;
} else if (quote && chr === quote) {
quote = false;
} else if (!quote && chr === '"') {
quote = chr;
} else if (!quote && chr === ";") {
if (key === false) {
response.value = value.trim();
} else {
response.params[key] = value.trim();
}
type = "key";
value = "";
} else {
value += chr;
}
escaped = false;
}
}
if (type === "value") {
if (key === false) {
response.value = value.trim();
} else {
response.params[key] = value.trim();
}
} else if (value.trim()) {
response.params[value.trim().toLowerCase()] = "";
}
Object.keys(response.params).forEach((key2) => {
let actualKey, nr, match, value2;
if (match = key2.match(/(\*(\d+)|\*(\d+)\*|\*)$/)) {
actualKey = key2.substr(0, match.index);
nr = Number(match[2] || match[3]) || 0;
if (!response.params[actualKey] || typeof response.params[actualKey] !== "object") {
response.params[actualKey] = {
charset: false,
values: []
};
}
value2 = response.params[key2];
if (nr === 0 && match[0].substr(-1) === "*" && (match = value2.match(/^([^']*)'[^']*'(.*)$/))) {
response.params[actualKey].charset = match[1] || "iso-8859-1";
value2 = match[2];
}
response.params[actualKey].values[nr] = value2;
delete response.params[key2];
}
});
Object.keys(response.params).forEach((key2) => {
let value2;
if (response.params[key2] && Array.isArray(response.params[key2].values)) {
value2 = response.params[key2].values.map((val) => val || "").join("");
if (response.params[key2].charset) {
response.params[key2] = "=?" + response.params[key2].charset + "?Q?" + value2.replace(/[=?_\s]/g, (s) => {
let c = s.charCodeAt(0).toString(16);
if (s === " ") {
return "_";
} else {
return "%" + (c.length < 2 ? "0" : "") + c;
}
}).replace(/%/g, "=") + "?=";
} else {
response.params[key2] = value2;
}
}
});
return response;
},
detectExtension: (mimeType) => mimeTypes.detectExtension(mimeType),
detectMimeType: (extension) => mimeTypes.detectMimeType(extension),
foldLines(str, lineLength, afterSpace) {
str = (str || "").toString();
lineLength = lineLength || 76;
let pos = 0, len = str.length, result = "", line, match;
while (pos < len) {
line = str.substr(pos, lineLength);
if (line.length < lineLength) {
result += line;
break;
}
if (match = line.match(/^[^\n\r]*(\r?\n|\r)/)) {
line = match[0];
result += line;
pos += line.length;
continue;
} else if ((match = line.match(/(\s+)[^\s]*$/)) && match[0].length - (afterSpace ? (match[1] || "").length : 0) < line.length) {
line = line.substr(0, line.length - (match[0].length - (afterSpace ? (match[1] || "").length : 0)));
} else if (match = str.substr(pos + line.length).match(/^[^\s]+(\s*)/)) {
line = line + match[0].substr(0, match[0].length - (!afterSpace ? (match[1] || "").length : 0));
}
result += line;
pos += line.length;
if (pos < len) {
result += "\r\n";
}
}
return result;
},
splitMimeEncodedString: (str, maxlen) => {
let curLine, match, chr, done, lines = [];
maxlen = Math.max(maxlen || 0, 12);
while (str.length) {
curLine = str.substr(0, maxlen);
if (match = curLine.match(/[=][0-9A-F]?$/i)) {
curLine = curLine.substr(0, match.index);
}
done = false;
while (!done) {
done = true;
if (match = str.substr(curLine.length).match(/^[=]([0-9A-F]{2})/i)) {
chr = parseInt(match[1], 16);
if (chr < 194 && chr > 127) {
curLine = curLine.substr(0, curLine.length - 3);
done = false;
}
}
}
if (curLine.length) {
lines.push(curLine);
}
str = str.substr(curLine.length);
}
return lines;
},
encodeURICharComponent: (chr) => {
let res = "";
let ord = chr.charCodeAt(0).toString(16).toUpperCase();
if (ord.length % 2) {
ord = "0" + ord;
}
if (ord.length > 2) {
for (let i = 0, len = ord.length / 2;i < len; i++) {
res += "%" + ord.substr(i, 2);
}
} else {
res += "%" + ord;
}
return res;
},
safeEncodeURIComponent(str) {
str = (str || "").toString();
try {
str = encodeURIComponent(str);
} catch (E) {
return str.replace(/[^\x00-\x1F *'()<>@,;:\\"[\]?=\u007F-\uFFFF]+/g, "");
}
return str.replace(/[\x00-\x1F *'()<>@,;:\\"[\]?=\u007F-\uFFFF]/g, (chr) => this.encodeURICharComponent(chr));
}
};
});
// node_modules/nodemailer/lib/addressparser/index.js
var require_addressparser = __commonJS((exports, module) => {
function _handleAddress(tokens) {
let token;
let isGroup = false;
let state = "text";
let address;
let addresses = [];
let data = {
address: [],
comment: [],
group: [],
text: []
};
let i;
let len;
for (i = 0, len = tokens.length;i < len; i++) {
token = tokens[i];
if (token.type === "operator") {
switch (token.value) {
case "<":
state = "address";
break;
case "(":
state = "comment";
break;
case ":":
state = "group";
isGroup = true;
break;
default:
state = "text";
}
} else if (token.value) {
if (state === "address") {
token.value = token.value.replace(/^[^<]*<\s*/, "");
}
data[state].push(token.value);
}
}
if (!data.text.length && data.comment.length) {
data.text = data.comment;
data.comment = [];
}
if (isGroup) {
data.text = data.text.join(" ");
addresses.push({
name: data.text || address && address.name,
group: data.group.length ? addressparser(data.group.join(",")) : []
});
} else {
if (!data.address.length && data.text.length) {
for (i = data.text.length - 1;i >= 0; i--) {
if (data.text[i].match(/^[^@\s]+@[^@\s]+$/)) {
data.address = data.text.splice(i, 1);
break;
}
}
let _regexHandler = function(address2) {
if (!data.address.length) {
data.address = [address2.trim()];
return " ";
} else {
return address2;
}
};
if (!data.address.length) {
for (i = data.text.length - 1;i >= 0; i--) {
data.text[i] = data.text[i].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/, _regexHandler).trim();
if (data.address.length) {
break;
}
}
}
}
if (!data.text.length && data.comment.length) {
data.text = data.comment;
data.comment = [];
}
if (data.address.length > 1) {
data.text = data.text.concat(data.address.splice(1));
}
data.text = data.text.join(" ");
data.address = data.address.join(" ");
if (!data.address && isGroup) {
return [];
} else {
address = {
address: data.address || data.text || "",
name: data.text || data.address || ""
};
if (address.address === address.name) {
if ((address.address || "").match(/@/)) {
address.name = "";
} else {
address.address = "";
}
}
addresses.push(address);
}
}
return addresses;
}
class Tokenizer {
constructor(str) {
this.str = (str || "").toString();
this.operatorCurrent = "";
this.operatorExpecting = "";
this.node = null;
this.escaped = false;
this.list = [];
this.operators = {
'"': '"',
"(": ")",
"<": ">",
",": "",
":": ";",
";": ""
};
}
tokenize() {
let chr, list = [];
for (let i = 0, len = this.str.length;i < len; i++) {
chr = this.str.charAt(i);
this.checkChar(chr);
}
this.list.forEach((node) => {
node.value = (node.value || "").toString().trim();
if (node.value) {
list.push(node);
}
});
return list;
}
checkChar(chr) {
if (this.escaped) {
} else if (chr === this.operatorExpecting) {
this.node = {
type: "operator",
value: chr
};
this.list.push(this.node);
this.node = null;
this.operatorExpecting = "";
this.escaped = false;
return;
} else if (!this.operatorExpecting && chr in this.operators) {
this.node = {
type: "operator",
value: chr
};
this.list.push(this.node);
this.node = null;
this.operatorExpecting = this.operators[chr];
this.escaped = false;
return;
} else if (['"', "'"].includes(this.operatorExpecting) && chr === "\\") {
this.escaped = true;
return;
}
if (!this.node) {
this.node = {
type: "text",
value: ""
};
this.list.push(this.node);
}
if (chr === "\n") {
chr = " ";
}
if (chr.charCodeAt(0) >= 33 || [" ", "\t"].includes(chr)) {
this.node.value += chr;
}
this.escaped = false;
}
}
function addressparser(str, options) {
options = options || {};
let tokenizer = new Tokenizer(str);
let tokens = tokenizer.tokenize();
let addresses = [];
let address = [];
let parsedAddresses = [];
tokens.forEach((token) => {
if (token.type === "operator" && (token.value === "," || token.value === ";")) {
if (address.length) {
addresses.push(address);
}
address = [];
} else {
address.push(token);
}
});
if (address.length) {
addresses.push(address);
}
addresses.forEach((address2) => {
address2 = _handleAddress(address2);
if (address2.length) {
parsedAddresses = parsedAddresses.concat(address2);
}
});
if (options.flatten) {
let addresses2 = [];
let walkAddressList = (list) => {
list.forEach((address2) => {
if (address2.group) {
return walkAddressList(address2.group);
} else {
addresses2.push(address2);
}
});
};
walkAddressList(parsedAddresses);
return addresses2;
}
return parsedAddresses;
}
module.exports = addressparser;
});
// node_modules/nodemailer/lib/mime-node/last-newline.js
var require_last_newline = __commonJS((exports, module) => {
var Transform = __require("stream").Transform;
class LastNewline extends Transform {
constructor() {
super();
this.lastByte = false;
}
_transform(chunk, encoding, done) {
if (chunk.length) {
this.lastByte = chunk[chunk.length - 1];
}
this.push(chunk);
done();
}
_flush(done) {
if (this.lastByte === 10) {
return done();
}
if (this.lastByte === 13) {
this.push(Buffer.from("\n"));
return done();
}
this.push(Buffer.from("\r\n"));
return done();
}
}
module.exports = LastNewline;
});
// node_modules/nodemailer/lib/mime-node/le-windows.js
var require_le_windows = __commonJS((exports, module) => {
var stream = __require("stream");
var Transform = stream.Transform;
class LeWindows extends Transform {
constructor(options) {
super(options);
this.options = options || {};
this.lastByte = false;
}
_transform(chunk, encoding, done) {
let buf;
let lastPos = 0;
for (let i = 0, len = chunk.length;i < len; i++) {
if (chunk[i] === 10) {
if (i && chunk[i - 1] !== 13 || !i && this.lastByte !== 13) {
if (i > lastPos) {
buf = chunk.slice(lastPos, i);
this.push(buf);
}
this.push(Buffer.from("\r\n"));
lastPos = i + 1;
}
}
}
if (lastPos && lastPos < chunk.length) {
buf = chunk.slice(lastPos);
this.push(buf);
} else if (!lastPos) {
this.push(chunk);
}
this.lastByte = chunk[chunk.length - 1];
done();
}
}
module.exports = LeWindows;
});
// node_modules/nodemailer/lib/mime-node/le-unix.js
var require_le_unix = __commonJS((exports, module) => {
var stream = __require("stream");
var Transform = stream.Transform;
class LeWindows extends Transform {
constructor(options) {
super(options);
this.options = options || {};
}
_transform(chunk, encoding, done) {
let buf;
let lastPos = 0;
for (let i = 0, len = chunk.length;i < len; i++) {
if (chunk[i] === 13) {
buf = chunk.slice(lastPos, i);
lastPos = i + 1;
this.push(buf);
}
}
if (lastPos && lastPos < chunk.length) {
buf = chunk.slice(lastPos);
this.push(buf);
} else if (!lastPos) {
this.push(chunk);
}
done();
}
}
module.exports = LeWindows;
});
// node_modules/nodemailer/lib/mime-node/index.js
var require_mime_node = __commonJS((exports, module) => {
var crypto2 = __require("crypto");
var fs15 = __require("fs");
var punycode = require_punycode();
var PassThrough = __require("stream").PassThrough;
var shared = require_shared();
var mimeFuncs = require_mime_funcs();
var qp = require_qp();
var base64 = require_base642();
var addressparser = require_addressparser();
var nmfetch = require_fetch();
var LastNewline = require_last_newline();
var LeWindows = require_le_windows();
var LeUnix = require_le_unix();
class MimeNode {
constructor(contentType, options) {
this.nodeCounter = 0;
options = options || {};
this.baseBoundary = options.baseBoundary || crypto2.randomBytes(8).toString("hex");
this.boundaryPrefix = options.boundaryPrefix || "--_NmP";
this.disableFileAccess = !!options.disableFileAccess;
this.disableUrlAccess = !!options.disableUrlAccess;
this.normalizeHeaderKey = options.normalizeHeaderKey;
this.date = new Date;
this.rootNode = options.rootNode || this;
this.keepBcc = !!options.keepBcc;
if (options.filename) {
this.filename = options.filename;
if (!contentType) {
contentType = mimeFuncs.detectMimeType(this.filename.split(".").pop());
}
}
this.textEncoding = (options.textEncoding || "").toString().trim().charAt(0).toUpperCase();
this.parentNode = options.parentNode;
this.hostname = options.hostname;
this.newline = options.newline;
this.childNodes = [];
this._nodeId = ++this.rootNode.nodeCounter;
this._headers = [];
this._isPlainText = false;
this._hasLongLines = false;
this._envelope = false;
this._raw = false;
this._transforms = [];
this._processFuncs = [];
if (contentType) {
this.setHeader("Content-Type", contentType);
}
}
createChild(contentType, options) {
if (!options && typeof contentType === "object") {
options = contentType;
contentType = undefined;
}
let node = new MimeNode(contentType, options);
this.appendChild(node);
return node;
}
appendChild(childNode) {
if (childNode.rootNode !== this.rootNode) {
childNode.rootNode = this.rootNode;
childNode._nodeId = ++this.rootNode.nodeCounter;
}
childNode.parentNode = this;
this.childNodes.push(childNode);
return childNode;
}
replace(node) {
if (node === this) {
return this;
}
this.parentNode.childNodes.forEach((childNode, i) => {
if (childNode === this) {
node.rootNode = this.rootNode;
node.parentNode = this.parentNode;
node._nodeId = this._nodeId;
this.rootNode = this;
this.parentNode = undefined;
node.parentNode.childNodes[i] = node;
}
});
return node;
}
remove() {
if (!this.parentNode) {
return this;
}
for (let i = this.parentNode.childNodes.length - 1;i >= 0; i--) {
if (this.parentNode.childNodes[i] === this) {
this.parentNode.childNodes.splice(i, 1);
this.parentNode = undefined;
this.rootNode = this;
return this;
}
}
}
setHeader(key, value) {
let added = false, headerValue;
if (!value && key && typeof key === "object") {
if (key.key && "value" in key) {
this.setHeader(key.key, key.value);
} else if (Array.isArray(key)) {
key.forEach((i) => {
this.setHeader(i.key, i.value);
});
} else {
Object.keys(key).forEach((i) => {
this.setHeader(i, key[i]);
});
}
return this;
}
key = this._normalizeHeaderKey(key);
headerValue = {
key,
value
};
for (let i = 0, len = this._headers.length;i < len; i++) {
if (this._headers[i].key === key) {
if (!added) {
this._headers[i] = headerValue;
added = true;
} else {
this._headers.splice(i, 1);
i--;
len--;
}
}
}
if (!added) {
this._headers.push(headerValue);
}
return this;
}
addHeader(key, value) {
if (!value && key && typeof key === "object") {
if (key.key && key.value) {
this.addHeader(key.key, key.value);
} else if (Array.isArray(key)) {
key.forEach((i) => {
this.addHeader(i.key, i.value);
});
} else {
Object.keys(key).forEach((i) => {
this.addHeader(i, key[i]);
});
}
return this;
} else if (Array.isArray(value)) {
value.forEach((val) => {
this.addHeader(key, val);
});
return this;
}
this._headers.push({
key: this._normalizeHeaderKey(key),
value
});
return this;
}
getHeader(key) {
key = this._normalizeHeaderKey(key);
for (let i = 0, len = this._headers.length;i < len; i++) {
if (this._headers[i].key === key) {
return this._headers[i].value;
}
}
}
setContent(content) {
this.content = content;
if (typeof this.content.pipe === "function") {
this._contentErrorHandler = (err) => {
this.content.removeListener("error", this._contentErrorHandler);
this.content = err;
};
this.content.once("error", this._contentErrorHandler);
} else if (typeof this.content === "string") {
this._isPlainText = mimeFuncs.isPlainText(this.content);
if (this._isPlainText && mimeFuncs.hasLongerLines(this.content, 76)) {
this._hasLongLines = true;
}
}
return this;
}
build(callback) {
let promise;
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
let stream = this.createReadStream();
let buf = [];
let buflen = 0;
let returned = false;
stream.on("readable", () => {
let chunk;
while ((chunk = stream.read()) !== null) {
buf.push(chunk);
buflen += chunk.length;
}
});
stream.once("error", (err) => {
if (returned) {
return;
}
returned = true;
return callback(err);
});
stream.once("end", (chunk) => {
if (returned) {
return;
}
returned = true;
if (chunk && chunk.length) {
buf.push(chunk);
buflen += chunk.length;
}
return callback(null, Buffer.concat(buf, buflen));
});
return promise;
}
getTransferEncoding() {
let transferEncoding = false;
let contentType = (this.getHeader("Content-Type") || "").toString().toLowerCase().trim();
if (this.content) {
transferEncoding = (this.getHeader("Content-Transfer-Encoding") || "").toString().toLowerCase().trim();
if (!transferEncoding || !["base64", "quoted-printable"].includes(transferEncoding)) {
if (/^text\//i.test(contentType)) {
if (this._isPlainText && !this._hasLongLines) {
transferEncoding = "7bit";
} else if (typeof this.content === "string" || this.content instanceof Buffer) {
transferEncoding = this._getTextEncoding(this.content) === "Q" ? "quoted-printable" : "base64";
} else {
transferEncoding = this.textEncoding === "B" ? "base64" : "quoted-printable";
}
} else if (!/^(multipart|message)\//i.test(contentType)) {
transferEncoding = transferEncoding || "base64";
}
}
}
return transferEncoding;
}
buildHeaders() {
let transferEncoding = this.getTransferEncoding();
let headers = [];
if (transferEncoding) {
this.setHeader("Content-Transfer-Encoding", transferEncoding);
}
if (this.filename && !this.getHeader("Content-Disposition")) {
this.setHeader("Content-Disposition", "attachment");
}
if (this.rootNode === this) {
if (!this.getHeader("Date")) {
this.setHeader("Date", this.date.toUTCString().replace(/GMT/, "+0000"));
}
this.messageId();
if (!this.getHeader("MIME-Version")) {
this.setHeader("MIME-Version", "1.0");
}
for (let i = this._headers.length - 2;i >= 0; i--) {
let header = this._headers[i];
if (header.key === "Content-Type") {
this._headers.splice(i, 1);
this._headers.push(header);
}
}
}
this._headers.forEach((header) => {
let key = header.key;
let value = header.value;
let structured;
let param;
let options = {};
let formattedHeaders = ["From", "Sender", "To", "Cc", "Bcc", "Reply-To", "Date", "References"];
if (value && typeof value === "object" && !formattedHeaders.includes(key)) {
Object.keys(value).forEach((key2) => {
if (key2 !== "value") {
options[key2] = value[key2];
}
});
value = (value.value || "").toString();
if (!value.trim()) {
return;
}
}
if (options.prepared) {
if (options.foldLines) {
headers.push(mimeFuncs.foldLines(key + ": " + value));
} else {
headers.push(key + ": " + value);
}
return;
}
switch (header.key) {
case "Content-Disposition":
structured = mimeFuncs.parseHeaderValue(value);
if (this.filename) {
structured.params.filename = this.filename;
}
value = mimeFuncs.buildHeaderValue(structured);
break;
case "Content-Type":
structured = mimeFuncs.parseHeaderValue(value);
this._handleContentType(structured);
if (structured.value.match(/^text\/plain\b/) && typeof this.content === "string" && /[\u0080-\uFFFF]/.test(this.content)) {
structured.params.charset = "utf-8";
}
value = mimeFuncs.buildHeaderValue(structured);
if (this.filename) {
param = this._encodeWords(this.filename);
if (param !== this.filename || /[\s'"\\;:/=(),<>@[\]?]|^-/.test(param)) {
param = '"' + param + '"';
}
value += "; name=" + param;
}
break;
case "Bcc":
if (!this.keepBcc) {
return;
}
break;
}
value = this._encodeHeaderValue(key, value);
if (!(value || "").toString().trim()) {
return;
}
if (typeof this.normalizeHeaderKey === "function") {
let normalized = this.normalizeHeaderKey(key, value);
if (normalized && typeof normalized === "string" && normalized.length) {
key = normalized;
}
}
headers.push(mimeFuncs.foldLines(key + ": " + value, 76));
});
return headers.join("\r\n");
}
createReadStream(options) {
options = options || {};
let stream = new PassThrough(options);
let outputStream = stream;
let transform;
this.stream(stream, options, (err) => {
if (err) {
outputStream.emit("error", err);
return;
}
stream.end();
});
for (let i = 0, len = this._transforms.length;i < len; i++) {
transform = typeof this._transforms[i] === "function" ? this._transforms[i]() : this._transforms[i];
outputStream.once("error", (err) => {
transform.emit("error", err);
});
outputStream = outputStream.pipe(transform);
}
transform = new LastNewline;
outputStream.once("error", (err) => {
transform.emit("error", err);
});
outputStream = outputStream.pipe(transform);
for (let i = 0, len = this._processFuncs.length;i < len; i++) {
transform = this._processFuncs[i];
outputStream = transform(outputStream);
}
if (this.newline) {
const winbreak = ["win", "windows", "dos", "\r\n"].includes(this.newline.toString().toLowerCase());
const newlineTransform = winbreak ? new LeWindows : new LeUnix;
const stream2 = outputStream.pipe(newlineTransform);
outputStream.on("error", (err) => stream2.emit("error", err));
return stream2;
}
return outputStream;
}
transform(transform) {
this._transforms.push(transform);
}
processFunc(processFunc) {
this._processFuncs.push(processFunc);
}
stream(outputStream, options, done) {
let transferEncoding = this.getTransferEncoding();
let contentStream;
let localStream;
let returned = false;
let callback = (err) => {
if (returned) {
return;
}
returned = true;
done(err);
};
let finalize = () => {
let childId = 0;
let processChildNode = () => {
if (childId >= this.childNodes.length) {
outputStream.write("\r\n--" + this.boundary + "--\r\n");
return callback();
}
let child = this.childNodes[childId++];
outputStream.write((childId > 1 ? "\r\n" : "") + "--" + this.boundary + "\r\n");
child.stream(outputStream, options, (err) => {
if (err) {
return callback(err);
}
setImmediate(processChildNode);
});
};
if (this.multipart) {
setImmediate(processChildNode);
} else {
return callback();
}
};
let sendContent = () => {
if (this.content) {
if (Object.prototype.toString.call(this.content) === "[object Error]") {
return callback(this.content);
}
if (typeof this.content.pipe === "function") {
this.content.removeListener("error", this._contentErrorHandler);
this._contentErrorHandler = (err) => callback(err);
this.content.once("error", this._contentErrorHandler);
}
let createStream = () => {
if (["quoted-printable", "base64"].includes(transferEncoding)) {
contentStream = new (transferEncoding === "base64" ? base64 : qp).Encoder(options);
contentStream.pipe(outputStream, {
end: false
});
contentStream.once("end", finalize);
contentStream.once("error", (err) => callback(err));
localStream = this._getStream(this.content);
localStream.pipe(contentStream);
} else {
localStream = this._getStream(this.content);
localStream.pipe(outputStream, {
end: false
});
localStream.once("end", finalize);
}
localStream.once("error", (err) => callback(err));
};
if (this.content._resolve) {
let chunks = [];
let chunklen = 0;
let returned2 = false;
let sourceStream = this._getStream(this.content);
sourceStream.on("error", (err) => {
if (returned2) {
return;
}
returned2 = true;
callback(err);
});
sourceStream.on("readable", () => {
let chunk;
while ((chunk = sourceStream.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
sourceStream.on("end", () => {
if (returned2) {
return;
}
returned2 = true;
this.content._resolve = false;
this.content._resolvedValue = Buffer.concat(chunks, chunklen);
setImmediate(createStream);
});
} else {
setImmediate(createStream);
}
return;
} else {
return setImmediate(finalize);
}
};
if (this._raw) {
setImmediate(() => {
if (Object.prototype.toString.call(this._raw) === "[object Error]") {
return callback(this._raw);
}
if (typeof this._raw.pipe === "function") {
this._raw.removeListener("error", this._contentErrorHandler);
}
let raw = this._getStream(this._raw);
raw.pipe(outputStream, {
end: false
});
raw.on("error", (err) => outputStream.emit("error", err));
raw.on("end", finalize);
});
} else {
outputStream.write(this.buildHeaders() + "\r\n\r\n");
setImmediate(sendContent);
}
}
setEnvelope(envelope) {
let list;
this._envelope = {
from: false,
to: []
};
if (envelope.from) {
list = [];
this._convertAddresses(this._parseAddresses(envelope.from), list);
list = list.filter((address) => address && address.address);
if (list.length && list[0]) {
this._envelope.from = list[0].address;
}
}
["to", "cc", "bcc"].forEach((key) => {
if (envelope[key]) {
this._convertAddresses(this._parseAddresses(envelope[key]), this._envelope.to);
}
});
this._envelope.to = this._envelope.to.map((to) => to.address).filter((address) => address);
let standardFields = ["to", "cc", "bcc", "from"];
Object.keys(envelope).forEach((key) => {
if (!standardFields.includes(key)) {
this._envelope[key] = envelope[key];
}
});
return this;
}
getAddresses() {
let addresses = {};
this._headers.forEach((header) => {
let key = header.key.toLowerCase();
if (["from", "sender", "reply-to", "to", "cc", "bcc"].includes(key)) {
if (!Array.isArray(addresses[key])) {
addresses[key] = [];
}
this._convertAddresses(this._parseAddresses(header.value), addresses[key]);
}
});
return addresses;
}
getEnvelope() {
if (this._envelope) {
return this._envelope;
}
let envelope = {
from: false,
to: []
};
this._headers.forEach((header) => {
let list = [];
if (header.key === "From" || !envelope.from && ["Reply-To", "Sender"].includes(header.key)) {
this._convertAddresses(this._parseAddresses(header.value), list);
if (list.length && list[0]) {
envelope.from = list[0].address;
}
} else if (["To", "Cc", "Bcc"].includes(header.key)) {
this._convertAddresses(this._parseAddresses(header.value), envelope.to);
}
});
envelope.to = envelope.to.map((to) => to.address);
return envelope;
}
messageId() {
let messageId = this.getHeader("Message-ID");
if (!messageId) {
messageId = this._generateMessageId();
this.setHeader("Message-ID", messageId);
}
return messageId;
}
setRaw(raw) {
this._raw = raw;
if (this._raw && typeof this._raw.pipe === "function") {
this._contentErrorHandler = (err) => {
this._raw.removeListener("error", this._contentErrorHandler);
this._raw = err;
};
this._raw.once("error", this._contentErrorHandler);
}
return this;
}
_getStream(content) {
let contentStream;
if (content._resolvedValue) {
contentStream = new PassThrough;
setImmediate(() => {
try {
contentStream.end(content._resolvedValue);
} catch (err) {
contentStream.emit("error", err);
}
});
return contentStream;
} else if (typeof content.pipe === "function") {
return content;
} else if (content && typeof content.path === "string" && !content.href) {
if (this.disableFileAccess) {
contentStream = new PassThrough;
setImmediate(() => contentStream.emit("error", new Error("File access rejected for " + content.path)));
return contentStream;
}
return fs15.createReadStream(content.path);
} else if (content && typeof content.href === "string") {
if (this.disableUrlAccess) {
contentStream = new PassThrough;
setImmediate(() => contentStream.emit("error", new Error("Url access rejected for " + content.href)));
return contentStream;
}
return nmfetch(content.href, { headers: content.httpHeaders });
} else {
contentStream = new PassThrough;
setImmediate(() => {
try {
contentStream.end(content || "");
} catch (err) {
contentStream.emit("error", err);
}
});
return contentStream;
}
}
_parseAddresses(addresses) {
return [].concat.apply([], [].concat(addresses).map((address) => {
if (address && address.address) {
address.address = this._normalizeAddress(address.address);
address.name = address.name || "";
return [address];
}
return addressparser(address);
}));
}
_normalizeHeaderKey(key) {
key = (key || "").toString().replace(/\r?\n|\r/g, " ").trim().toLowerCase().replace(/^X-SMTPAPI$|^(MIME|DKIM|ARC|BIMI)\b|^[a-z]|-(SPF|FBL|ID|MD5)$|-[a-z]/gi, (c) => c.toUpperCase()).replace(/^Content-Features$/i, "Content-features");
return key;
}
_handleContentType(structured) {
this.contentType = structured.value.trim().toLowerCase();
this.multipart = /^multipart\//i.test(this.contentType) ? this.contentType.substr(this.contentType.indexOf("/") + 1) : false;
if (this.multipart) {
this.boundary = structured.params.boundary = structured.params.boundary || this.boundary || this._generateBoundary();
} else {
this.boundary = false;
}
}
_generateBoundary() {
return this.rootNode.boundaryPrefix + "-" + this.rootNode.baseBoundary + "-Part_" + this._nodeId;
}
_encodeHeaderValue(key, value) {
key = this._normalizeHeaderKey(key);
switch (key) {
case "From":
case "Sender":
case "To":
case "Cc":
case "Bcc":
case "Reply-To":
return this._convertAddresses(this._parseAddresses(value));
case "Message-ID":
case "In-Reply-To":
case "Content-Id":
value = (value || "").toString().replace(/\r?\n|\r/g, " ");
if (value.charAt(0) !== "<") {
value = "<" + value;
}
if (value.charAt(value.length - 1) !== ">") {
value = value + ">";
}
return value;
case "References":
value = [].concat.apply([], [].concat(value || "").map((elm) => {
elm = (elm || "").toString().replace(/\r?\n|\r/g, " ").trim();
return elm.replace(/<[^>]*>/g, (str) => str.replace(/\s/g, "")).split(/\s+/);
})).map((elm) => {
if (elm.charAt(0) !== "<") {
elm = "<" + elm;
}
if (elm.charAt(elm.length - 1) !== ">") {
elm = elm + ">";
}
return elm;
});
return value.join(" ").trim();
case "Date":
if (Object.prototype.toString.call(value) === "[object Date]") {
return value.toUTCString().replace(/GMT/, "+0000");
}
value = (value || "").toString().replace(/\r?\n|\r/g, " ");
return this._encodeWords(value);
case "Content-Type":
case "Content-Disposition":
return (value || "").toString().replace(/\r?\n|\r/g, " ");
default:
value = (value || "").toString().replace(/\r?\n|\r/g, " ");
return this._encodeWords(value);
}
}
_convertAddresses(addresses, uniqueList) {
let values = [];
uniqueList = uniqueList || [];
[].concat(addresses || []).forEach((address) => {
if (address.address) {
address.address = this._normalizeAddress(address.address);
if (!address.name) {
values.push(address.address.indexOf(" ") >= 0 ? `<${address.address}>` : `${address.address}`);
} else if (address.name) {
values.push(`${this._encodeAddressName(address.name)} <${address.address}>`);
}
if (address.address) {
if (!uniqueList.filter((a) => a.address === address.address).length) {
uniqueList.push(address);
}
}
} else if (address.group) {
let groupListAddresses = (address.group.length ? this._convertAddresses(address.group, uniqueList) : "").trim();
values.push(`${this._encodeAddressName(address.name)}:${groupListAddresses};`);
}
});
return values.join(", ");
}
_normalizeAddress(address) {
address = (address || "").toString().replace(/[\x00-\x1F<>]+/g, " ").trim();
let lastAt = address.lastIndexOf("@");
if (lastAt < 0) {
return address;
}
let user = address.substr(0, lastAt);
let domain = address.substr(lastAt + 1);
let encodedDomain;
try {
encodedDomain = punycode.toASCII(domain.toLowerCase());
} catch (err) {
}
if (user.indexOf(" ") >= 0) {
if (user.charAt(0) !== '"') {
user = '"' + user;
}
if (user.substr(-1) !== '"') {
user = user + '"';
}
}
return `${user}@${encodedDomain}`;
}
_encodeAddressName(name) {
if (!/^[\w ]*$/.test(name)) {
if (/^[\x20-\x7e]*$/.test(name)) {
return '"' + name.replace(/([\\"])/g, "\\$1") + '"';
} else {
return mimeFuncs.encodeWord(name, this._getTextEncoding(name), 52);
}
}
return name;
}
_encodeWords(value) {
return mimeFuncs.encodeWords(value, this._getTextEncoding(value), 52, true);
}
_getTextEncoding(value) {
value = (value || "").toString();
let encoding = this.textEncoding;
let latinLen;
let nonLatinLen;
if (!encoding) {
nonLatinLen = (value.match(/[\x00-\x08\x0B\x0C\x0E-\x1F\u0080-\uFFFF]/g) || []).length;
latinLen = (value.match(/[a-z]/gi) || []).length;
encoding = nonLatinLen < latinLen ? "Q" : "B";
}
return encoding;
}
_generateMessageId() {
return "<" + [2, 2, 2, 6].reduce((prev, len) => prev + "-" + crypto2.randomBytes(len).toString("hex"), crypto2.randomBytes(4).toString("hex")) + "@" + (this.getEnvelope().from || this.hostname || "localhost").split("@").pop() + ">";
}
}
module.exports = MimeNode;
});
// node_modules/nodemailer/lib/mail-composer/index.js
var require_mail_composer = __commonJS((exports, module) => {
var MimeNode = require_mime_node();
var mimeFuncs = require_mime_funcs();
var parseDataURI = require_shared().parseDataURI;
class MailComposer {
constructor(mail) {
this.mail = mail || {};
this.message = false;
}
compile() {
this._alternatives = this.getAlternatives();
this._htmlNode = this._alternatives.filter((alternative) => /^text\/html\b/i.test(alternative.contentType)).pop();
this._attachments = this.getAttachments(!!this._htmlNode);
this._useRelated = !!(this._htmlNode && this._attachments.related.length);
this._useAlternative = this._alternatives.length > 1;
this._useMixed = this._attachments.attached.length > 1 || this._alternatives.length && this._attachments.attached.length === 1;
if (this.mail.raw) {
this.message = new MimeNode("message/rfc822", { newline: this.mail.newline }).setRaw(this.mail.raw);
} else if (this._useMixed) {
this.message = this._createMixed();
} else if (this._useAlternative) {
this.message = this._createAlternative();
} else if (this._useRelated) {
this.message = this._createRelated();
} else {
this.message = this._createContentNode(false, [].concat(this._alternatives || []).concat(this._attachments.attached || []).shift() || {
contentType: "text/plain",
content: ""
});
}
if (this.mail.headers) {
this.message.addHeader(this.mail.headers);
}
["from", "sender", "to", "cc", "bcc", "reply-to", "in-reply-to", "references", "subject", "message-id", "date"].forEach((header) => {
let key = header.replace(/-(\w)/g, (o, c) => c.toUpperCase());
if (this.mail[key]) {
this.message.setHeader(header, this.mail[key]);
}
});
if (this.mail.envelope) {
this.message.setEnvelope(this.mail.envelope);
}
this.message.messageId();
return this.message;
}
getAttachments(findRelated) {
let icalEvent, eventObject;
let attachments = [].concat(this.mail.attachments || []).map((attachment, i) => {
let data;
let isMessageNode = /^message\//i.test(attachment.contentType);
if (/^data:/i.test(attachment.path || attachment.href)) {
attachment = this._processDataUrl(attachment);
}
let contentType = attachment.contentType || mimeFuncs.detectMimeType(attachment.filename || attachment.path || attachment.href || "bin");
let isImage = /^image\//i.test(contentType);
let contentDisposition = attachment.contentDisposition || (isMessageNode || isImage && attachment.cid ? "inline" : "attachment");
data = {
contentType,
contentDisposition,
contentTransferEncoding: "contentTransferEncoding" in attachment ? attachment.contentTransferEncoding : "base64"
};
if (attachment.filename) {
data.filename = attachment.filename;
} else if (!isMessageNode && attachment.filename !== false) {
data.filename = (attachment.path || attachment.href || "").split("/").pop().split("?").shift() || "attachment-" + (i + 1);
if (data.filename.indexOf(".") < 0) {
data.filename += "." + mimeFuncs.detectExtension(data.contentType);
}
}
if (/^https?:\/\//i.test(attachment.path)) {
attachment.href = attachment.path;
attachment.path = undefined;
}
if (attachment.cid) {
data.cid = attachment.cid;
}
if (attachment.raw) {
data.raw = attachment.raw;
} else if (attachment.path) {
data.content = {
path: attachment.path
};
} else if (attachment.href) {
data.content = {
href: attachment.href,
httpHeaders: attachment.httpHeaders
};
} else {
data.content = attachment.content || "";
}
if (attachment.encoding) {
data.encoding = attachment.encoding;
}
if (attachment.headers) {
data.headers = attachment.headers;
}
return data;
});
if (this.mail.icalEvent) {
if (typeof this.mail.icalEvent === "object" && (this.mail.icalEvent.content || this.mail.icalEvent.path || this.mail.icalEvent.href || this.mail.icalEvent.raw)) {
icalEvent = this.mail.icalEvent;
} else {
icalEvent = {
content: this.mail.icalEvent
};
}
eventObject = {};
Object.keys(icalEvent).forEach((key) => {
eventObject[key] = icalEvent[key];
});
eventObject.contentType = "application/ics";
if (!eventObject.headers) {
eventObject.headers = {};
}
eventObject.filename = eventObject.filename || "invite.ics";
eventObject.headers["Content-Disposition"] = "attachment";
eventObject.headers["Content-Transfer-Encoding"] = "base64";
}
if (!findRelated) {
return {
attached: attachments.concat(eventObject || []),
related: []
};
} else {
return {
attached: attachments.filter((attachment) => !attachment.cid).concat(eventObject || []),
related: attachments.filter((attachment) => !!attachment.cid)
};
}
}
getAlternatives() {
let alternatives = [], text, html, watchHtml, amp, icalEvent, eventObject;
if (this.mail.text) {
if (typeof this.mail.text === "object" && (this.mail.text.content || this.mail.text.path || this.mail.text.href || this.mail.text.raw)) {
text = this.mail.text;
} else {
text = {
content: this.mail.text
};
}
text.contentType = "text/plain; charset=utf-8";
}
if (this.mail.watchHtml) {
if (typeof this.mail.watchHtml === "object" && (this.mail.watchHtml.content || this.mail.watchHtml.path || this.mail.watchHtml.href || this.mail.watchHtml.raw)) {
watchHtml = this.mail.watchHtml;
} else {
watchHtml = {
content: this.mail.watchHtml
};
}
watchHtml.contentType = "text/watch-html; charset=utf-8";
}
if (this.mail.amp) {
if (typeof this.mail.amp === "object" && (this.mail.amp.content || this.mail.amp.path || this.mail.amp.href || this.mail.amp.raw)) {
amp = this.mail.amp;
} else {
amp = {
content: this.mail.amp
};
}
amp.contentType = "text/x-amp-html; charset=utf-8";
}
if (this.mail.icalEvent) {
if (typeof this.mail.icalEvent === "object" && (this.mail.icalEvent.content || this.mail.icalEvent.path || this.mail.icalEvent.href || this.mail.icalEvent.raw)) {
icalEvent = this.mail.icalEvent;
} else {
icalEvent = {
content: this.mail.icalEvent
};
}
eventObject = {};
Object.keys(icalEvent).forEach((key) => {
eventObject[key] = icalEvent[key];
});
if (eventObject.content && typeof eventObject.content === "object") {
eventObject.content._resolve = true;
}
eventObject.filename = false;
eventObject.contentType = "text/calendar; charset=utf-8; method=" + (eventObject.method || "PUBLISH").toString().trim().toUpperCase();
if (!eventObject.headers) {
eventObject.headers = {};
}
}
if (this.mail.html) {
if (typeof this.mail.html === "object" && (this.mail.html.content || this.mail.html.path || this.mail.html.href || this.mail.html.raw)) {
html = this.mail.html;
} else {
html = {
content: this.mail.html
};
}
html.contentType = "text/html; charset=utf-8";
}
[].concat(text || []).concat(watchHtml || []).concat(amp || []).concat(html || []).concat(eventObject || []).concat(this.mail.alternatives || []).forEach((alternative) => {
let data;
if (/^data:/i.test(alternative.path || alternative.href)) {
alternative = this._processDataUrl(alternative);
}
data = {
contentType: alternative.contentType || mimeFuncs.detectMimeType(alternative.filename || alternative.path || alternative.href || "txt"),
contentTransferEncoding: alternative.contentTransferEncoding
};
if (alternative.filename) {
data.filename = alternative.filename;
}
if (/^https?:\/\//i.test(alternative.path)) {
alternative.href = alternative.path;
alternative.path = undefined;
}
if (alternative.raw) {
data.raw = alternative.raw;
} else if (alternative.path) {
data.content = {
path: alternative.path
};
} else if (alternative.href) {
data.content = {
href: alternative.href
};
} else {
data.content = alternative.content || "";
}
if (alternative.encoding) {
data.encoding = alternative.encoding;
}
if (alternative.headers) {
data.headers = alternative.headers;
}
alternatives.push(data);
});
return alternatives;
}
_createMixed(parentNode) {
let node;
if (!parentNode) {
node = new MimeNode("multipart/mixed", {
baseBoundary: this.mail.baseBoundary,
textEncoding: this.mail.textEncoding,
boundaryPrefix: this.mail.boundaryPrefix,
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
} else {
node = parentNode.createChild("multipart/mixed", {
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
}
if (this._useAlternative) {
this._createAlternative(node);
} else if (this._useRelated) {
this._createRelated(node);
}
[].concat(!this._useAlternative && this._alternatives || []).concat(this._attachments.attached || []).forEach((element) => {
if (!this._useRelated || element !== this._htmlNode) {
this._createContentNode(node, element);
}
});
return node;
}
_createAlternative(parentNode) {
let node;
if (!parentNode) {
node = new MimeNode("multipart/alternative", {
baseBoundary: this.mail.baseBoundary,
textEncoding: this.mail.textEncoding,
boundaryPrefix: this.mail.boundaryPrefix,
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
} else {
node = parentNode.createChild("multipart/alternative", {
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
}
this._alternatives.forEach((alternative) => {
if (this._useRelated && this._htmlNode === alternative) {
this._createRelated(node);
} else {
this._createContentNode(node, alternative);
}
});
return node;
}
_createRelated(parentNode) {
let node;
if (!parentNode) {
node = new MimeNode('multipart/related; type="text/html"', {
baseBoundary: this.mail.baseBoundary,
textEncoding: this.mail.textEncoding,
boundaryPrefix: this.mail.boundaryPrefix,
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
} else {
node = parentNode.createChild('multipart/related; type="text/html"', {
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
}
this._createContentNode(node, this._htmlNode);
this._attachments.related.forEach((alternative) => this._createContentNode(node, alternative));
return node;
}
_createContentNode(parentNode, element) {
element = element || {};
element.content = element.content || "";
let node;
let encoding = (element.encoding || "utf8").toString().toLowerCase().replace(/[-_\s]/g, "");
if (!parentNode) {
node = new MimeNode(element.contentType, {
filename: element.filename,
baseBoundary: this.mail.baseBoundary,
textEncoding: this.mail.textEncoding,
boundaryPrefix: this.mail.boundaryPrefix,
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
} else {
node = parentNode.createChild(element.contentType, {
filename: element.filename,
textEncoding: this.mail.textEncoding,
disableUrlAccess: this.mail.disableUrlAccess,
disableFileAccess: this.mail.disableFileAccess,
normalizeHeaderKey: this.mail.normalizeHeaderKey,
newline: this.mail.newline
});
}
if (element.headers) {
node.addHeader(element.headers);
}
if (element.cid) {
node.setHeader("Content-Id", "<" + element.cid.replace(/[<>]/g, "") + ">");
}
if (element.contentTransferEncoding) {
node.setHeader("Content-Transfer-Encoding", element.contentTransferEncoding);
} else if (this.mail.encoding && /^text\//i.test(element.contentType)) {
node.setHeader("Content-Transfer-Encoding", this.mail.encoding);
}
if (!/^text\//i.test(element.contentType) || element.contentDisposition) {
node.setHeader("Content-Disposition", element.contentDisposition || (element.cid && /^image\//i.test(element.contentType) ? "inline" : "attachment"));
}
if (typeof element.content === "string" && !["utf8", "usascii", "ascii"].includes(encoding)) {
element.content = Buffer.from(element.content, encoding);
}
if (element.raw) {
node.setRaw(element.raw);
} else {
node.setContent(element.content);
}
return node;
}
_processDataUrl(element) {
let parsedDataUri;
if ((element.path || element.href).match(/^data:/)) {
parsedDataUri = parseDataURI(element.path || element.href);
}
if (!parsedDataUri) {
return element;
}
element.content = parsedDataUri.data;
element.contentType = element.contentType || parsedDataUri.contentType;
if ("path" in element) {
element.path = false;
}
if ("href" in element) {
element.href = false;
}
return element;
}
}
module.exports = MailComposer;
});
// node_modules/nodemailer/lib/dkim/message-parser.js
var require_message_parser = __commonJS((exports, module) => {
var Transform = __require("stream").Transform;
class MessageParser extends Transform {
constructor(options) {
super(options);
this.lastBytes = Buffer.alloc(4);
this.headersParsed = false;
this.headerBytes = 0;
this.headerChunks = [];
this.rawHeaders = false;
this.bodySize = 0;
}
updateLastBytes(data) {
let lblen = this.lastBytes.length;
let nblen = Math.min(data.length, lblen);
for (let i = 0, len = lblen - nblen;i < len; i++) {
this.lastBytes[i] = this.lastBytes[i + nblen];
}
for (let i = 1;i <= nblen; i++) {
this.lastBytes[lblen - i] = data[data.length - i];
}
}
checkHeaders(data) {
if (this.headersParsed) {
return true;
}
let lblen = this.lastBytes.length;
let headerPos = 0;
this.curLinePos = 0;
for (let i = 0, len = this.lastBytes.length + data.length;i < len; i++) {
let chr;
if (i < lblen) {
chr = this.lastBytes[i];
} else {
chr = data[i - lblen];
}
if (chr === 10 && i) {
let pr1 = i - 1 < lblen ? this.lastBytes[i - 1] : data[i - 1 - lblen];
let pr2 = i > 1 ? i - 2 < lblen ? this.lastBytes[i - 2] : data[i - 2 - lblen] : false;
if (pr1 === 10) {
this.headersParsed = true;
headerPos = i - lblen + 1;
this.headerBytes += headerPos;
break;
} else if (pr1 === 13 && pr2 === 10) {
this.headersParsed = true;
headerPos = i - lblen + 1;
this.headerBytes += headerPos;
break;
}
}
}
if (this.headersParsed) {
this.headerChunks.push(data.slice(0, headerPos));
this.rawHeaders = Buffer.concat(this.headerChunks, this.headerBytes);
this.headerChunks = null;
this.emit("headers", this.parseHeaders());
if (data.length - 1 > headerPos) {
let chunk = data.slice(headerPos);
this.bodySize += chunk.length;
setImmediate(() => this.push(chunk));
}
return false;
} else {
this.headerBytes += data.length;
this.headerChunks.push(data);
}
this.updateLastBytes(data);
return false;
}
_transform(chunk, encoding, callback) {
if (!chunk || !chunk.length) {
return callback();
}
if (typeof chunk === "string") {
chunk = Buffer.from(chunk, encoding);
}
let headersFound;
try {
headersFound = this.checkHeaders(chunk);
} catch (E) {
return callback(E);
}
if (headersFound) {
this.bodySize += chunk.length;
this.push(chunk);
}
setImmediate(callback);
}
_flush(callback) {
if (this.headerChunks) {
let chunk = Buffer.concat(this.headerChunks, this.headerBytes);
this.bodySize += chunk.length;
this.push(chunk);
this.headerChunks = null;
}
callback();
}
parseHeaders() {
let lines = (this.rawHeaders || "").toString().split(/\r?\n/);
for (let i = lines.length - 1;i > 0; i--) {
if (/^\s/.test(lines[i])) {
lines[i - 1] += "\n" + lines[i];
lines.splice(i, 1);
}
}
return lines.filter((line) => line.trim()).map((line) => ({
key: line.substr(0, line.indexOf(":")).trim().toLowerCase(),
line
}));
}
}
module.exports = MessageParser;
});
// node_modules/nodemailer/lib/dkim/relaxed-body.js
var require_relaxed_body = __commonJS((exports, module) => {
var Transform = __require("stream").Transform;
var crypto2 = __require("crypto");
class RelaxedBody extends Transform {
constructor(options) {
super();
options = options || {};
this.chunkBuffer = [];
this.chunkBufferLen = 0;
this.bodyHash = crypto2.createHash(options.hashAlgo || "sha1");
this.remainder = "";
this.byteLength = 0;
this.debug = options.debug;
this._debugBody = options.debug ? [] : false;
}
updateHash(chunk) {
let bodyStr;
let nextRemainder = "";
let state = "file";
for (let i = chunk.length - 1;i >= 0; i--) {
let c = chunk[i];
if (state === "file" && (c === 10 || c === 13)) {
} else if (state === "file" && (c === 9 || c === 32)) {
state = "line";
} else if (state === "line" && (c === 9 || c === 32)) {
} else if (state === "file" || state === "line") {
state = "body";
if (i === chunk.length - 1) {
break;
}
}
if (i === 0) {
if (state === "file" && (!this.remainder || /[\r\n]$/.test(this.remainder)) || state === "line" && (!this.remainder || /[ \t]$/.test(this.remainder))) {
this.remainder += chunk.toString("binary");
return;
} else if (state === "line" || state === "file") {
nextRemainder = chunk.toString("binary");
chunk = false;
break;
}
}
if (state !== "body") {
continue;
}
nextRemainder = chunk.slice(i + 1).toString("binary");
chunk = chunk.slice(0, i + 1);
break;
}
let needsFixing = !!this.remainder;
if (chunk && !needsFixing) {
for (let i = 0, len = chunk.length;i < len; i++) {
if (i && chunk[i] === 10 && chunk[i - 1] !== 13) {
needsFixing = true;
break;
} else if (i && chunk[i] === 13 && chunk[i - 1] === 32) {
needsFixing = true;
break;
} else if (i && chunk[i] === 32 && chunk[i - 1] === 32) {
needsFixing = true;
break;
} else if (chunk[i] === 9) {
needsFixing = true;
break;
}
}
}
if (needsFixing) {
bodyStr = this.remainder + (chunk ? chunk.toString("binary") : "");
this.remainder = nextRemainder;
bodyStr = bodyStr.replace(/\r?\n/g, "\n").replace(/[ \t]*$/gm, "").replace(/[ \t]+/gm, " ").replace(/\n/g, "\r\n");
chunk = Buffer.from(bodyStr, "binary");
} else if (nextRemainder) {
this.remainder = nextRemainder;
}
if (this.debug) {
this._debugBody.push(chunk);
}
this.bodyHash.update(chunk);
}
_transform(chunk, encoding, callback) {
if (!chunk || !chunk.length) {
return callback();
}
if (typeof chunk === "string") {
chunk = Buffer.from(chunk, encoding);
}
this.updateHash(chunk);
this.byteLength += chunk.length;
this.push(chunk);
callback();
}
_flush(callback) {
if (/[\r\n]$/.test(this.remainder) && this.byteLength > 2) {
this.bodyHash.update(Buffer.from("\r\n"));
}
if (!this.byteLength) {
this.push(Buffer.from("\r\n"));
}
this.emit("hash", this.bodyHash.digest("base64"), this.debug ? Buffer.concat(this._debugBody) : false);
callback();
}
}
module.exports = RelaxedBody;
});
// node_modules/nodemailer/lib/dkim/sign.js
var require_sign = __commonJS((exports, module) => {
var punycode = require_punycode();
var mimeFuncs = require_mime_funcs();
var crypto2 = __require("crypto");
module.exports = (headers, hashAlgo, bodyHash, options) => {
options = options || {};
let defaultFieldNames = "From:Sender:Reply-To:Subject:Date:Message-ID:To:" + "Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:" + "Content-Description:Resent-Date:Resent-From:Resent-Sender:" + "Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:" + "List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:" + "List-Owner:List-Archive";
let fieldNames = options.headerFieldNames || defaultFieldNames;
let canonicalizedHeaderData = relaxedHeaders(headers, fieldNames, options.skipFields);
let dkimHeader = generateDKIMHeader(options.domainName, options.keySelector, canonicalizedHeaderData.fieldNames, hashAlgo, bodyHash);
let signer, signature;
canonicalizedHeaderData.headers += "dkim-signature:" + relaxedHeaderLine(dkimHeader);
signer = crypto2.createSign(("rsa-" + hashAlgo).toUpperCase());
signer.update(canonicalizedHeaderData.headers);
try {
signature = signer.sign(options.privateKey, "base64");
} catch (E) {
return false;
}
return dkimHeader + signature.replace(/(^.{73}|.{75}(?!\r?\n|\r))/g, "$&\r\n ").trim();
};
module.exports.relaxedHeaders = relaxedHeaders;
function generateDKIMHeader(domainName, keySelector, fieldNames, hashAlgo, bodyHash) {
let dkim = [
"v=1",
"a=rsa-" + hashAlgo,
"c=relaxed/relaxed",
"d=" + punycode.toASCII(domainName),
"q=dns/txt",
"s=" + keySelector,
"bh=" + bodyHash,
"h=" + fieldNames
].join("; ");
return mimeFuncs.foldLines("DKIM-Signature: " + dkim, 76) + ";\r\n b=";
}
function relaxedHeaders(headers, fieldNames, skipFields) {
let includedFields = new Set;
let skip = new Set;
let headerFields = new Map;
(skipFields || "").toLowerCase().split(":").forEach((field) => {
skip.add(field.trim());
});
(fieldNames || "").toLowerCase().split(":").filter((field) => !skip.has(field.trim())).forEach((field) => {
includedFields.add(field.trim());
});
for (let i = headers.length - 1;i >= 0; i--) {
let line = headers[i];
if (includedFields.has(line.key) && !headerFields.has(line.key)) {
headerFields.set(line.key, relaxedHeaderLine(line.line));
}
}
let headersList = [];
let fields = [];
includedFields.forEach((field) => {
if (headerFields.has(field)) {
fields.push(field);
headersList.push(field + ":" + headerFields.get(field));
}
});
return {
headers: headersList.join("\r\n") + "\r\n",
fieldNames: fields.join(":")
};
}
function relaxedHeaderLine(line) {
return line.substr(line.indexOf(":") + 1).replace(/\r?\n/g, "").replace(/\s+/g, " ").trim();
}
});
// node_modules/nodemailer/lib/dkim/index.js
var require_dkim = __commonJS((exports, module) => {
var MessageParser = require_message_parser();
var RelaxedBody = require_relaxed_body();
var sign = require_sign();
var PassThrough = __require("stream").PassThrough;
var fs15 = __require("fs");
var path11 = __require("path");
var crypto2 = __require("crypto");
var DKIM_ALGO = "sha256";
var MAX_MESSAGE_SIZE = 128 * 1024;
class DKIMSigner {
constructor(options, keys, input, output) {
this.options = options || {};
this.keys = keys;
this.cacheTreshold = Number(this.options.cacheTreshold) || MAX_MESSAGE_SIZE;
this.hashAlgo = this.options.hashAlgo || DKIM_ALGO;
this.cacheDir = this.options.cacheDir || false;
this.chunks = [];
this.chunklen = 0;
this.readPos = 0;
this.cachePath = this.cacheDir ? path11.join(this.cacheDir, "message." + Date.now() + "-" + crypto2.randomBytes(14).toString("hex")) : false;
this.cache = false;
this.headers = false;
this.bodyHash = false;
this.parser = false;
this.relaxedBody = false;
this.input = input;
this.output = output;
this.output.usingCache = false;
this.hasErrored = false;
this.input.on("error", (err) => {
this.hasErrored = true;
this.cleanup();
output.emit("error", err);
});
}
cleanup() {
if (!this.cache || !this.cachePath) {
return;
}
fs15.unlink(this.cachePath, () => false);
}
createReadCache() {
this.cache = fs15.createReadStream(this.cachePath);
this.cache.once("error", (err) => {
this.cleanup();
this.output.emit("error", err);
});
this.cache.once("close", () => {
this.cleanup();
});
this.cache.pipe(this.output);
}
sendNextChunk() {
if (this.hasErrored) {
return;
}
if (this.readPos >= this.chunks.length) {
if (!this.cache) {
return this.output.end();
}
return this.createReadCache();
}
let chunk = this.chunks[this.readPos++];
if (this.output.write(chunk) === false) {
return this.output.once("drain", () => {
this.sendNextChunk();
});
}
setImmediate(() => this.sendNextChunk());
}
sendSignedOutput() {
let keyPos = 0;
let signNextKey = () => {
if (keyPos >= this.keys.length) {
this.output.write(this.parser.rawHeaders);
return setImmediate(() => this.sendNextChunk());
}
let key = this.keys[keyPos++];
let dkimField = sign(this.headers, this.hashAlgo, this.bodyHash, {
domainName: key.domainName,
keySelector: key.keySelector,
privateKey: key.privateKey,
headerFieldNames: this.options.headerFieldNames,
skipFields: this.options.skipFields
});
if (dkimField) {
this.output.write(Buffer.from(dkimField + "\r\n"));
}
return setImmediate(signNextKey);
};
if (this.bodyHash && this.headers) {
return signNextKey();
}
this.output.write(this.parser.rawHeaders);
this.sendNextChunk();
}
createWriteCache() {
this.output.usingCache = true;
this.cache = fs15.createWriteStream(this.cachePath);
this.cache.once("error", (err) => {
this.cleanup();
this.relaxedBody.unpipe(this.cache);
this.relaxedBody.on("readable", () => {
while (this.relaxedBody.read() !== null) {
}
});
this.hasErrored = true;
this.output.emit("error", err);
});
this.cache.once("close", () => {
this.sendSignedOutput();
});
this.relaxedBody.removeAllListeners("readable");
this.relaxedBody.pipe(this.cache);
}
signStream() {
this.parser = new MessageParser;
this.relaxedBody = new RelaxedBody({
hashAlgo: this.hashAlgo
});
this.parser.on("headers", (value) => {
this.headers = value;
});
this.relaxedBody.on("hash", (value) => {
this.bodyHash = value;
});
this.relaxedBody.on("readable", () => {
let chunk;
if (this.cache) {
return;
}
while ((chunk = this.relaxedBody.read()) !== null) {
this.chunks.push(chunk);
this.chunklen += chunk.length;
if (this.chunklen >= this.cacheTreshold && this.cachePath) {
return this.createWriteCache();
}
}
});
this.relaxedBody.on("end", () => {
if (this.cache) {
return;
}
this.sendSignedOutput();
});
this.parser.pipe(this.relaxedBody);
setImmediate(() => this.input.pipe(this.parser));
}
}
class DKIM {
constructor(options) {
this.options = options || {};
this.keys = [].concat(this.options.keys || {
domainName: options.domainName,
keySelector: options.keySelector,
privateKey: options.privateKey
});
}
sign(input, extraOptions) {
let output = new PassThrough;
let inputStream = input;
let writeValue = false;
if (Buffer.isBuffer(input)) {
writeValue = input;
inputStream = new PassThrough;
} else if (typeof input === "string") {
writeValue = Buffer.from(input);
inputStream = new PassThrough;
}
let options = this.options;
if (extraOptions && Object.keys(extraOptions).length) {
options = {};
Object.keys(this.options || {}).forEach((key) => {
options[key] = this.options[key];
});
Object.keys(extraOptions || {}).forEach((key) => {
if (!(key in options)) {
options[key] = extraOptions[key];
}
});
}
let signer = new DKIMSigner(options, this.keys, inputStream, output);
setImmediate(() => {
signer.signStream();
if (writeValue) {
setImmediate(() => {
inputStream.end(writeValue);
});
}
});
return output;
}
}
module.exports = DKIM;
});
// node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js
var require_http_proxy_client = __commonJS((exports, module) => {
var net = __require("net");
var tls = __require("tls");
var urllib = __require("url");
function httpProxyClient(proxyUrl, destinationPort, destinationHost, callback) {
let proxy = urllib.parse(proxyUrl);
let options;
let connect;
let socket;
options = {
host: proxy.hostname,
port: Number(proxy.port) ? Number(proxy.port) : proxy.protocol === "https:" ? 443 : 80
};
if (proxy.protocol === "https:") {
options.rejectUnauthorized = false;
connect = tls.connect.bind(tls);
} else {
connect = net.connect.bind(net);
}
let finished = false;
let tempSocketErr = (err) => {
if (finished) {
return;
}
finished = true;
try {
socket.destroy();
} catch (E) {
}
callback(err);
};
let timeoutErr = () => {
let err = new Error("Proxy socket timed out");
err.code = "ETIMEDOUT";
tempSocketErr(err);
};
socket = connect(options, () => {
if (finished) {
return;
}
let reqHeaders = {
Host: destinationHost + ":" + destinationPort,
Connection: "close"
};
if (proxy.auth) {
reqHeaders["Proxy-Authorization"] = "Basic " + Buffer.from(proxy.auth).toString("base64");
}
socket.write("CONNECT " + destinationHost + ":" + destinationPort + " HTTP/1.1\r\n" + Object.keys(reqHeaders).map((key) => key + ": " + reqHeaders[key]).join("\r\n") + "\r\n\r\n");
let headers = "";
let onSocketData = (chunk) => {
let match;
let remainder;
if (finished) {
return;
}
headers += chunk.toString("binary");
if (match = headers.match(/\r\n\r\n/)) {
socket.removeListener("data", onSocketData);
remainder = headers.substr(match.index + match[0].length);
headers = headers.substr(0, match.index);
if (remainder) {
socket.unshift(Buffer.from(remainder, "binary"));
}
finished = true;
match = headers.match(/^HTTP\/\d+\.\d+ (\d+)/i);
if (!match || (match[1] || "").charAt(0) !== "2") {
try {
socket.destroy();
} catch (E) {
}
return callback(new Error("Invalid response from proxy" + (match && ": " + match[1] || "")));
}
socket.removeListener("error", tempSocketErr);
socket.removeListener("timeout", timeoutErr);
socket.setTimeout(0);
return callback(null, socket);
}
};
socket.on("data", onSocketData);
});
socket.setTimeout(httpProxyClient.timeout || 30 * 1000);
socket.on("timeout", timeoutErr);
socket.once("error", tempSocketErr);
}
module.exports = httpProxyClient;
});
// node_modules/nodemailer/lib/mailer/mail-message.js
var require_mail_message = __commonJS((exports, module) => {
var shared = require_shared();
var MimeNode = require_mime_node();
var mimeFuncs = require_mime_funcs();
class MailMessage {
constructor(mailer, data) {
this.mailer = mailer;
this.data = {};
this.message = null;
data = data || {};
let options = mailer.options || {};
let defaults = mailer._defaults || {};
Object.keys(data).forEach((key) => {
this.data[key] = data[key];
});
this.data.headers = this.data.headers || {};
Object.keys(defaults).forEach((key) => {
if (!(key in this.data)) {
this.data[key] = defaults[key];
} else if (key === "headers") {
Object.keys(defaults.headers).forEach((key2) => {
if (!(key2 in this.data.headers)) {
this.data.headers[key2] = defaults.headers[key2];
}
});
}
});
["disableFileAccess", "disableUrlAccess", "normalizeHeaderKey"].forEach((key) => {
if (key in options) {
this.data[key] = options[key];
}
});
}
resolveContent(...args) {
return shared.resolveContent(...args);
}
resolveAll(callback) {
let keys = [
[this.data, "html"],
[this.data, "text"],
[this.data, "watchHtml"],
[this.data, "amp"],
[this.data, "icalEvent"]
];
if (this.data.alternatives && this.data.alternatives.length) {
this.data.alternatives.forEach((alternative, i) => {
keys.push([this.data.alternatives, i]);
});
}
if (this.data.attachments && this.data.attachments.length) {
this.data.attachments.forEach((attachment, i) => {
if (!attachment.filename) {
attachment.filename = (attachment.path || attachment.href || "").split("/").pop().split("?").shift() || "attachment-" + (i + 1);
if (attachment.filename.indexOf(".") < 0) {
attachment.filename += "." + mimeFuncs.detectExtension(attachment.contentType);
}
}
if (!attachment.contentType) {
attachment.contentType = mimeFuncs.detectMimeType(attachment.filename || attachment.path || attachment.href || "bin");
}
keys.push([this.data.attachments, i]);
});
}
let mimeNode = new MimeNode;
let addressKeys = ["from", "to", "cc", "bcc", "sender", "replyTo"];
addressKeys.forEach((address) => {
let value;
if (this.message) {
value = [].concat(mimeNode._parseAddresses(this.message.getHeader(address === "replyTo" ? "reply-to" : address)) || []);
} else if (this.data[address]) {
value = [].concat(mimeNode._parseAddresses(this.data[address]) || []);
}
if (value && value.length) {
this.data[address] = value;
} else if (address in this.data) {
this.data[address] = null;
}
});
let singleKeys = ["from", "sender"];
singleKeys.forEach((address) => {
if (this.data[address]) {
this.data[address] = this.data[address].shift();
}
});
let pos = 0;
let resolveNext = () => {
if (pos >= keys.length) {
return callback(null, this.data);
}
let args = keys[pos++];
if (!args[0] || !args[0][args[1]]) {
return resolveNext();
}
shared.resolveContent(...args, (err, value) => {
if (err) {
return callback(err);
}
let node = {
content: value
};
if (args[0][args[1]] && typeof args[0][args[1]] === "object" && !Buffer.isBuffer(args[0][args[1]])) {
Object.keys(args[0][args[1]]).forEach((key) => {
if (!(key in node) && !["content", "path", "href", "raw"].includes(key)) {
node[key] = args[0][args[1]][key];
}
});
}
args[0][args[1]] = node;
resolveNext();
});
};
setImmediate(() => resolveNext());
}
normalize(callback) {
let envelope = this.data.envelope || this.message.getEnvelope();
let messageId = this.message.messageId();
this.resolveAll((err, data) => {
if (err) {
return callback(err);
}
data.envelope = envelope;
data.messageId = messageId;
["html", "text", "watchHtml", "amp"].forEach((key) => {
if (data[key] && data[key].content) {
if (typeof data[key].content === "string") {
data[key] = data[key].content;
} else if (Buffer.isBuffer(data[key].content)) {
data[key] = data[key].content.toString();
}
}
});
if (data.icalEvent && Buffer.isBuffer(data.icalEvent.content)) {
data.icalEvent.content = data.icalEvent.content.toString("base64");
data.icalEvent.encoding = "base64";
}
if (data.alternatives && data.alternatives.length) {
data.alternatives.forEach((alternative) => {
if (alternative && alternative.content && Buffer.isBuffer(alternative.content)) {
alternative.content = alternative.content.toString("base64");
alternative.encoding = "base64";
}
});
}
if (data.attachments && data.attachments.length) {
data.attachments.forEach((attachment) => {
if (attachment && attachment.content && Buffer.isBuffer(attachment.content)) {
attachment.content = attachment.content.toString("base64");
attachment.encoding = "base64";
}
});
}
data.normalizedHeaders = {};
Object.keys(data.headers || {}).forEach((key) => {
let value = [].concat(data.headers[key] || []).shift();
value = value && value.value || value;
if (value) {
if (["references", "in-reply-to", "message-id", "content-id"].includes(key)) {
value = this.message._encodeHeaderValue(key, value);
}
data.normalizedHeaders[key] = value;
}
});
if (data.list && typeof data.list === "object") {
let listHeaders = this._getListHeaders(data.list);
listHeaders.forEach((entry) => {
data.normalizedHeaders[entry.key] = entry.value.map((val) => val && val.value || val).join(", ");
});
}
if (data.references) {
data.normalizedHeaders.references = this.message._encodeHeaderValue("references", data.references);
}
if (data.inReplyTo) {
data.normalizedHeaders["in-reply-to"] = this.message._encodeHeaderValue("in-reply-to", data.inReplyTo);
}
return callback(null, data);
});
}
setMailerHeader() {
if (!this.message || !this.data.xMailer) {
return;
}
this.message.setHeader("X-Mailer", this.data.xMailer);
}
setPriorityHeaders() {
if (!this.message || !this.data.priority) {
return;
}
switch ((this.data.priority || "").toString().toLowerCase()) {
case "high":
this.message.setHeader("X-Priority", "1 (Highest)");
this.message.setHeader("X-MSMail-Priority", "High");
this.message.setHeader("Importance", "High");
break;
case "low":
this.message.setHeader("X-Priority", "5 (Lowest)");
this.message.setHeader("X-MSMail-Priority", "Low");
this.message.setHeader("Importance", "Low");
break;
default:
}
}
setListHeaders() {
if (!this.message || !this.data.list || typeof this.data.list !== "object") {
return;
}
if (this.data.list && typeof this.data.list === "object") {
this._getListHeaders(this.data.list).forEach((listHeader) => {
listHeader.value.forEach((value) => {
this.message.addHeader(listHeader.key, value);
});
});
}
}
_getListHeaders(listData) {
return Object.keys(listData).map((key) => ({
key: "list-" + key.toLowerCase().trim(),
value: [].concat(listData[key] || []).map((value) => ({
prepared: true,
foldLines: true,
value: [].concat(value || []).map((value2) => {
if (typeof value2 === "string") {
value2 = {
url: value2
};
}
if (value2 && value2.url) {
if (key.toLowerCase().trim() === "id") {
let comment2 = value2.comment || "";
if (mimeFuncs.isPlainText(comment2)) {
comment2 = '"' + comment2 + '"';
} else {
comment2 = mimeFuncs.encodeWord(comment2);
}
return (value2.comment ? comment2 + " " : "") + this._formatListUrl(value2.url).replace(/^<[^:]+\/{,2}/, "");
}
let comment = value2.comment || "";
if (!mimeFuncs.isPlainText(comment)) {
comment = mimeFuncs.encodeWord(comment);
}
return this._formatListUrl(value2.url) + (value2.comment ? " (" + comment + ")" : "");
}
return "";
}).filter((value2) => value2).join(", ")
}))
}));
}
_formatListUrl(url) {
url = url.replace(/[\s<]+|[\s>]+/g, "");
if (/^(https?|mailto|ftp):/.test(url)) {
return "<" + url + ">";
}
if (/^[^@]+@[^@]+$/.test(url)) {
return "<mailto:" + url + ">";
}
return "<http://" + url + ">";
}
}
module.exports = MailMessage;
});
// node_modules/nodemailer/lib/mailer/index.js
var require_mailer = __commonJS((exports, module) => {
var EventEmitter = __require("events");
var shared = require_shared();
var mimeTypes = require_mime_types();
var MailComposer = require_mail_composer();
var DKIM = require_dkim();
var httpProxyClient = require_http_proxy_client();
var util = __require("util");
var urllib = __require("url");
var packageData = require_package2();
var MailMessage = require_mail_message();
var net = __require("net");
var dns = __require("dns");
var crypto2 = __require("crypto");
class Mail extends EventEmitter {
constructor(transporter, options, defaults) {
super();
this.options = options || {};
this._defaults = defaults || {};
this._defaultPlugins = {
compile: [(...args) => this._convertDataImages(...args)],
stream: []
};
this._userPlugins = {
compile: [],
stream: []
};
this.meta = new Map;
this.dkim = this.options.dkim ? new DKIM(this.options.dkim) : false;
this.transporter = transporter;
this.transporter.mailer = this;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "mail"
});
this.logger.debug({
tnx: "create"
}, "Creating transport: %s", this.getVersionString());
if (typeof this.transporter.on === "function") {
this.transporter.on("log", (log) => {
this.logger.debug({
tnx: "transport"
}, "%s: %s", log.type, log.message);
});
this.transporter.on("error", (err) => {
this.logger.error({
err,
tnx: "transport"
}, "Transport Error: %s", err.message);
this.emit("error", err);
});
this.transporter.on("idle", (...args) => {
this.emit("idle", ...args);
});
}
["close", "isIdle", "verify"].forEach((method) => {
this[method] = (...args) => {
if (typeof this.transporter[method] === "function") {
if (method === "verify" && typeof this.getSocket === "function") {
this.transporter.getSocket = this.getSocket;
this.getSocket = false;
}
return this.transporter[method](...args);
} else {
this.logger.warn({
tnx: "transport",
methodName: method
}, "Non existing method %s called for transport", method);
return false;
}
};
});
if (this.options.proxy && typeof this.options.proxy === "string") {
this.setupProxy(this.options.proxy);
}
}
use(step, plugin) {
step = (step || "").toString();
if (!this._userPlugins.hasOwnProperty(step)) {
this._userPlugins[step] = [plugin];
} else {
this._userPlugins[step].push(plugin);
}
return this;
}
sendMail(data, callback = null) {
let promise;
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
if (typeof this.getSocket === "function") {
this.transporter.getSocket = this.getSocket;
this.getSocket = false;
}
let mail = new MailMessage(this, data);
this.logger.debug({
tnx: "transport",
name: this.transporter.name,
version: this.transporter.version,
action: "send"
}, "Sending mail using %s/%s", this.transporter.name, this.transporter.version);
this._processPlugins("compile", mail, (err) => {
if (err) {
this.logger.error({
err,
tnx: "plugin",
action: "compile"
}, "PluginCompile Error: %s", err.message);
return callback(err);
}
mail.message = new MailComposer(mail.data).compile();
mail.setMailerHeader();
mail.setPriorityHeaders();
mail.setListHeaders();
this._processPlugins("stream", mail, (err2) => {
if (err2) {
this.logger.error({
err: err2,
tnx: "plugin",
action: "stream"
}, "PluginStream Error: %s", err2.message);
return callback(err2);
}
if (mail.data.dkim || this.dkim) {
mail.message.processFunc((input) => {
let dkim = mail.data.dkim ? new DKIM(mail.data.dkim) : this.dkim;
this.logger.debug({
tnx: "DKIM",
messageId: mail.message.messageId(),
dkimDomains: dkim.keys.map((key) => key.keySelector + "." + key.domainName).join(", ")
}, "Signing outgoing message with %s keys", dkim.keys.length);
return dkim.sign(input, mail.data._dkim);
});
}
this.transporter.send(mail, (...args) => {
if (args[0]) {
this.logger.error({
err: args[0],
tnx: "transport",
action: "send"
}, "Send Error: %s", args[0].message);
}
callback(...args);
});
});
});
return promise;
}
getVersionString() {
return util.format("%s (%s; +%s; %s/%s)", packageData.name, packageData.version, packageData.homepage, this.transporter.name, this.transporter.version);
}
_processPlugins(step, mail, callback) {
step = (step || "").toString();
if (!this._userPlugins.hasOwnProperty(step)) {
return callback();
}
let userPlugins = this._userPlugins[step] || [];
let defaultPlugins = this._defaultPlugins[step] || [];
if (userPlugins.length) {
this.logger.debug({
tnx: "transaction",
pluginCount: userPlugins.length,
step
}, "Using %s plugins for %s", userPlugins.length, step);
}
if (userPlugins.length + defaultPlugins.length === 0) {
return callback();
}
let pos = 0;
let block = "default";
let processPlugins = () => {
let curplugins = block === "default" ? defaultPlugins : userPlugins;
if (pos >= curplugins.length) {
if (block === "default" && userPlugins.length) {
block = "user";
pos = 0;
curplugins = userPlugins;
} else {
return callback();
}
}
let plugin = curplugins[pos++];
plugin(mail, (err) => {
if (err) {
return callback(err);
}
processPlugins();
});
};
processPlugins();
}
setupProxy(proxyUrl) {
let proxy = urllib.parse(proxyUrl);
this.getSocket = (options, callback) => {
let protocol = proxy.protocol.replace(/:$/, "").toLowerCase();
if (this.meta.has("proxy_handler_" + protocol)) {
return this.meta.get("proxy_handler_" + protocol)(proxy, options, callback);
}
switch (protocol) {
case "http":
case "https":
httpProxyClient(proxy.href, options.port, options.host, (err, socket) => {
if (err) {
return callback(err);
}
return callback(null, {
connection: socket
});
});
return;
case "socks":
case "socks5":
case "socks4":
case "socks4a": {
if (!this.meta.has("proxy_socks_module")) {
return callback(new Error("Socks module not loaded"));
}
let connect = (ipaddress) => {
let proxyV2 = !!this.meta.get("proxy_socks_module").SocksClient;
let socksClient = proxyV2 ? this.meta.get("proxy_socks_module").SocksClient : this.meta.get("proxy_socks_module");
let proxyType = Number(proxy.protocol.replace(/\D/g, "")) || 5;
let connectionOpts = {
proxy: {
ipaddress,
port: Number(proxy.port),
type: proxyType
},
[proxyV2 ? "destination" : "target"]: {
host: options.host,
port: options.port
},
command: "connect"
};
if (proxy.auth) {
let username = decodeURIComponent(proxy.auth.split(":").shift());
let password = decodeURIComponent(proxy.auth.split(":").pop());
if (proxyV2) {
connectionOpts.proxy.userId = username;
connectionOpts.proxy.password = password;
} else if (proxyType === 4) {
connectionOpts.userid = username;
} else {
connectionOpts.authentication = {
username,
password
};
}
}
socksClient.createConnection(connectionOpts, (err, info) => {
if (err) {
return callback(err);
}
return callback(null, {
connection: info.socket || info
});
});
};
if (net.isIP(proxy.hostname)) {
return connect(proxy.hostname);
}
return dns.resolve(proxy.hostname, (err, address) => {
if (err) {
return callback(err);
}
connect(Array.isArray(address) ? address[0] : address);
});
}
}
callback(new Error("Unknown proxy configuration"));
};
}
_convertDataImages(mail, callback) {
if (!this.options.attachDataUrls && !mail.data.attachDataUrls || !mail.data.html) {
return callback();
}
mail.resolveContent(mail.data, "html", (err, html) => {
if (err) {
return callback(err);
}
let cidCounter = 0;
html = (html || "").toString().replace(/(<img\b[^<>]{0,1024} src\s{0,20}=[\s"']{0,20})(data:([^;]+);[^"'>\s]+)/gi, (match, prefix, dataUri, mimeType) => {
let cid = crypto2.randomBytes(10).toString("hex") + "@localhost";
if (!mail.data.attachments) {
mail.data.attachments = [];
}
if (!Array.isArray(mail.data.attachments)) {
mail.data.attachments = [].concat(mail.data.attachments || []);
}
mail.data.attachments.push({
path: dataUri,
cid,
filename: "image-" + ++cidCounter + "." + mimeTypes.detectExtension(mimeType)
});
return prefix + "cid:" + cid;
});
mail.data.html = html;
callback();
});
}
set(key, value) {
return this.meta.set(key, value);
}
get(key) {
return this.meta.get(key);
}
}
module.exports = Mail;
});
// node_modules/nodemailer/lib/smtp-connection/data-stream.js
var require_data_stream = __commonJS((exports, module) => {
var stream = __require("stream");
var Transform = stream.Transform;
class DataStream extends Transform {
constructor(options) {
super(options);
this.options = options || {};
this._curLine = "";
this.inByteCount = 0;
this.outByteCount = 0;
this.lastByte = false;
}
_transform(chunk, encoding, done) {
let chunks = [];
let chunklen = 0;
let i, len, lastPos = 0;
let buf;
if (!chunk || !chunk.length) {
return done();
}
if (typeof chunk === "string") {
chunk = Buffer.from(chunk);
}
this.inByteCount += chunk.length;
for (i = 0, len = chunk.length;i < len; i++) {
if (chunk[i] === 46) {
if (i && chunk[i - 1] === 10 || !i && (!this.lastByte || this.lastByte === 10)) {
buf = chunk.slice(lastPos, i + 1);
chunks.push(buf);
chunks.push(Buffer.from("."));
chunklen += buf.length + 1;
lastPos = i + 1;
}
} else if (chunk[i] === 10) {
if (i && chunk[i - 1] !== 13 || !i && this.lastByte !== 13) {
if (i > lastPos) {
buf = chunk.slice(lastPos, i);
chunks.push(buf);
chunklen += buf.length + 2;
} else {
chunklen += 2;
}
chunks.push(Buffer.from("\r\n"));
lastPos = i + 1;
}
}
}
if (chunklen) {
if (lastPos < chunk.length) {
buf = chunk.slice(lastPos);
chunks.push(buf);
chunklen += buf.length;
}
this.outByteCount += chunklen;
this.push(Buffer.concat(chunks, chunklen));
} else {
this.outByteCount += chunk.length;
this.push(chunk);
}
this.lastByte = chunk[chunk.length - 1];
done();
}
_flush(done) {
let buf;
if (this.lastByte === 10) {
buf = Buffer.from(".\r\n");
} else if (this.lastByte === 13) {
buf = Buffer.from("\n.\r\n");
} else {
buf = Buffer.from("\r\n.\r\n");
}
this.outByteCount += buf.length;
this.push(buf);
done();
}
}
module.exports = DataStream;
});
// node_modules/nodemailer/lib/smtp-connection/index.js
var require_smtp_connection = __commonJS((exports, module) => {
var packageInfo = require_package2();
var EventEmitter = __require("events").EventEmitter;
var net = __require("net");
var tls = __require("tls");
var os = __require("os");
var crypto2 = __require("crypto");
var DataStream = require_data_stream();
var PassThrough = __require("stream").PassThrough;
var shared = require_shared();
var CONNECTION_TIMEOUT = 2 * 60 * 1000;
var SOCKET_TIMEOUT = 10 * 60 * 1000;
var GREETING_TIMEOUT = 30 * 1000;
var DNS_TIMEOUT = 30 * 1000;
class SMTPConnection extends EventEmitter {
constructor(options) {
super(options);
this.id = crypto2.randomBytes(8).toString("base64").replace(/\W/g, "");
this.stage = "init";
this.options = options || {};
this.secureConnection = !!this.options.secure;
this.alreadySecured = !!this.options.secured;
this.port = Number(this.options.port) || (this.secureConnection ? 465 : 587);
this.host = this.options.host || "localhost";
this.servername = this.options.servername ? this.options.servername : !net.isIP(this.host) ? this.host : false;
this.allowInternalNetworkInterfaces = this.options.allowInternalNetworkInterfaces || false;
if (typeof this.options.secure === "undefined" && this.port === 465) {
this.secureConnection = true;
}
this.name = this.options.name || this._getHostname();
this.logger = shared.getLogger(this.options, {
component: this.options.component || "smtp-connection",
sid: this.id
});
this.customAuth = new Map;
Object.keys(this.options.customAuth || {}).forEach((key) => {
let mapKey = (key || "").toString().trim().toUpperCase();
if (!mapKey) {
return;
}
this.customAuth.set(mapKey, this.options.customAuth[key]);
});
this.version = packageInfo.version;
this.authenticated = false;
this.destroyed = false;
this.secure = !!this.secureConnection;
this._remainder = "";
this._responseQueue = [];
this.lastServerResponse = false;
this._socket = false;
this._supportedAuth = [];
this.allowsAuth = false;
this._envelope = false;
this._supportedExtensions = [];
this._maxAllowedSize = 0;
this._responseActions = [];
this._recipientQueue = [];
this._greetingTimeout = false;
this._connectionTimeout = false;
this._destroyed = false;
this._closing = false;
this._onSocketData = (chunk) => this._onData(chunk);
this._onSocketError = (error) => this._onError(error, "ESOCKET", false, "CONN");
this._onSocketClose = () => this._onClose();
this._onSocketEnd = () => this._onEnd();
this._onSocketTimeout = () => this._onTimeout();
}
connect(connectCallback) {
if (typeof connectCallback === "function") {
this.once("connect", () => {
this.logger.debug({
tnx: "smtp"
}, "SMTP handshake finished");
connectCallback();
});
const isDestroyedMessage = this._isDestroyedMessage("connect");
if (isDestroyedMessage) {
return connectCallback(this._formatError(isDestroyedMessage, "ECONNECTION", false, "CONN"));
}
}
let opts = {
port: this.port,
host: this.host,
allowInternalNetworkInterfaces: this.allowInternalNetworkInterfaces,
timeout: this.options.dnsTimeout || DNS_TIMEOUT
};
if (this.options.localAddress) {
opts.localAddress = this.options.localAddress;
}
let setupConnectionHandlers = () => {
this._connectionTimeout = setTimeout(() => {
this._onError("Connection timeout", "ETIMEDOUT", false, "CONN");
}, this.options.connectionTimeout || CONNECTION_TIMEOUT);
this._socket.on("error", this._onSocketError);
};
if (this.options.connection) {
this._socket = this.options.connection;
if (this.secureConnection && !this.alreadySecured) {
setImmediate(() => this._upgradeConnection((err) => {
if (err) {
this._onError(new Error("Error initiating TLS - " + (err.message || err)), "ETLS", false, "CONN");
return;
}
this._onConnect();
}));
} else {
setImmediate(() => this._onConnect());
}
return;
} else if (this.options.socket) {
this._socket = this.options.socket;
return shared.resolveHostname(opts, (err, resolved) => {
if (err) {
return setImmediate(() => this._onError(err, "EDNS", false, "CONN"));
}
this.logger.debug({
tnx: "dns",
source: opts.host,
resolved: resolved.host,
cached: !!resolved.cached
}, "Resolved %s as %s [cache %s]", opts.host, resolved.host, resolved.cached ? "hit" : "miss");
Object.keys(resolved).forEach((key) => {
if (key.charAt(0) !== "_" && resolved[key]) {
opts[key] = resolved[key];
}
});
try {
this._socket.connect(this.port, this.host, () => {
this._socket.setKeepAlive(true);
this._onConnect();
});
setupConnectionHandlers();
} catch (E) {
return setImmediate(() => this._onError(E, "ECONNECTION", false, "CONN"));
}
});
} else if (this.secureConnection) {
if (this.options.tls) {
Object.keys(this.options.tls).forEach((key) => {
opts[key] = this.options.tls[key];
});
}
if (this.servername && !opts.servername) {
opts.servername = this.servername;
}
return shared.resolveHostname(opts, (err, resolved) => {
if (err) {
return setImmediate(() => this._onError(err, "EDNS", false, "CONN"));
}
this.logger.debug({
tnx: "dns",
source: opts.host,
resolved: resolved.host,
cached: !!resolved.cached
}, "Resolved %s as %s [cache %s]", opts.host, resolved.host, resolved.cached ? "hit" : "miss");
Object.keys(resolved).forEach((key) => {
if (key.charAt(0) !== "_" && resolved[key]) {
opts[key] = resolved[key];
}
});
try {
this._socket = tls.connect(opts, () => {
this._socket.setKeepAlive(true);
this._onConnect();
});
setupConnectionHandlers();
} catch (E) {
return setImmediate(() => this._onError(E, "ECONNECTION", false, "CONN"));
}
});
} else {
return shared.resolveHostname(opts, (err, resolved) => {
if (err) {
return setImmediate(() => this._onError(err, "EDNS", false, "CONN"));
}
this.logger.debug({
tnx: "dns",
source: opts.host,
resolved: resolved.host,
cached: !!resolved.cached
}, "Resolved %s as %s [cache %s]", opts.host, resolved.host, resolved.cached ? "hit" : "miss");
Object.keys(resolved).forEach((key) => {
if (key.charAt(0) !== "_" && resolved[key]) {
opts[key] = resolved[key];
}
});
try {
this._socket = net.connect(opts, () => {
this._socket.setKeepAlive(true);
this._onConnect();
});
setupConnectionHandlers();
} catch (E) {
return setImmediate(() => this._onError(E, "ECONNECTION", false, "CONN"));
}
});
}
}
quit() {
this._sendCommand("QUIT");
this._responseActions.push(this.close);
}
close() {
clearTimeout(this._connectionTimeout);
clearTimeout(this._greetingTimeout);
this._responseActions = [];
if (this._closing) {
return;
}
this._closing = true;
let closeMethod = "end";
if (this.stage === "init") {
closeMethod = "destroy";
}
this.logger.debug({
tnx: "smtp"
}, 'Closing connection to the server using "%s"', closeMethod);
let socket = this._socket && this._socket.socket || this._socket;
if (socket && !socket.destroyed) {
try {
this._socket[closeMethod]();
} catch (E) {
}
}
this._destroy();
}
login(authData, callback) {
const isDestroyedMessage = this._isDestroyedMessage("login");
if (isDestroyedMessage) {
return callback(this._formatError(isDestroyedMessage, "ECONNECTION", false, "API"));
}
this._auth = authData || {};
this._authMethod = (this._auth.method || "").toString().trim().toUpperCase() || false;
if (!this._authMethod && this._auth.oauth2 && !this._auth.credentials) {
this._authMethod = "XOAUTH2";
} else if (!this._authMethod || this._authMethod === "XOAUTH2" && !this._auth.oauth2) {
this._authMethod = (this._supportedAuth[0] || "PLAIN").toUpperCase().trim();
}
if (this._authMethod !== "XOAUTH2" && (!this._auth.credentials || !this._auth.credentials.user || !this._auth.credentials.pass)) {
if (this._auth.user && this._auth.pass || this.customAuth.has(this._authMethod)) {
this._auth.credentials = {
user: this._auth.user,
pass: this._auth.pass,
options: this._auth.options
};
} else {
return callback(this._formatError('Missing credentials for "' + this._authMethod + '"', "EAUTH", false, "API"));
}
}
if (this.customAuth.has(this._authMethod)) {
let handler = this.customAuth.get(this._authMethod);
let lastResponse;
let returned = false;
let resolve = () => {
if (returned) {
return;
}
returned = true;
this.logger.info({
tnx: "smtp",
username: this._auth.user,
action: "authenticated",
method: this._authMethod
}, "User %s authenticated", JSON.stringify(this._auth.user));
this.authenticated = true;
callback(null, true);
};
let reject = (err) => {
if (returned) {
return;
}
returned = true;
callback(this._formatError(err, "EAUTH", lastResponse, "AUTH " + this._authMethod));
};
let handlerResponse = handler({
auth: this._auth,
method: this._authMethod,
extensions: [].concat(this._supportedExtensions),
authMethods: [].concat(this._supportedAuth),
maxAllowedSize: this._maxAllowedSize || false,
sendCommand: (cmd, done) => {
let promise;
if (!done) {
promise = new Promise((resolve2, reject2) => {
done = shared.callbackPromise(resolve2, reject2);
});
}
this._responseActions.push((str) => {
lastResponse = str;
let codes = str.match(/^(\d+)(?:\s(\d+\.\d+\.\d+))?\s/);
let data = {
command: cmd,
response: str
};
if (codes) {
data.status = Number(codes[1]) || 0;
if (codes[2]) {
data.code = codes[2];
}
data.text = str.substr(codes[0].length);
} else {
data.text = str;
data.status = 0;
}
done(null, data);
});
setImmediate(() => this._sendCommand(cmd));
return promise;
},
resolve,
reject
});
if (handlerResponse && typeof handlerResponse.catch === "function") {
handlerResponse.then(resolve).catch(reject);
}
return;
}
switch (this._authMethod) {
case "XOAUTH2":
this._handleXOauth2Token(false, callback);
return;
case "LOGIN":
this._responseActions.push((str) => {
this._actionAUTH_LOGIN_USER(str, callback);
});
this._sendCommand("AUTH LOGIN");
return;
case "PLAIN":
this._responseActions.push((str) => {
this._actionAUTHComplete(str, callback);
});
this._sendCommand("AUTH PLAIN " + Buffer.from("\0" + this._auth.credentials.user + "\0" + this._auth.credentials.pass, "utf-8").toString("base64"), "AUTH PLAIN " + Buffer.from("\0" + this._auth.credentials.user + "\0" + "/* secret */", "utf-8").toString("base64"));
return;
case "CRAM-MD5":
this._responseActions.push((str) => {
this._actionAUTH_CRAM_MD5(str, callback);
});
this._sendCommand("AUTH CRAM-MD5");
return;
}
return callback(this._formatError('Unknown authentication method "' + this._authMethod + '"', "EAUTH", false, "API"));
}
send(envelope, message, done) {
if (!message) {
return done(this._formatError("Empty message", "EMESSAGE", false, "API"));
}
const isDestroyedMessage = this._isDestroyedMessage("send message");
if (isDestroyedMessage) {
return done(this._formatError(isDestroyedMessage, "ECONNECTION", false, "API"));
}
if (this._maxAllowedSize && envelope.size > this._maxAllowedSize) {
return setImmediate(() => {
done(this._formatError("Message size larger than allowed " + this._maxAllowedSize, "EMESSAGE", false, "MAIL FROM"));
});
}
let returned = false;
let callback = function() {
if (returned) {
return;
}
returned = true;
done(...arguments);
};
if (typeof message.on === "function") {
message.on("error", (err) => callback(this._formatError(err, "ESTREAM", false, "API")));
}
let startTime = Date.now();
this._setEnvelope(envelope, (err, info) => {
if (err) {
return callback(err);
}
let envelopeTime = Date.now();
let stream = this._createSendStream((err2, str) => {
if (err2) {
return callback(err2);
}
info.envelopeTime = envelopeTime - startTime;
info.messageTime = Date.now() - envelopeTime;
info.messageSize = stream.outByteCount;
info.response = str;
return callback(null, info);
});
if (typeof message.pipe === "function") {
message.pipe(stream);
} else {
stream.write(message);
stream.end();
}
});
}
reset(callback) {
this._sendCommand("RSET");
this._responseActions.push((str) => {
if (str.charAt(0) !== "2") {
return callback(this._formatError("Could not reset session state. response=" + str, "EPROTOCOL", str, "RSET"));
}
this._envelope = false;
return callback(null, true);
});
}
_onConnect() {
clearTimeout(this._connectionTimeout);
this.logger.info({
tnx: "network",
localAddress: this._socket.localAddress,
localPort: this._socket.localPort,
remoteAddress: this._socket.remoteAddress,
remotePort: this._socket.remotePort
}, "%s established to %s:%s", this.secure ? "Secure connection" : "Connection", this._socket.remoteAddress, this._socket.remotePort);
if (this._destroyed) {
this.close();
return;
}
this.stage = "connected";
this._socket.removeListener("data", this._onSocketData);
this._socket.removeListener("timeout", this._onSocketTimeout);
this._socket.removeListener("close", this._onSocketClose);
this._socket.removeListener("end", this._onSocketEnd);
this._socket.on("data", this._onSocketData);
this._socket.once("close", this._onSocketClose);
this._socket.once("end", this._onSocketEnd);
this._socket.setTimeout(this.options.socketTimeout || SOCKET_TIMEOUT);
this._socket.on("timeout", this._onSocketTimeout);
this._greetingTimeout = setTimeout(() => {
if (this._socket && !this._destroyed && this._responseActions[0] === this._actionGreeting) {
this._onError("Greeting never received", "ETIMEDOUT", false, "CONN");
}
}, this.options.greetingTimeout || GREETING_TIMEOUT);
this._responseActions.push(this._actionGreeting);
this._socket.resume();
}
_onData(chunk) {
if (this._destroyed || !chunk || !chunk.length) {
return;
}
let data = (chunk || "").toString("binary");
let lines = (this._remainder + data).split(/\r?\n/);
let lastline;
this._remainder = lines.pop();
for (let i = 0, len = lines.length;i < len; i++) {
if (this._responseQueue.length) {
lastline = this._responseQueue[this._responseQueue.length - 1];
if (/^\d+-/.test(lastline.split("\n").pop())) {
this._responseQueue[this._responseQueue.length - 1] += "\n" + lines[i];
continue;
}
}
this._responseQueue.push(lines[i]);
}
if (this._responseQueue.length) {
lastline = this._responseQueue[this._responseQueue.length - 1];
if (/^\d+-/.test(lastline.split("\n").pop())) {
return;
}
}
this._processResponse();
}
_onError(err, type, data, command) {
clearTimeout(this._connectionTimeout);
clearTimeout(this._greetingTimeout);
if (this._destroyed) {
return;
}
err = this._formatError(err, type, data, command);
this.logger.error(data, err.message);
this.emit("error", err);
this.close();
}
_formatError(message, type, response, command) {
let err;
if (/Error\]$/i.test(Object.prototype.toString.call(message))) {
err = message;
} else {
err = new Error(message);
}
if (type && type !== "Error") {
err.code = type;
}
if (response) {
err.response = response;
err.message += ": " + response;
}
let responseCode = typeof response === "string" && Number((response.match(/^\d+/) || [])[0]) || false;
if (responseCode) {
err.responseCode = responseCode;
}
if (command) {
err.command = command;
}
return err;
}
_onClose() {
let serverResponse = false;
if (this._remainder && this._remainder.trim()) {
if (this.options.debug || this.options.transactionLog) {
this.logger.debug({
tnx: "server"
}, this._remainder.replace(/\r?\n$/, ""));
}
this.lastServerResponse = serverResponse = this._remainder.trim();
}
this.logger.info({
tnx: "network"
}, "Connection closed");
if (this.upgrading && !this._destroyed) {
return this._onError(new Error("Connection closed unexpectedly"), "ETLS", serverResponse, "CONN");
} else if (![this._actionGreeting, this.close].includes(this._responseActions[0]) && !this._destroyed) {
return this._onError(new Error("Connection closed unexpectedly"), "ECONNECTION", serverResponse, "CONN");
} else if (/^[45]\d{2}\b/.test(serverResponse)) {
return this._onError(new Error("Connection closed unexpectedly"), "ECONNECTION", serverResponse, "CONN");
}
this._destroy();
}
_onEnd() {
if (this._socket && !this._socket.destroyed) {
this._socket.destroy();
}
}
_onTimeout() {
return this._onError(new Error("Timeout"), "ETIMEDOUT", false, "CONN");
}
_destroy() {
if (this._destroyed) {
return;
}
this._destroyed = true;
this.emit("end");
}
_upgradeConnection(callback) {
this._socket.removeListener("data", this._onSocketData);
this._socket.removeListener("timeout", this._onSocketTimeout);
let socketPlain = this._socket;
let opts = {
socket: this._socket,
host: this.host
};
Object.keys(this.options.tls || {}).forEach((key) => {
opts[key] = this.options.tls[key];
});
if (this.servername && !opts.servername) {
opts.servername = this.servername;
}
this.upgrading = true;
try {
this._socket = tls.connect(opts, () => {
this.secure = true;
this.upgrading = false;
this._socket.on("data", this._onSocketData);
socketPlain.removeListener("close", this._onSocketClose);
socketPlain.removeListener("end", this._onSocketEnd);
return callback(null, true);
});
} catch (err) {
return callback(err);
}
this._socket.on("error", this._onSocketError);
this._socket.once("close", this._onSocketClose);
this._socket.once("end", this._onSocketEnd);
this._socket.setTimeout(this.options.socketTimeout || SOCKET_TIMEOUT);
this._socket.on("timeout", this._onSocketTimeout);
socketPlain.resume();
}
_processResponse() {
if (!this._responseQueue.length) {
return false;
}
let str = this.lastServerResponse = (this._responseQueue.shift() || "").toString();
if (/^\d+-/.test(str.split("\n").pop())) {
return;
}
if (this.options.debug || this.options.transactionLog) {
this.logger.debug({
tnx: "server"
}, str.replace(/\r?\n$/, ""));
}
if (!str.trim()) {
setImmediate(() => this._processResponse());
}
let action = this._responseActions.shift();
if (typeof action === "function") {
action.call(this, str);
setImmediate(() => this._processResponse());
} else {
return this._onError(new Error("Unexpected Response"), "EPROTOCOL", str, "CONN");
}
}
_sendCommand(str, logStr) {
if (this._destroyed) {
return;
}
if (this._socket.destroyed) {
return this.close();
}
if (this.options.debug || this.options.transactionLog) {
this.logger.debug({
tnx: "client"
}, (logStr || str || "").toString().replace(/\r?\n$/, ""));
}
this._socket.write(Buffer.from(str + "\r\n", "utf-8"));
}
_setEnvelope(envelope, callback) {
let args = [];
let useSmtpUtf8 = false;
this._envelope = envelope || {};
this._envelope.from = (this._envelope.from && this._envelope.from.address || this._envelope.from || "").toString().trim();
this._envelope.to = [].concat(this._envelope.to || []).map((to) => (to && to.address || to || "").toString().trim());
if (!this._envelope.to.length) {
return callback(this._formatError("No recipients defined", "EENVELOPE", false, "API"));
}
if (this._envelope.from && /[\r\n<>]/.test(this._envelope.from)) {
return callback(this._formatError("Invalid sender " + JSON.stringify(this._envelope.from), "EENVELOPE", false, "API"));
}
if (/[\x80-\uFFFF]/.test(this._envelope.from)) {
useSmtpUtf8 = true;
}
for (let i = 0, len = this._envelope.to.length;i < len; i++) {
if (!this._envelope.to[i] || /[\r\n<>]/.test(this._envelope.to[i])) {
return callback(this._formatError("Invalid recipient " + JSON.stringify(this._envelope.to[i]), "EENVELOPE", false, "API"));
}
if (/[\x80-\uFFFF]/.test(this._envelope.to[i])) {
useSmtpUtf8 = true;
}
}
this._envelope.rcptQueue = JSON.parse(JSON.stringify(this._envelope.to || []));
this._envelope.rejected = [];
this._envelope.rejectedErrors = [];
this._envelope.accepted = [];
if (this._envelope.dsn) {
try {
this._envelope.dsn = this._setDsnEnvelope(this._envelope.dsn);
} catch (err) {
return callback(this._formatError("Invalid DSN " + err.message, "EENVELOPE", false, "API"));
}
}
this._responseActions.push((str) => {
this._actionMAIL(str, callback);
});
if (useSmtpUtf8 && this._supportedExtensions.includes("SMTPUTF8")) {
args.push("SMTPUTF8");
this._usingSmtpUtf8 = true;
}
if (this._envelope.use8BitMime && this._supportedExtensions.includes("8BITMIME")) {
args.push("BODY=8BITMIME");
this._using8BitMime = true;
}
if (this._envelope.size && this._supportedExtensions.includes("SIZE")) {
args.push("SIZE=" + this._envelope.size);
}
if (this._envelope.dsn && this._supportedExtensions.includes("DSN")) {
if (this._envelope.dsn.ret) {
args.push("RET=" + shared.encodeXText(this._envelope.dsn.ret));
}
if (this._envelope.dsn.envid) {
args.push("ENVID=" + shared.encodeXText(this._envelope.dsn.envid));
}
}
this._sendCommand("MAIL FROM:<" + this._envelope.from + ">" + (args.length ? " " + args.join(" ") : ""));
}
_setDsnEnvelope(params) {
let ret = (params.ret || params.return || "").toString().toUpperCase() || null;
if (ret) {
switch (ret) {
case "HDRS":
case "HEADERS":
ret = "HDRS";
break;
case "FULL":
case "BODY":
ret = "FULL";
break;
}
}
if (ret && !["FULL", "HDRS"].includes(ret)) {
throw new Error("ret: " + JSON.stringify(ret));
}
let envid = (params.envid || params.id || "").toString() || null;
let notify = params.notify || null;
if (notify) {
if (typeof notify === "string") {
notify = notify.split(",");
}
notify = notify.map((n) => n.trim().toUpperCase());
let validNotify = ["NEVER", "SUCCESS", "FAILURE", "DELAY"];
let invaliNotify = notify.filter((n) => !validNotify.includes(n));
if (invaliNotify.length || notify.length > 1 && notify.includes("NEVER")) {
throw new Error("notify: " + JSON.stringify(notify.join(",")));
}
notify = notify.join(",");
}
let orcpt = (params.recipient || params.orcpt || "").toString() || null;
if (orcpt && orcpt.indexOf(";") < 0) {
orcpt = "rfc822;" + orcpt;
}
return {
ret,
envid,
notify,
orcpt
};
}
_getDsnRcptToArgs() {
let args = [];
if (this._envelope.dsn && this._supportedExtensions.includes("DSN")) {
if (this._envelope.dsn.notify) {
args.push("NOTIFY=" + shared.encodeXText(this._envelope.dsn.notify));
}
if (this._envelope.dsn.orcpt) {
args.push("ORCPT=" + shared.encodeXText(this._envelope.dsn.orcpt));
}
}
return args.length ? " " + args.join(" ") : "";
}
_createSendStream(callback) {
let dataStream = new DataStream;
let logStream;
if (this.options.lmtp) {
this._envelope.accepted.forEach((recipient, i) => {
let final = i === this._envelope.accepted.length - 1;
this._responseActions.push((str) => {
this._actionLMTPStream(recipient, final, str, callback);
});
});
} else {
this._responseActions.push((str) => {
this._actionSMTPStream(str, callback);
});
}
dataStream.pipe(this._socket, {
end: false
});
if (this.options.debug) {
logStream = new PassThrough;
logStream.on("readable", () => {
let chunk;
while (chunk = logStream.read()) {
this.logger.debug({
tnx: "message"
}, chunk.toString("binary").replace(/\r?\n$/, ""));
}
});
dataStream.pipe(logStream);
}
dataStream.once("end", () => {
this.logger.info({
tnx: "message",
inByteCount: dataStream.inByteCount,
outByteCount: dataStream.outByteCount
}, "<%s bytes encoded mime message (source size %s bytes)>", dataStream.outByteCount, dataStream.inByteCount);
});
return dataStream;
}
_actionGreeting(str) {
clearTimeout(this._greetingTimeout);
if (str.substr(0, 3) !== "220") {
this._onError(new Error("Invalid greeting. response=" + str), "EPROTOCOL", str, "CONN");
return;
}
if (this.options.lmtp) {
this._responseActions.push(this._actionLHLO);
this._sendCommand("LHLO " + this.name);
} else {
this._responseActions.push(this._actionEHLO);
this._sendCommand("EHLO " + this.name);
}
}
_actionLHLO(str) {
if (str.charAt(0) !== "2") {
this._onError(new Error("Invalid LHLO. response=" + str), "EPROTOCOL", str, "LHLO");
return;
}
this._actionEHLO(str);
}
_actionEHLO(str) {
let match;
if (str.substr(0, 3) === "421") {
this._onError(new Error("Server terminates connection. response=" + str), "ECONNECTION", str, "EHLO");
return;
}
if (str.charAt(0) !== "2") {
if (this.options.requireTLS) {
this._onError(new Error("EHLO failed but HELO does not support required STARTTLS. response=" + str), "ECONNECTION", str, "EHLO");
return;
}
this._responseActions.push(this._actionHELO);
this._sendCommand("HELO " + this.name);
return;
}
this._ehloLines = str.split(/\r?\n/).map((line) => line.replace(/^\d+[ -]/, "").trim()).filter((line) => line).slice(1);
if (!this.secure && !this.options.ignoreTLS && (/[ -]STARTTLS\b/im.test(str) || this.options.requireTLS)) {
this._sendCommand("STARTTLS");
this._responseActions.push(this._actionSTARTTLS);
return;
}
if (/[ -]SMTPUTF8\b/im.test(str)) {
this._supportedExtensions.push("SMTPUTF8");
}
if (/[ -]DSN\b/im.test(str)) {
this._supportedExtensions.push("DSN");
}
if (/[ -]8BITMIME\b/im.test(str)) {
this._supportedExtensions.push("8BITMIME");
}
if (/[ -]PIPELINING\b/im.test(str)) {
this._supportedExtensions.push("PIPELINING");
}
if (/[ -]AUTH\b/i.test(str)) {
this.allowsAuth = true;
}
if (/[ -]AUTH(?:(\s+|=)[^\n]*\s+|\s+|=)PLAIN/i.test(str)) {
this._supportedAuth.push("PLAIN");
}
if (/[ -]AUTH(?:(\s+|=)[^\n]*\s+|\s+|=)LOGIN/i.test(str)) {
this._supportedAuth.push("LOGIN");
}
if (/[ -]AUTH(?:(\s+|=)[^\n]*\s+|\s+|=)CRAM-MD5/i.test(str)) {
this._supportedAuth.push("CRAM-MD5");
}
if (/[ -]AUTH(?:(\s+|=)[^\n]*\s+|\s+|=)XOAUTH2/i.test(str)) {
this._supportedAuth.push("XOAUTH2");
}
if (match = str.match(/[ -]SIZE(?:[ \t]+(\d+))?/im)) {
this._supportedExtensions.push("SIZE");
this._maxAllowedSize = Number(match[1]) || 0;
}
this.emit("connect");
}
_actionHELO(str) {
if (str.charAt(0) !== "2") {
this._onError(new Error("Invalid HELO. response=" + str), "EPROTOCOL", str, "HELO");
return;
}
this.allowsAuth = true;
this.emit("connect");
}
_actionSTARTTLS(str) {
if (str.charAt(0) !== "2") {
if (this.options.opportunisticTLS) {
this.logger.info({
tnx: "smtp"
}, "Failed STARTTLS upgrade, continuing unencrypted");
return this.emit("connect");
}
this._onError(new Error("Error upgrading connection with STARTTLS"), "ETLS", str, "STARTTLS");
return;
}
this._upgradeConnection((err, secured) => {
if (err) {
this._onError(new Error("Error initiating TLS - " + (err.message || err)), "ETLS", false, "STARTTLS");
return;
}
this.logger.info({
tnx: "smtp"
}, "Connection upgraded with STARTTLS");
if (secured) {
if (this.options.lmtp) {
this._responseActions.push(this._actionLHLO);
this._sendCommand("LHLO " + this.name);
} else {
this._responseActions.push(this._actionEHLO);
this._sendCommand("EHLO " + this.name);
}
} else {
this.emit("connect");
}
});
}
_actionAUTH_LOGIN_USER(str, callback) {
if (!/^334[ -]/.test(str)) {
callback(this._formatError('Invalid login sequence while waiting for "334 VXNlcm5hbWU6"', "EAUTH", str, "AUTH LOGIN"));
return;
}
this._responseActions.push((str2) => {
this._actionAUTH_LOGIN_PASS(str2, callback);
});
this._sendCommand(Buffer.from(this._auth.credentials.user + "", "utf-8").toString("base64"));
}
_actionAUTH_CRAM_MD5(str, callback) {
let challengeMatch = str.match(/^334\s+(.+)$/);
let challengeString = "";
if (!challengeMatch) {
return callback(this._formatError("Invalid login sequence while waiting for server challenge string", "EAUTH", str, "AUTH CRAM-MD5"));
} else {
challengeString = challengeMatch[1];
}
let base64decoded = Buffer.from(challengeString, "base64").toString("ascii"), hmacMD5 = crypto2.createHmac("md5", this._auth.credentials.pass);
hmacMD5.update(base64decoded);
let prepended = this._auth.credentials.user + " " + hmacMD5.digest("hex");
this._responseActions.push((str2) => {
this._actionAUTH_CRAM_MD5_PASS(str2, callback);
});
this._sendCommand(Buffer.from(prepended).toString("base64"), Buffer.from(this._auth.credentials.user + " /* secret */").toString("base64"));
}
_actionAUTH_CRAM_MD5_PASS(str, callback) {
if (!str.match(/^235\s+/)) {
return callback(this._formatError('Invalid login sequence while waiting for "235"', "EAUTH", str, "AUTH CRAM-MD5"));
}
this.logger.info({
tnx: "smtp",
username: this._auth.user,
action: "authenticated",
method: this._authMethod
}, "User %s authenticated", JSON.stringify(this._auth.user));
this.authenticated = true;
callback(null, true);
}
_actionAUTH_LOGIN_PASS(str, callback) {
if (!/^334[ -]/.test(str)) {
return callback(this._formatError('Invalid login sequence while waiting for "334 UGFzc3dvcmQ6"', "EAUTH", str, "AUTH LOGIN"));
}
this._responseActions.push((str2) => {
this._actionAUTHComplete(str2, callback);
});
this._sendCommand(Buffer.from((this._auth.credentials.pass || "").toString(), "utf-8").toString("base64"), Buffer.from("/* secret */", "utf-8").toString("base64"));
}
_actionAUTHComplete(str, isRetry, callback) {
if (!callback && typeof isRetry === "function") {
callback = isRetry;
isRetry = false;
}
if (str.substr(0, 3) === "334") {
this._responseActions.push((str2) => {
if (isRetry || this._authMethod !== "XOAUTH2") {
this._actionAUTHComplete(str2, true, callback);
} else {
setImmediate(() => this._handleXOauth2Token(true, callback));
}
});
this._sendCommand("");
return;
}
if (str.charAt(0) !== "2") {
this.logger.info({
tnx: "smtp",
username: this._auth.user,
action: "authfail",
method: this._authMethod
}, "User %s failed to authenticate", JSON.stringify(this._auth.user));
return callback(this._formatError("Invalid login", "EAUTH", str, "AUTH " + this._authMethod));
}
this.logger.info({
tnx: "smtp",
username: this._auth.user,
action: "authenticated",
method: this._authMethod
}, "User %s authenticated", JSON.stringify(this._auth.user));
this.authenticated = true;
callback(null, true);
}
_actionMAIL(str, callback) {
let message, curRecipient;
if (Number(str.charAt(0)) !== 2) {
if (this._usingSmtpUtf8 && /^550 /.test(str) && /[\x80-\uFFFF]/.test(this._envelope.from)) {
message = "Internationalized mailbox name not allowed";
} else {
message = "Mail command failed";
}
return callback(this._formatError(message, "EENVELOPE", str, "MAIL FROM"));
}
if (!this._envelope.rcptQueue.length) {
return callback(this._formatError("Can't send mail - no recipients defined", "EENVELOPE", false, "API"));
} else {
this._recipientQueue = [];
if (this._supportedExtensions.includes("PIPELINING")) {
while (this._envelope.rcptQueue.length) {
curRecipient = this._envelope.rcptQueue.shift();
this._recipientQueue.push(curRecipient);
this._responseActions.push((str2) => {
this._actionRCPT(str2, callback);
});
this._sendCommand("RCPT TO:<" + curRecipient + ">" + this._getDsnRcptToArgs());
}
} else {
curRecipient = this._envelope.rcptQueue.shift();
this._recipientQueue.push(curRecipient);
this._responseActions.push((str2) => {
this._actionRCPT(str2, callback);
});
this._sendCommand("RCPT TO:<" + curRecipient + ">" + this._getDsnRcptToArgs());
}
}
}
_actionRCPT(str, callback) {
let message, err, curRecipient = this._recipientQueue.shift();
if (Number(str.charAt(0)) !== 2) {
if (this._usingSmtpUtf8 && /^553 /.test(str) && /[\x80-\uFFFF]/.test(curRecipient)) {
message = "Internationalized mailbox name not allowed";
} else {
message = "Recipient command failed";
}
this._envelope.rejected.push(curRecipient);
err = this._formatError(message, "EENVELOPE", str, "RCPT TO");
err.recipient = curRecipient;
this._envelope.rejectedErrors.push(err);
} else {
this._envelope.accepted.push(curRecipient);
}
if (!this._envelope.rcptQueue.length && !this._recipientQueue.length) {
if (this._envelope.rejected.length < this._envelope.to.length) {
this._responseActions.push((str2) => {
this._actionDATA(str2, callback);
});
this._sendCommand("DATA");
} else {
err = this._formatError("Can't send mail - all recipients were rejected", "EENVELOPE", str, "RCPT TO");
err.rejected = this._envelope.rejected;
err.rejectedErrors = this._envelope.rejectedErrors;
return callback(err);
}
} else if (this._envelope.rcptQueue.length) {
curRecipient = this._envelope.rcptQueue.shift();
this._recipientQueue.push(curRecipient);
this._responseActions.push((str2) => {
this._actionRCPT(str2, callback);
});
this._sendCommand("RCPT TO:<" + curRecipient + ">" + this._getDsnRcptToArgs());
}
}
_actionDATA(str, callback) {
if (!/^[23]/.test(str)) {
return callback(this._formatError("Data command failed", "EENVELOPE", str, "DATA"));
}
let response = {
accepted: this._envelope.accepted,
rejected: this._envelope.rejected
};
if (this._ehloLines && this._ehloLines.length) {
response.ehlo = this._ehloLines;
}
if (this._envelope.rejectedErrors.length) {
response.rejectedErrors = this._envelope.rejectedErrors;
}
callback(null, response);
}
_actionSMTPStream(str, callback) {
if (Number(str.charAt(0)) !== 2) {
return callback(this._formatError("Message failed", "EMESSAGE", str, "DATA"));
} else {
return callback(null, str);
}
}
_actionLMTPStream(recipient, final, str, callback) {
let err;
if (Number(str.charAt(0)) !== 2) {
err = this._formatError("Message failed for recipient " + recipient, "EMESSAGE", str, "DATA");
err.recipient = recipient;
this._envelope.rejected.push(recipient);
this._envelope.rejectedErrors.push(err);
for (let i = 0, len = this._envelope.accepted.length;i < len; i++) {
if (this._envelope.accepted[i] === recipient) {
this._envelope.accepted.splice(i, 1);
}
}
}
if (final) {
return callback(null, str);
}
}
_handleXOauth2Token(isRetry, callback) {
this._auth.oauth2.getToken(isRetry, (err, accessToken) => {
if (err) {
this.logger.info({
tnx: "smtp",
username: this._auth.user,
action: "authfail",
method: this._authMethod
}, "User %s failed to authenticate", JSON.stringify(this._auth.user));
return callback(this._formatError(err, "EAUTH", false, "AUTH XOAUTH2"));
}
this._responseActions.push((str) => {
this._actionAUTHComplete(str, isRetry, callback);
});
this._sendCommand("AUTH XOAUTH2 " + this._auth.oauth2.buildXOAuth2Token(accessToken), "AUTH XOAUTH2 " + this._auth.oauth2.buildXOAuth2Token("/* secret */"));
});
}
_isDestroyedMessage(command) {
if (this._destroyed) {
return "Cannot " + command + " - smtp connection is already destroyed.";
}
if (this._socket) {
if (this._socket.destroyed) {
return "Cannot " + command + " - smtp connection socket is already destroyed.";
}
if (!this._socket.writable) {
return "Cannot " + command + " - smtp connection socket is already half-closed.";
}
}
}
_getHostname() {
let defaultHostname;
try {
defaultHostname = os.hostname() || "";
} catch (err) {
defaultHostname = "localhost";
}
if (!defaultHostname || defaultHostname.indexOf(".") < 0) {
defaultHostname = "[127.0.0.1]";
}
if (defaultHostname.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/)) {
defaultHostname = "[" + defaultHostname + "]";
}
return defaultHostname;
}
}
module.exports = SMTPConnection;
});
// node_modules/nodemailer/lib/xoauth2/index.js
var require_xoauth2 = __commonJS((exports, module) => {
var Stream = __require("stream").Stream;
var nmfetch = require_fetch();
var crypto2 = __require("crypto");
var shared = require_shared();
class XOAuth2 extends Stream {
constructor(options, logger) {
super();
this.options = options || {};
if (options && options.serviceClient) {
if (!options.privateKey || !options.user) {
setImmediate(() => this.emit("error", new Error('Options "privateKey" and "user" are required for service account!')));
return;
}
let serviceRequestTimeout = Math.min(Math.max(Number(this.options.serviceRequestTimeout) || 0, 0), 3600);
this.options.serviceRequestTimeout = serviceRequestTimeout || 5 * 60;
}
this.logger = shared.getLogger({
logger
}, {
component: this.options.component || "OAuth2"
});
this.provisionCallback = typeof this.options.provisionCallback === "function" ? this.options.provisionCallback : false;
this.options.accessUrl = this.options.accessUrl || "https://accounts.google.com/o/oauth2/token";
this.options.customHeaders = this.options.customHeaders || {};
this.options.customParams = this.options.customParams || {};
this.accessToken = this.options.accessToken || false;
if (this.options.expires && Number(this.options.expires)) {
this.expires = this.options.expires;
} else {
let timeout = Math.max(Number(this.options.timeout) || 0, 0);
this.expires = timeout && Date.now() + timeout * 1000 || 0;
}
}
getToken(renew, callback) {
if (!renew && this.accessToken && (!this.expires || this.expires > Date.now())) {
return callback(null, this.accessToken);
}
let generateCallback = (...args) => {
if (args[0]) {
this.logger.error({
err: args[0],
tnx: "OAUTH2",
user: this.options.user,
action: "renew"
}, "Failed generating new Access Token for %s", this.options.user);
} else {
this.logger.info({
tnx: "OAUTH2",
user: this.options.user,
action: "renew"
}, "Generated new Access Token for %s", this.options.user);
}
callback(...args);
};
if (this.provisionCallback) {
this.provisionCallback(this.options.user, !!renew, (err, accessToken, expires) => {
if (!err && accessToken) {
this.accessToken = accessToken;
this.expires = expires || 0;
}
generateCallback(err, accessToken);
});
} else {
this.generateToken(generateCallback);
}
}
updateToken(accessToken, timeout) {
this.accessToken = accessToken;
timeout = Math.max(Number(timeout) || 0, 0);
this.expires = timeout && Date.now() + timeout * 1000 || 0;
this.emit("token", {
user: this.options.user,
accessToken: accessToken || "",
expires: this.expires
});
}
generateToken(callback) {
let urlOptions;
let loggedUrlOptions;
if (this.options.serviceClient) {
let iat = Math.floor(Date.now() / 1000);
let tokenData = {
iss: this.options.serviceClient,
scope: this.options.scope || "https://mail.google.com/",
sub: this.options.user,
aud: this.options.accessUrl,
iat,
exp: iat + this.options.serviceRequestTimeout
};
let token;
try {
token = this.jwtSignRS256(tokenData);
} catch (err) {
return callback(new Error("Can't generate token. Check your auth options"));
}
urlOptions = {
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: token
};
loggedUrlOptions = {
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: tokenData
};
} else {
if (!this.options.refreshToken) {
return callback(new Error("Can't create new access token for user"));
}
urlOptions = {
client_id: this.options.clientId || "",
client_secret: this.options.clientSecret || "",
refresh_token: this.options.refreshToken,
grant_type: "refresh_token"
};
loggedUrlOptions = {
client_id: this.options.clientId || "",
client_secret: (this.options.clientSecret || "").substr(0, 6) + "...",
refresh_token: (this.options.refreshToken || "").substr(0, 6) + "...",
grant_type: "refresh_token"
};
}
Object.keys(this.options.customParams).forEach((key) => {
urlOptions[key] = this.options.customParams[key];
loggedUrlOptions[key] = this.options.customParams[key];
});
this.logger.debug({
tnx: "OAUTH2",
user: this.options.user,
action: "generate"
}, "Requesting token using: %s", JSON.stringify(loggedUrlOptions));
this.postRequest(this.options.accessUrl, urlOptions, this.options, (error, body) => {
let data;
if (error) {
return callback(error);
}
try {
data = JSON.parse(body.toString());
} catch (E) {
return callback(E);
}
if (!data || typeof data !== "object") {
this.logger.debug({
tnx: "OAUTH2",
user: this.options.user,
action: "post"
}, "Response: %s", (body || "").toString());
return callback(new Error("Invalid authentication response"));
}
let logData = {};
Object.keys(data).forEach((key) => {
if (key !== "access_token") {
logData[key] = data[key];
} else {
logData[key] = (data[key] || "").toString().substr(0, 6) + "...";
}
});
this.logger.debug({
tnx: "OAUTH2",
user: this.options.user,
action: "post"
}, "Response: %s", JSON.stringify(logData));
if (data.error) {
let errorMessage = data.error;
if (data.error_description) {
errorMessage += ": " + data.error_description;
}
if (data.error_uri) {
errorMessage += " (" + data.error_uri + ")";
}
return callback(new Error(errorMessage));
}
if (data.access_token) {
this.updateToken(data.access_token, data.expires_in);
return callback(null, this.accessToken);
}
return callback(new Error("No access token"));
});
}
buildXOAuth2Token(accessToken) {
let authData = ["user=" + (this.options.user || ""), "auth=Bearer " + (accessToken || this.accessToken), "", ""];
return Buffer.from(authData.join("\x01"), "utf-8").toString("base64");
}
postRequest(url, payload, params, callback) {
let returned = false;
let chunks = [];
let chunklen = 0;
let req = nmfetch(url, {
method: "post",
headers: params.customHeaders,
body: payload,
allowErrorResponse: true
});
req.on("readable", () => {
let chunk;
while ((chunk = req.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
req.once("error", (err) => {
if (returned) {
return;
}
returned = true;
return callback(err);
});
req.once("end", () => {
if (returned) {
return;
}
returned = true;
return callback(null, Buffer.concat(chunks, chunklen));
});
}
toBase64URL(data) {
if (typeof data === "string") {
data = Buffer.from(data);
}
return data.toString("base64").replace(/[=]+/g, "").replace(/\+/g, "-").replace(/\//g, "_");
}
jwtSignRS256(payload) {
payload = ['{"alg":"RS256","typ":"JWT"}', JSON.stringify(payload)].map((val) => this.toBase64URL(val)).join(".");
let signature = crypto2.createSign("RSA-SHA256").update(payload).sign(this.options.privateKey);
return payload + "." + this.toBase64URL(signature);
}
}
module.exports = XOAuth2;
});
// node_modules/nodemailer/lib/smtp-pool/pool-resource.js
var require_pool_resource = __commonJS((exports, module) => {
var SMTPConnection = require_smtp_connection();
var assign = require_shared().assign;
var XOAuth2 = require_xoauth2();
var EventEmitter = __require("events");
class PoolResource extends EventEmitter {
constructor(pool) {
super();
this.pool = pool;
this.options = pool.options;
this.logger = this.pool.logger;
if (this.options.auth) {
switch ((this.options.auth.type || "").toString().toUpperCase()) {
case "OAUTH2": {
let oauth2 = new XOAuth2(this.options.auth, this.logger);
oauth2.provisionCallback = this.pool.mailer && this.pool.mailer.get("oauth2_provision_cb") || oauth2.provisionCallback;
this.auth = {
type: "OAUTH2",
user: this.options.auth.user,
oauth2,
method: "XOAUTH2"
};
oauth2.on("token", (token) => this.pool.mailer.emit("token", token));
oauth2.on("error", (err) => this.emit("error", err));
break;
}
default:
if (!this.options.auth.user && !this.options.auth.pass) {
break;
}
this.auth = {
type: (this.options.auth.type || "").toString().toUpperCase() || "LOGIN",
user: this.options.auth.user,
credentials: {
user: this.options.auth.user || "",
pass: this.options.auth.pass,
options: this.options.auth.options
},
method: (this.options.auth.method || "").trim().toUpperCase() || this.options.authMethod || false
};
}
}
this._connection = false;
this._connected = false;
this.messages = 0;
this.available = true;
}
connect(callback) {
this.pool.getSocket(this.options, (err, socketOptions) => {
if (err) {
return callback(err);
}
let returned = false;
let options = this.options;
if (socketOptions && socketOptions.connection) {
this.logger.info({
tnx: "proxy",
remoteAddress: socketOptions.connection.remoteAddress,
remotePort: socketOptions.connection.remotePort,
destHost: options.host || "",
destPort: options.port || "",
action: "connected"
}, "Using proxied socket from %s:%s to %s:%s", socketOptions.connection.remoteAddress, socketOptions.connection.remotePort, options.host || "", options.port || "");
options = assign(false, options);
Object.keys(socketOptions).forEach((key) => {
options[key] = socketOptions[key];
});
}
this.connection = new SMTPConnection(options);
this.connection.once("error", (err2) => {
this.emit("error", err2);
if (returned) {
return;
}
returned = true;
return callback(err2);
});
this.connection.once("end", () => {
this.close();
if (returned) {
return;
}
returned = true;
let timer = setTimeout(() => {
if (returned) {
return;
}
let err2 = new Error("Unexpected socket close");
if (this.connection && this.connection._socket && this.connection._socket.upgrading) {
err2.code = "ETLS";
}
callback(err2);
}, 1000);
try {
timer.unref();
} catch (E) {
}
});
this.connection.connect(() => {
if (returned) {
return;
}
if (this.auth && (this.connection.allowsAuth || options.forceAuth)) {
this.connection.login(this.auth, (err2) => {
if (returned) {
return;
}
returned = true;
if (err2) {
this.connection.close();
this.emit("error", err2);
return callback(err2);
}
this._connected = true;
callback(null, true);
});
} else {
returned = true;
this._connected = true;
return callback(null, true);
}
});
});
}
send(mail, callback) {
if (!this._connected) {
return this.connect((err) => {
if (err) {
return callback(err);
}
return this.send(mail, callback);
});
}
let envelope = mail.message.getEnvelope();
let messageId = mail.message.messageId();
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
this.logger.info({
tnx: "send",
messageId,
cid: this.id
}, "Sending message %s using #%s to <%s>", messageId, this.id, recipients.join(", "));
if (mail.data.dsn) {
envelope.dsn = mail.data.dsn;
}
this.connection.send(envelope, mail.message.createReadStream(), (err, info) => {
this.messages++;
if (err) {
this.connection.close();
this.emit("error", err);
return callback(err);
}
info.envelope = {
from: envelope.from,
to: envelope.to
};
info.messageId = messageId;
setImmediate(() => {
let err2;
if (this.messages >= this.options.maxMessages) {
err2 = new Error("Resource exhausted");
err2.code = "EMAXLIMIT";
this.connection.close();
this.emit("error", err2);
} else {
this.pool._checkRateLimit(() => {
this.available = true;
this.emit("available");
});
}
});
callback(null, info);
});
}
close() {
this._connected = false;
if (this.auth && this.auth.oauth2) {
this.auth.oauth2.removeAllListeners();
}
if (this.connection) {
this.connection.close();
}
this.emit("close");
}
}
module.exports = PoolResource;
});
// node_modules/nodemailer/lib/well-known/services.json
var require_services = __commonJS((exports, module) => {
module.exports = {
"1und1": {
host: "smtp.1und1.de",
port: 465,
secure: true,
authMethod: "LOGIN"
},
Aliyun: {
domains: ["aliyun.com"],
host: "smtp.aliyun.com",
port: 465,
secure: true
},
AOL: {
domains: ["aol.com"],
host: "smtp.aol.com",
port: 587
},
Bluewin: {
host: "smtpauths.bluewin.ch",
domains: ["bluewin.ch"],
port: 465
},
DebugMail: {
host: "debugmail.io",
port: 25
},
DynectEmail: {
aliases: ["Dynect"],
host: "smtp.dynect.net",
port: 25
},
Ethereal: {
aliases: ["ethereal.email"],
host: "smtp.ethereal.email",
port: 587
},
FastMail: {
domains: ["fastmail.fm"],
host: "smtp.fastmail.com",
port: 465,
secure: true
},
"Forward Email": {
aliases: ["FE", "ForwardEmail"],
domains: ["forwardemail.net"],
host: "smtp.forwardemail.net",
port: 465,
secure: true
},
"Feishu Mail": {
aliases: ["Feishu", "FeishuMail"],
domains: ["www.feishu.cn"],
host: "smtp.feishu.cn",
port: 465,
secure: true
},
GandiMail: {
aliases: ["Gandi", "Gandi Mail"],
host: "mail.gandi.net",
port: 587
},
Gmail: {
aliases: ["Google Mail"],
domains: ["gmail.com", "googlemail.com"],
host: "smtp.gmail.com",
port: 465,
secure: true
},
Godaddy: {
host: "smtpout.secureserver.net",
port: 25
},
GodaddyAsia: {
host: "smtp.asia.secureserver.net",
port: 25
},
GodaddyEurope: {
host: "smtp.europe.secureserver.net",
port: 25
},
"hot.ee": {
host: "mail.hot.ee"
},
Hotmail: {
aliases: ["Outlook", "Outlook.com", "Hotmail.com"],
domains: ["hotmail.com", "outlook.com"],
host: "smtp-mail.outlook.com",
port: 587
},
iCloud: {
aliases: ["Me", "Mac"],
domains: ["me.com", "mac.com"],
host: "smtp.mail.me.com",
port: 587
},
Infomaniak: {
host: "mail.infomaniak.com",
domains: ["ik.me", "ikmail.com", "etik.com"],
port: 587
},
Loopia: {
host: "mailcluster.loopia.se",
port: 465
},
"mail.ee": {
host: "smtp.mail.ee"
},
"Mail.ru": {
host: "smtp.mail.ru",
port: 465,
secure: true
},
"Mailcatch.app": {
host: "sandbox-smtp.mailcatch.app",
port: 2525
},
Maildev: {
port: 1025,
ignoreTLS: true
},
Mailgun: {
host: "smtp.mailgun.org",
port: 465,
secure: true
},
Mailjet: {
host: "in.mailjet.com",
port: 587
},
Mailosaur: {
host: "mailosaur.io",
port: 25
},
Mailtrap: {
host: "live.smtp.mailtrap.io",
port: 587
},
Mandrill: {
host: "smtp.mandrillapp.com",
port: 587
},
Naver: {
host: "smtp.naver.com",
port: 587
},
One: {
host: "send.one.com",
port: 465,
secure: true
},
OpenMailBox: {
aliases: ["OMB", "openmailbox.org"],
host: "smtp.openmailbox.org",
port: 465,
secure: true
},
Outlook365: {
host: "smtp.office365.com",
port: 587,
secure: false
},
OhMySMTP: {
host: "smtp.ohmysmtp.com",
port: 587,
secure: false
},
Postmark: {
aliases: ["PostmarkApp"],
host: "smtp.postmarkapp.com",
port: 2525
},
"qiye.aliyun": {
host: "smtp.mxhichina.com",
port: "465",
secure: true
},
QQ: {
domains: ["qq.com"],
host: "smtp.qq.com",
port: 465,
secure: true
},
QQex: {
aliases: ["QQ Enterprise"],
domains: ["exmail.qq.com"],
host: "smtp.exmail.qq.com",
port: 465,
secure: true
},
SendCloud: {
host: "smtp.sendcloud.net",
port: 2525
},
SendGrid: {
host: "smtp.sendgrid.net",
port: 587
},
SendinBlue: {
aliases: ["Brevo"],
host: "smtp-relay.brevo.com",
port: 587
},
SendPulse: {
host: "smtp-pulse.com",
port: 465,
secure: true
},
SES: {
host: "email-smtp.us-east-1.amazonaws.com",
port: 465,
secure: true
},
"SES-US-EAST-1": {
host: "email-smtp.us-east-1.amazonaws.com",
port: 465,
secure: true
},
"SES-US-WEST-2": {
host: "email-smtp.us-west-2.amazonaws.com",
port: 465,
secure: true
},
"SES-EU-WEST-1": {
host: "email-smtp.eu-west-1.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-SOUTH-1": {
host: "email-smtp.ap-south-1.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-NORTHEAST-1": {
host: "email-smtp.ap-northeast-1.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-NORTHEAST-2": {
host: "email-smtp.ap-northeast-2.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-NORTHEAST-3": {
host: "email-smtp.ap-northeast-3.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-SOUTHEAST-1": {
host: "email-smtp.ap-southeast-1.amazonaws.com",
port: 465,
secure: true
},
"SES-AP-SOUTHEAST-2": {
host: "email-smtp.ap-southeast-2.amazonaws.com",
port: 465,
secure: true
},
Sparkpost: {
aliases: ["SparkPost", "SparkPost Mail"],
domains: ["sparkpost.com"],
host: "smtp.sparkpostmail.com",
port: 587,
secure: false
},
Tipimail: {
host: "smtp.tipimail.com",
port: 587
},
Yahoo: {
domains: ["yahoo.com"],
host: "smtp.mail.yahoo.com",
port: 465,
secure: true
},
Yandex: {
domains: ["yandex.ru"],
host: "smtp.yandex.ru",
port: 465,
secure: true
},
Zoho: {
host: "smtp.zoho.com",
port: 465,
secure: true,
authMethod: "LOGIN"
},
"126": {
host: "smtp.126.com",
port: 465,
secure: true
},
"163": {
host: "smtp.163.com",
port: 465,
secure: true
}
};
});
// node_modules/nodemailer/lib/well-known/index.js
var require_well_known = __commonJS((exports, module) => {
var services = require_services();
var normalized = {};
Object.keys(services).forEach((key) => {
let service = services[key];
normalized[normalizeKey(key)] = normalizeService(service);
[].concat(service.aliases || []).forEach((alias) => {
normalized[normalizeKey(alias)] = normalizeService(service);
});
[].concat(service.domains || []).forEach((domain) => {
normalized[normalizeKey(domain)] = normalizeService(service);
});
});
function normalizeKey(key) {
return key.replace(/[^a-zA-Z0-9.-]/g, "").toLowerCase();
}
function normalizeService(service) {
let filter = ["domains", "aliases"];
let response = {};
Object.keys(service).forEach((key) => {
if (filter.indexOf(key) < 0) {
response[key] = service[key];
}
});
return response;
}
module.exports = function(key) {
key = normalizeKey(key.split("@").pop());
return normalized[key] || false;
};
});
// node_modules/nodemailer/lib/smtp-pool/index.js
var require_smtp_pool = __commonJS((exports, module) => {
var EventEmitter = __require("events");
var PoolResource = require_pool_resource();
var SMTPConnection = require_smtp_connection();
var wellKnown = require_well_known();
var shared = require_shared();
var packageData = require_package2();
class SMTPPool extends EventEmitter {
constructor(options) {
super();
options = options || {};
if (typeof options === "string") {
options = {
url: options
};
}
let urlData;
let service = options.service;
if (typeof options.getSocket === "function") {
this.getSocket = options.getSocket;
}
if (options.url) {
urlData = shared.parseConnectionUrl(options.url);
service = service || urlData.service;
}
this.options = shared.assign(false, options, urlData, service && wellKnown(service));
this.options.maxConnections = this.options.maxConnections || 5;
this.options.maxMessages = this.options.maxMessages || 100;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "smtp-pool"
});
let connection2 = new SMTPConnection(this.options);
this.name = "SMTP (pool)";
this.version = packageData.version + "[client:" + connection2.version + "]";
this._rateLimit = {
counter: 0,
timeout: null,
waiting: [],
checkpoint: false,
delta: Number(this.options.rateDelta) || 1000,
limit: Number(this.options.rateLimit) || 0
};
this._closed = false;
this._queue = [];
this._connections = [];
this._connectionCounter = 0;
this.idling = true;
setImmediate(() => {
if (this.idling) {
this.emit("idle");
}
});
}
getSocket(options, callback) {
return setImmediate(() => callback(null, false));
}
send(mail, callback) {
if (this._closed) {
return false;
}
this._queue.push({
mail,
requeueAttempts: 0,
callback
});
if (this.idling && this._queue.length >= this.options.maxConnections) {
this.idling = false;
}
setImmediate(() => this._processMessages());
return true;
}
close() {
let connection2;
let len = this._connections.length;
this._closed = true;
clearTimeout(this._rateLimit.timeout);
if (!len && !this._queue.length) {
return;
}
for (let i = len - 1;i >= 0; i--) {
if (this._connections[i] && this._connections[i].available) {
connection2 = this._connections[i];
connection2.close();
this.logger.info({
tnx: "connection",
cid: connection2.id,
action: "removed"
}, "Connection #%s removed", connection2.id);
}
}
if (len && !this._connections.length) {
this.logger.debug({
tnx: "connection"
}, "All connections removed");
}
if (!this._queue.length) {
return;
}
let invokeCallbacks = () => {
if (!this._queue.length) {
this.logger.debug({
tnx: "connection"
}, "Pending queue entries cleared");
return;
}
let entry = this._queue.shift();
if (entry && typeof entry.callback === "function") {
try {
entry.callback(new Error("Connection pool was closed"));
} catch (E) {
this.logger.error({
err: E,
tnx: "callback",
cid: connection2.id
}, "Callback error for #%s: %s", connection2.id, E.message);
}
}
setImmediate(invokeCallbacks);
};
setImmediate(invokeCallbacks);
}
_processMessages() {
let connection2;
let i, len;
if (this._closed) {
return;
}
if (!this._queue.length) {
if (!this.idling) {
this.idling = true;
this.emit("idle");
}
return;
}
for (i = 0, len = this._connections.length;i < len; i++) {
if (this._connections[i].available) {
connection2 = this._connections[i];
break;
}
}
if (!connection2 && this._connections.length < this.options.maxConnections) {
connection2 = this._createConnection();
}
if (!connection2) {
this.idling = false;
return;
}
if (!this.idling && this._queue.length < this.options.maxConnections) {
this.idling = true;
this.emit("idle");
}
let entry = connection2.queueEntry = this._queue.shift();
entry.messageId = (connection2.queueEntry.mail.message.getHeader("message-id") || "").replace(/[<>\s]/g, "");
connection2.available = false;
this.logger.debug({
tnx: "pool",
cid: connection2.id,
messageId: entry.messageId,
action: "assign"
}, "Assigned message <%s> to #%s (%s)", entry.messageId, connection2.id, connection2.messages + 1);
if (this._rateLimit.limit) {
this._rateLimit.counter++;
if (!this._rateLimit.checkpoint) {
this._rateLimit.checkpoint = Date.now();
}
}
connection2.send(entry.mail, (err, info) => {
if (entry === connection2.queueEntry) {
try {
entry.callback(err, info);
} catch (E) {
this.logger.error({
err: E,
tnx: "callback",
cid: connection2.id
}, "Callback error for #%s: %s", connection2.id, E.message);
}
connection2.queueEntry = false;
}
});
}
_createConnection() {
let connection2 = new PoolResource(this);
connection2.id = ++this._connectionCounter;
this.logger.info({
tnx: "pool",
cid: connection2.id,
action: "conection"
}, "Created new pool resource #%s", connection2.id);
connection2.on("available", () => {
this.logger.debug({
tnx: "connection",
cid: connection2.id,
action: "available"
}, "Connection #%s became available", connection2.id);
if (this._closed) {
this.close();
} else {
this._processMessages();
}
});
connection2.once("error", (err) => {
if (err.code !== "EMAXLIMIT") {
this.logger.error({
err,
tnx: "pool",
cid: connection2.id
}, "Pool Error for #%s: %s", connection2.id, err.message);
} else {
this.logger.debug({
tnx: "pool",
cid: connection2.id,
action: "maxlimit"
}, "Max messages limit exchausted for #%s", connection2.id);
}
if (connection2.queueEntry) {
try {
connection2.queueEntry.callback(err);
} catch (E) {
this.logger.error({
err: E,
tnx: "callback",
cid: connection2.id
}, "Callback error for #%s: %s", connection2.id, E.message);
}
connection2.queueEntry = false;
}
this._removeConnection(connection2);
this._continueProcessing();
});
connection2.once("close", () => {
this.logger.info({
tnx: "connection",
cid: connection2.id,
action: "closed"
}, "Connection #%s was closed", connection2.id);
this._removeConnection(connection2);
if (connection2.queueEntry) {
setTimeout(() => {
if (connection2.queueEntry) {
if (this._shouldRequeuOnConnectionClose(connection2.queueEntry)) {
this._requeueEntryOnConnectionClose(connection2);
} else {
this._failDeliveryOnConnectionClose(connection2);
}
}
this._continueProcessing();
}, 50);
} else {
this._continueProcessing();
}
});
this._connections.push(connection2);
return connection2;
}
_shouldRequeuOnConnectionClose(queueEntry) {
if (this.options.maxRequeues === undefined || this.options.maxRequeues < 0) {
return true;
}
return queueEntry.requeueAttempts < this.options.maxRequeues;
}
_failDeliveryOnConnectionClose(connection2) {
if (connection2.queueEntry && connection2.queueEntry.callback) {
try {
connection2.queueEntry.callback(new Error("Reached maximum number of retries after connection was closed"));
} catch (E) {
this.logger.error({
err: E,
tnx: "callback",
messageId: connection2.queueEntry.messageId,
cid: connection2.id
}, "Callback error for #%s: %s", connection2.id, E.message);
}
connection2.queueEntry = false;
}
}
_requeueEntryOnConnectionClose(connection2) {
connection2.queueEntry.requeueAttempts = connection2.queueEntry.requeueAttempts + 1;
this.logger.debug({
tnx: "pool",
cid: connection2.id,
messageId: connection2.queueEntry.messageId,
action: "requeue"
}, "Re-queued message <%s> for #%s. Attempt: #%s", connection2.queueEntry.messageId, connection2.id, connection2.queueEntry.requeueAttempts);
this._queue.unshift(connection2.queueEntry);
connection2.queueEntry = false;
}
_continueProcessing() {
if (this._closed) {
this.close();
} else {
setTimeout(() => this._processMessages(), 100);
}
}
_removeConnection(connection2) {
let index = this._connections.indexOf(connection2);
if (index !== -1) {
this._connections.splice(index, 1);
}
}
_checkRateLimit(callback) {
if (!this._rateLimit.limit) {
return callback();
}
let now = Date.now();
if (this._rateLimit.counter < this._rateLimit.limit) {
return callback();
}
this._rateLimit.waiting.push(callback);
if (this._rateLimit.checkpoint <= now - this._rateLimit.delta) {
return this._clearRateLimit();
} else if (!this._rateLimit.timeout) {
this._rateLimit.timeout = setTimeout(() => this._clearRateLimit(), this._rateLimit.delta - (now - this._rateLimit.checkpoint));
this._rateLimit.checkpoint = now;
}
}
_clearRateLimit() {
clearTimeout(this._rateLimit.timeout);
this._rateLimit.timeout = null;
this._rateLimit.counter = 0;
this._rateLimit.checkpoint = false;
while (this._rateLimit.waiting.length) {
let cb = this._rateLimit.waiting.shift();
setImmediate(cb);
}
}
isIdle() {
return this.idling;
}
verify(callback) {
let promise;
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
let auth = new PoolResource(this).auth;
this.getSocket(this.options, (err, socketOptions) => {
if (err) {
return callback(err);
}
let options = this.options;
if (socketOptions && socketOptions.connection) {
this.logger.info({
tnx: "proxy",
remoteAddress: socketOptions.connection.remoteAddress,
remotePort: socketOptions.connection.remotePort,
destHost: options.host || "",
destPort: options.port || "",
action: "connected"
}, "Using proxied socket from %s:%s to %s:%s", socketOptions.connection.remoteAddress, socketOptions.connection.remotePort, options.host || "", options.port || "");
options = shared.assign(false, options);
Object.keys(socketOptions).forEach((key) => {
options[key] = socketOptions[key];
});
}
let connection2 = new SMTPConnection(options);
let returned = false;
connection2.once("error", (err2) => {
if (returned) {
return;
}
returned = true;
connection2.close();
return callback(err2);
});
connection2.once("end", () => {
if (returned) {
return;
}
returned = true;
return callback(new Error("Connection closed"));
});
let finalize = () => {
if (returned) {
return;
}
returned = true;
connection2.quit();
return callback(null, true);
};
connection2.connect(() => {
if (returned) {
return;
}
if (auth && (connection2.allowsAuth || options.forceAuth)) {
connection2.login(auth, (err2) => {
if (returned) {
return;
}
if (err2) {
returned = true;
connection2.close();
return callback(err2);
}
finalize();
});
} else if (!auth && connection2.allowsAuth && options.forceAuth) {
let err2 = new Error("Authentication info was not provided");
err2.code = "NoAuth";
returned = true;
connection2.close();
return callback(err2);
} else {
finalize();
}
});
});
return promise;
}
}
module.exports = SMTPPool;
});
// node_modules/nodemailer/lib/smtp-transport/index.js
var require_smtp_transport = __commonJS((exports, module) => {
var EventEmitter = __require("events");
var SMTPConnection = require_smtp_connection();
var wellKnown = require_well_known();
var shared = require_shared();
var XOAuth2 = require_xoauth2();
var packageData = require_package2();
class SMTPTransport extends EventEmitter {
constructor(options) {
super();
options = options || {};
if (typeof options === "string") {
options = {
url: options
};
}
let urlData;
let service = options.service;
if (typeof options.getSocket === "function") {
this.getSocket = options.getSocket;
}
if (options.url) {
urlData = shared.parseConnectionUrl(options.url);
service = service || urlData.service;
}
this.options = shared.assign(false, options, urlData, service && wellKnown(service));
this.logger = shared.getLogger(this.options, {
component: this.options.component || "smtp-transport"
});
let connection2 = new SMTPConnection(this.options);
this.name = "SMTP";
this.version = packageData.version + "[client:" + connection2.version + "]";
if (this.options.auth) {
this.auth = this.getAuth({});
}
}
getSocket(options, callback) {
return setImmediate(() => callback(null, false));
}
getAuth(authOpts) {
if (!authOpts) {
return this.auth;
}
let hasAuth = false;
let authData = {};
if (this.options.auth && typeof this.options.auth === "object") {
Object.keys(this.options.auth).forEach((key) => {
hasAuth = true;
authData[key] = this.options.auth[key];
});
}
if (authOpts && typeof authOpts === "object") {
Object.keys(authOpts).forEach((key) => {
hasAuth = true;
authData[key] = authOpts[key];
});
}
if (!hasAuth) {
return false;
}
switch ((authData.type || "").toString().toUpperCase()) {
case "OAUTH2": {
if (!authData.service && !authData.user) {
return false;
}
let oauth2 = new XOAuth2(authData, this.logger);
oauth2.provisionCallback = this.mailer && this.mailer.get("oauth2_provision_cb") || oauth2.provisionCallback;
oauth2.on("token", (token) => this.mailer.emit("token", token));
oauth2.on("error", (err) => this.emit("error", err));
return {
type: "OAUTH2",
user: authData.user,
oauth2,
method: "XOAUTH2"
};
}
default:
return {
type: (authData.type || "").toString().toUpperCase() || "LOGIN",
user: authData.user,
credentials: {
user: authData.user || "",
pass: authData.pass,
options: authData.options
},
method: (authData.method || "").trim().toUpperCase() || this.options.authMethod || false
};
}
}
send(mail, callback) {
this.getSocket(this.options, (err, socketOptions) => {
if (err) {
return callback(err);
}
let returned = false;
let options = this.options;
if (socketOptions && socketOptions.connection) {
this.logger.info({
tnx: "proxy",
remoteAddress: socketOptions.connection.remoteAddress,
remotePort: socketOptions.connection.remotePort,
destHost: options.host || "",
destPort: options.port || "",
action: "connected"
}, "Using proxied socket from %s:%s to %s:%s", socketOptions.connection.remoteAddress, socketOptions.connection.remotePort, options.host || "", options.port || "");
options = shared.assign(false, options);
Object.keys(socketOptions).forEach((key) => {
options[key] = socketOptions[key];
});
}
let connection2 = new SMTPConnection(options);
connection2.once("error", (err2) => {
if (returned) {
return;
}
returned = true;
connection2.close();
return callback(err2);
});
connection2.once("end", () => {
if (returned) {
return;
}
let timer = setTimeout(() => {
if (returned) {
return;
}
returned = true;
let err2 = new Error("Unexpected socket close");
if (connection2 && connection2._socket && connection2._socket.upgrading) {
err2.code = "ETLS";
}
callback(err2);
}, 1000);
try {
timer.unref();
} catch (E) {
}
});
let sendMessage = () => {
let envelope = mail.message.getEnvelope();
let messageId = mail.message.messageId();
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
if (mail.data.dsn) {
envelope.dsn = mail.data.dsn;
}
this.logger.info({
tnx: "send",
messageId
}, "Sending message %s to <%s>", messageId, recipients.join(", "));
connection2.send(envelope, mail.message.createReadStream(), (err2, info) => {
returned = true;
connection2.close();
if (err2) {
this.logger.error({
err: err2,
tnx: "send"
}, "Send error for %s: %s", messageId, err2.message);
return callback(err2);
}
info.envelope = {
from: envelope.from,
to: envelope.to
};
info.messageId = messageId;
try {
return callback(null, info);
} catch (E) {
this.logger.error({
err: E,
tnx: "callback"
}, "Callback error for %s: %s", messageId, E.message);
}
});
};
connection2.connect(() => {
if (returned) {
return;
}
let auth = this.getAuth(mail.data.auth);
if (auth && (connection2.allowsAuth || options.forceAuth)) {
connection2.login(auth, (err2) => {
if (auth && auth !== this.auth && auth.oauth2) {
auth.oauth2.removeAllListeners();
}
if (returned) {
return;
}
if (err2) {
returned = true;
connection2.close();
return callback(err2);
}
sendMessage();
});
} else {
sendMessage();
}
});
});
}
verify(callback) {
let promise;
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
this.getSocket(this.options, (err, socketOptions) => {
if (err) {
return callback(err);
}
let options = this.options;
if (socketOptions && socketOptions.connection) {
this.logger.info({
tnx: "proxy",
remoteAddress: socketOptions.connection.remoteAddress,
remotePort: socketOptions.connection.remotePort,
destHost: options.host || "",
destPort: options.port || "",
action: "connected"
}, "Using proxied socket from %s:%s to %s:%s", socketOptions.connection.remoteAddress, socketOptions.connection.remotePort, options.host || "", options.port || "");
options = shared.assign(false, options);
Object.keys(socketOptions).forEach((key) => {
options[key] = socketOptions[key];
});
}
let connection2 = new SMTPConnection(options);
let returned = false;
connection2.once("error", (err2) => {
if (returned) {
return;
}
returned = true;
connection2.close();
return callback(err2);
});
connection2.once("end", () => {
if (returned) {
return;
}
returned = true;
return callback(new Error("Connection closed"));
});
let finalize = () => {
if (returned) {
return;
}
returned = true;
connection2.quit();
return callback(null, true);
};
connection2.connect(() => {
if (returned) {
return;
}
let authData = this.getAuth({});
if (authData && (connection2.allowsAuth || options.forceAuth)) {
connection2.login(authData, (err2) => {
if (returned) {
return;
}
if (err2) {
returned = true;
connection2.close();
return callback(err2);
}
finalize();
});
} else if (!authData && connection2.allowsAuth && options.forceAuth) {
let err2 = new Error("Authentication info was not provided");
err2.code = "NoAuth";
returned = true;
connection2.close();
return callback(err2);
} else {
finalize();
}
});
});
return promise;
}
close() {
if (this.auth && this.auth.oauth2) {
this.auth.oauth2.removeAllListeners();
}
this.emit("close");
}
}
module.exports = SMTPTransport;
});
// node_modules/nodemailer/lib/sendmail-transport/index.js
var require_sendmail_transport = __commonJS((exports, module) => {
var spawn = __require("child_process").spawn;
var packageData = require_package2();
var shared = require_shared();
class SendmailTransport {
constructor(options) {
options = options || {};
this._spawn = spawn;
this.options = options || {};
this.name = "Sendmail";
this.version = packageData.version;
this.path = "sendmail";
this.args = false;
this.winbreak = false;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "sendmail"
});
if (options) {
if (typeof options === "string") {
this.path = options;
} else if (typeof options === "object") {
if (options.path) {
this.path = options.path;
}
if (Array.isArray(options.args)) {
this.args = options.args;
}
this.winbreak = ["win", "windows", "dos", "\r\n"].includes((options.newline || "").toString().toLowerCase());
}
}
}
send(mail, done) {
mail.message.keepBcc = true;
let envelope = mail.data.envelope || mail.message.getEnvelope();
let messageId = mail.message.messageId();
let args;
let sendmail;
let returned;
const hasInvalidAddresses = [].concat(envelope.from || []).concat(envelope.to || []).some((addr) => /^-/.test(addr));
if (hasInvalidAddresses) {
return done(new Error("Can not send mail. Invalid envelope addresses."));
}
if (this.args) {
args = ["-i"].concat(this.args).concat(envelope.to);
} else {
args = ["-i"].concat(envelope.from ? ["-f", envelope.from] : []).concat(envelope.to);
}
let callback = (err) => {
if (returned) {
return;
}
returned = true;
if (typeof done === "function") {
if (err) {
return done(err);
} else {
return done(null, {
envelope: mail.data.envelope || mail.message.getEnvelope(),
messageId,
response: "Messages queued for delivery"
});
}
}
};
try {
sendmail = this._spawn(this.path, args);
} catch (E) {
this.logger.error({
err: E,
tnx: "spawn",
messageId
}, "Error occurred while spawning sendmail. %s", E.message);
return callback(E);
}
if (sendmail) {
sendmail.on("error", (err) => {
this.logger.error({
err,
tnx: "spawn",
messageId
}, "Error occurred when sending message %s. %s", messageId, err.message);
callback(err);
});
sendmail.once("exit", (code) => {
if (!code) {
return callback();
}
let err;
if (code === 127) {
err = new Error("Sendmail command not found, process exited with code " + code);
} else {
err = new Error("Sendmail exited with code " + code);
}
this.logger.error({
err,
tnx: "stdin",
messageId
}, "Error sending message %s to sendmail. %s", messageId, err.message);
callback(err);
});
sendmail.once("close", callback);
sendmail.stdin.on("error", (err) => {
this.logger.error({
err,
tnx: "stdin",
messageId
}, "Error occurred when piping message %s to sendmail. %s", messageId, err.message);
callback(err);
});
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
this.logger.info({
tnx: "send",
messageId
}, "Sending message %s to <%s>", messageId, recipients.join(", "));
let sourceStream = mail.message.createReadStream();
sourceStream.once("error", (err) => {
this.logger.error({
err,
tnx: "stdin",
messageId
}, "Error occurred when generating message %s. %s", messageId, err.message);
sendmail.kill("SIGINT");
callback(err);
});
sourceStream.pipe(sendmail.stdin);
} else {
return callback(new Error("sendmail was not found"));
}
}
}
module.exports = SendmailTransport;
});
// node_modules/nodemailer/lib/stream-transport/index.js
var require_stream_transport = __commonJS((exports, module) => {
var packageData = require_package2();
var shared = require_shared();
class StreamTransport {
constructor(options) {
options = options || {};
this.options = options || {};
this.name = "StreamTransport";
this.version = packageData.version;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "stream-transport"
});
this.winbreak = ["win", "windows", "dos", "\r\n"].includes((options.newline || "").toString().toLowerCase());
}
send(mail, done) {
mail.message.keepBcc = true;
let envelope = mail.data.envelope || mail.message.getEnvelope();
let messageId = mail.message.messageId();
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
this.logger.info({
tnx: "send",
messageId
}, "Sending message %s to <%s> using %s line breaks", messageId, recipients.join(", "), this.winbreak ? "<CR><LF>" : "<LF>");
setImmediate(() => {
let stream;
try {
stream = mail.message.createReadStream();
} catch (E) {
this.logger.error({
err: E,
tnx: "send",
messageId
}, "Creating send stream failed for %s. %s", messageId, E.message);
return done(E);
}
if (!this.options.buffer) {
stream.once("error", (err) => {
this.logger.error({
err,
tnx: "send",
messageId
}, "Failed creating message for %s. %s", messageId, err.message);
});
return done(null, {
envelope: mail.data.envelope || mail.message.getEnvelope(),
messageId,
message: stream
});
}
let chunks = [];
let chunklen = 0;
stream.on("readable", () => {
let chunk;
while ((chunk = stream.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
stream.once("error", (err) => {
this.logger.error({
err,
tnx: "send",
messageId
}, "Failed creating message for %s. %s", messageId, err.message);
return done(err);
});
stream.on("end", () => done(null, {
envelope: mail.data.envelope || mail.message.getEnvelope(),
messageId,
message: Buffer.concat(chunks, chunklen)
}));
});
}
}
module.exports = StreamTransport;
});
// node_modules/nodemailer/lib/json-transport/index.js
var require_json_transport = __commonJS((exports, module) => {
var packageData = require_package2();
var shared = require_shared();
class JSONTransport {
constructor(options) {
options = options || {};
this.options = options || {};
this.name = "JSONTransport";
this.version = packageData.version;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "json-transport"
});
}
send(mail, done) {
mail.message.keepBcc = true;
let envelope = mail.data.envelope || mail.message.getEnvelope();
let messageId = mail.message.messageId();
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
this.logger.info({
tnx: "send",
messageId
}, "Composing JSON structure of %s to <%s>", messageId, recipients.join(", "));
setImmediate(() => {
mail.normalize((err, data) => {
if (err) {
this.logger.error({
err,
tnx: "send",
messageId
}, "Failed building JSON structure for %s. %s", messageId, err.message);
return done(err);
}
delete data.envelope;
delete data.normalizedHeaders;
return done(null, {
envelope,
messageId,
message: this.options.skipEncoding ? data : JSON.stringify(data)
});
});
});
}
}
module.exports = JSONTransport;
});
// node_modules/nodemailer/lib/ses-transport/index.js
var require_ses_transport = __commonJS((exports, module) => {
var EventEmitter = __require("events");
var packageData = require_package2();
var shared = require_shared();
var LeWindows = require_le_windows();
class SESTransport extends EventEmitter {
constructor(options) {
super();
options = options || {};
this.options = options || {};
this.ses = this.options.SES;
this.name = "SESTransport";
this.version = packageData.version;
this.logger = shared.getLogger(this.options, {
component: this.options.component || "ses-transport"
});
this.maxConnections = Number(this.options.maxConnections) || Infinity;
this.connections = 0;
this.sendingRate = Number(this.options.sendingRate) || Infinity;
this.sendingRateTTL = null;
this.rateInterval = 1000;
this.rateMessages = [];
this.pending = [];
this.idling = true;
setImmediate(() => {
if (this.idling) {
this.emit("idle");
}
});
}
send(mail, callback) {
if (this.connections >= this.maxConnections) {
this.idling = false;
return this.pending.push({
mail,
callback
});
}
if (!this._checkSendingRate()) {
this.idling = false;
return this.pending.push({
mail,
callback
});
}
this._send(mail, (...args) => {
setImmediate(() => callback(...args));
this._sent();
});
}
_checkRatedQueue() {
if (this.connections >= this.maxConnections || !this._checkSendingRate()) {
return;
}
if (!this.pending.length) {
if (!this.idling) {
this.idling = true;
this.emit("idle");
}
return;
}
let next = this.pending.shift();
this._send(next.mail, (...args) => {
setImmediate(() => next.callback(...args));
this._sent();
});
}
_checkSendingRate() {
clearTimeout(this.sendingRateTTL);
let now = Date.now();
let oldest = false;
for (let i = this.rateMessages.length - 1;i >= 0; i--) {
if (this.rateMessages[i].ts >= now - this.rateInterval && (!oldest || this.rateMessages[i].ts < oldest)) {
oldest = this.rateMessages[i].ts;
}
if (this.rateMessages[i].ts < now - this.rateInterval && !this.rateMessages[i].pending) {
this.rateMessages.splice(i, 1);
}
}
if (this.rateMessages.length < this.sendingRate) {
return true;
}
let delay = Math.max(oldest + 1001, now + 20);
this.sendingRateTTL = setTimeout(() => this._checkRatedQueue(), now - delay);
try {
this.sendingRateTTL.unref();
} catch (E) {
}
return false;
}
_sent() {
this.connections--;
this._checkRatedQueue();
}
isIdle() {
return this.idling;
}
_send(mail, callback) {
let statObject = {
ts: Date.now(),
pending: true
};
this.connections++;
this.rateMessages.push(statObject);
let envelope = mail.data.envelope || mail.message.getEnvelope();
let messageId = mail.message.messageId();
let recipients = [].concat(envelope.to || []);
if (recipients.length > 3) {
recipients.push("...and " + recipients.splice(2).length + " more");
}
this.logger.info({
tnx: "send",
messageId
}, "Sending message %s to <%s>", messageId, recipients.join(", "));
let getRawMessage = (next) => {
if (!mail.data._dkim) {
mail.data._dkim = {};
}
if (mail.data._dkim.skipFields && typeof mail.data._dkim.skipFields === "string") {
mail.data._dkim.skipFields += ":date:message-id";
} else {
mail.data._dkim.skipFields = "date:message-id";
}
let sourceStream = mail.message.createReadStream();
let stream = sourceStream.pipe(new LeWindows);
let chunks = [];
let chunklen = 0;
stream.on("readable", () => {
let chunk;
while ((chunk = stream.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
sourceStream.once("error", (err) => stream.emit("error", err));
stream.once("error", (err) => {
next(err);
});
stream.once("end", () => next(null, Buffer.concat(chunks, chunklen)));
};
setImmediate(() => getRawMessage((err, raw) => {
if (err) {
this.logger.error({
err,
tnx: "send",
messageId
}, "Failed creating message for %s. %s", messageId, err.message);
statObject.pending = false;
return callback(err);
}
let sesMessage = {
RawMessage: {
Data: raw
},
Source: envelope.from,
Destinations: envelope.to
};
Object.keys(mail.data.ses || {}).forEach((key) => {
sesMessage[key] = mail.data.ses[key];
});
let ses = (this.ses.aws ? this.ses.ses : this.ses) || {};
let aws = this.ses.aws || {};
let getRegion = (cb) => {
if (ses.config && typeof ses.config.region === "function") {
return ses.config.region().then((region) => cb(null, region)).catch((err2) => cb(err2));
}
return cb(null, ses.config && ses.config.region || "us-east-1");
};
getRegion((err2, region) => {
if (err2 || !region) {
region = "us-east-1";
}
let sendPromise;
if (typeof ses.send === "function" && aws.SendRawEmailCommand) {
sendPromise = ses.send(new aws.SendRawEmailCommand(sesMessage));
} else {
sendPromise = ses.sendRawEmail(sesMessage).promise();
}
sendPromise.then((data) => {
if (region === "us-east-1") {
region = "email";
}
statObject.pending = false;
callback(null, {
envelope: {
from: envelope.from,
to: envelope.to
},
messageId: "<" + data.MessageId + (!/@/.test(data.MessageId) ? "@" + region + ".amazonses.com" : "") + ">",
response: data.MessageId,
raw
});
}).catch((err3) => {
this.logger.error({
err: err3,
tnx: "send"
}, "Send error for %s: %s", messageId, err3.message);
statObject.pending = false;
callback(err3);
});
});
}));
}
verify(callback) {
let promise;
let ses = (this.ses.aws ? this.ses.ses : this.ses) || {};
let aws = this.ses.aws || {};
const sesMessage = {
RawMessage: {
Data: "From: invalid@invalid\r\nTo: invalid@invalid\r\n Subject: Invalid\r\n\r\nInvalid"
},
Source: "invalid@invalid",
Destinations: ["invalid@invalid"]
};
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
const cb = (err) => {
if (err && (err.code || err.Code) !== "InvalidParameterValue") {
return callback(err);
}
return callback(null, true);
};
if (typeof ses.send === "function" && aws.SendRawEmailCommand) {
sesMessage.RawMessage.Data = Buffer.from(sesMessage.RawMessage.Data);
ses.send(new aws.SendRawEmailCommand(sesMessage), cb);
} else {
ses.sendRawEmail(sesMessage, cb);
}
return promise;
}
}
module.exports = SESTransport;
});
// node_modules/nodemailer/lib/nodemailer.js
var require_nodemailer = __commonJS((exports, module) => {
var Mailer = require_mailer();
var shared = require_shared();
var SMTPPool = require_smtp_pool();
var SMTPTransport = require_smtp_transport();
var SendmailTransport = require_sendmail_transport();
var StreamTransport = require_stream_transport();
var JSONTransport = require_json_transport();
var SESTransport = require_ses_transport();
var nmfetch = require_fetch();
var packageData = require_package2();
var ETHEREAL_API = (process.env.ETHEREAL_API || "https://api.nodemailer.com").replace(/\/+$/, "");
var ETHEREAL_WEB = (process.env.ETHEREAL_WEB || "https://ethereal.email").replace(/\/+$/, "");
var ETHEREAL_API_KEY = (process.env.ETHEREAL_API_KEY || "").replace(/\s*/g, "") || null;
var ETHEREAL_CACHE = ["true", "yes", "y", "1"].includes((process.env.ETHEREAL_CACHE || "yes").toString().trim().toLowerCase());
var testAccount = false;
exports.createTransport = function(transporter, defaults) {
let urlConfig;
let options;
let mailer;
if (typeof transporter === "object" && typeof transporter.send !== "function" || typeof transporter === "string" && /^(smtps?|direct):/i.test(transporter)) {
if (urlConfig = typeof transporter === "string" ? transporter : transporter.url) {
options = shared.parseConnectionUrl(urlConfig);
} else {
options = transporter;
}
if (options.pool) {
transporter = new SMTPPool(options);
} else if (options.sendmail) {
transporter = new SendmailTransport(options);
} else if (options.streamTransport) {
transporter = new StreamTransport(options);
} else if (options.jsonTransport) {
transporter = new JSONTransport(options);
} else if (options.SES) {
transporter = new SESTransport(options);
} else {
transporter = new SMTPTransport(options);
}
}
mailer = new Mailer(transporter, options, defaults);
return mailer;
};
exports.createTestAccount = function(apiUrl, callback) {
let promise;
if (!callback && typeof apiUrl === "function") {
callback = apiUrl;
apiUrl = false;
}
if (!callback) {
promise = new Promise((resolve, reject) => {
callback = shared.callbackPromise(resolve, reject);
});
}
if (ETHEREAL_CACHE && testAccount) {
setImmediate(() => callback(null, testAccount));
return promise;
}
apiUrl = apiUrl || ETHEREAL_API;
let chunks = [];
let chunklen = 0;
let requestHeaders = {};
let requestBody = {
requestor: packageData.name,
version: packageData.version
};
if (ETHEREAL_API_KEY) {
requestHeaders.Authorization = "Bearer " + ETHEREAL_API_KEY;
}
let req = nmfetch(apiUrl + "/user", {
contentType: "application/json",
method: "POST",
headers: requestHeaders,
body: Buffer.from(JSON.stringify(requestBody))
});
req.on("readable", () => {
let chunk;
while ((chunk = req.read()) !== null) {
chunks.push(chunk);
chunklen += chunk.length;
}
});
req.once("error", (err) => callback(err));
req.once("end", () => {
let res = Buffer.concat(chunks, chunklen);
let data;
let err;
try {
data = JSON.parse(res.toString());
} catch (E) {
err = E;
}
if (err) {
return callback(err);
}
if (data.status !== "success" || data.error) {
return callback(new Error(data.error || "Request failed"));
}
delete data.status;
testAccount = data;
callback(null, testAccount);
});
return promise;
};
exports.getTestMessageUrl = function(info) {
if (!info || !info.response) {
return false;
}
let infoProps = new Map;
info.response.replace(/\[([^\]]+)\]$/, (m, props) => {
props.replace(/\b([A-Z0-9]+)=([^\s]+)/g, (m2, key, value) => {
infoProps.set(key, value);
});
});
if (infoProps.has("STATUS") && infoProps.has("MSGID")) {
return (testAccount.web || ETHEREAL_WEB) + "/message/" + infoProps.get("MSGID");
}
return false;
};
});
// package-shared/utils/backend/parseCookies.ts
function parseCookies({
request,
cookieString
}) {
try {
const cookieStr = request ? request.headers.cookie : cookieString ? cookieString : undefined;
if (!cookieStr)
return {};
if (!cookieStr || typeof cookieStr !== "string") {
return {};
}
const cookieSplitArray = cookieStr.split(";");
let cookieObject = {};
cookieSplitArray.forEach((keyValueString) => {
const [key, value] = keyValueString.split("=");
if (key && typeof key == "string") {
const parsedKey = key.replace(/^ +| +$/, "");
cookieObject[parsedKey] = value && typeof value == "string" ? value.replace(/^ +| +$/, "") : "";
}
});
return cookieObject;
} catch (error) {
console.log(`ERROR parsing cookies: ${error.message}`);
return {};
}
}
// node_modules/generate-password/src/generate.js
var require_generate = __commonJS((exports, module) => {
var crypto2 = __require("crypto");
var RANDOM_BATCH_SIZE = 256;
var randomIndex;
var randomBytes;
var getNextRandomValue = function() {
if (randomIndex === undefined || randomIndex >= randomBytes.length) {
randomIndex = 0;
randomBytes = crypto2.randomBytes(RANDOM_BATCH_SIZE);
}
var result = randomBytes[randomIndex];
randomIndex += 1;
return result;
};
var randomNumber = function(max) {
var rand = getNextRandomValue();
while (rand >= 256 - 256 % max) {
rand = getNextRandomValue();
}
return rand % max;
};
var lowercase = "abcdefghijklmnopqrstuvwxyz";
var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numbers = "0123456789";
var symbols = '!@#$%^&*()+_-=}{[]|:;"/?.><,`~';
var similarCharacters = /[ilLI|`oO0]/g;
var strictRules = [
{ name: "lowercase", rule: /[a-z]/ },
{ name: "uppercase", rule: /[A-Z]/ },
{ name: "numbers", rule: /[0-9]/ },
{ name: "symbols", rule: /[!@#$%^&*()+_\-=}{[\]|:;"/?.><,`~]/ }
];
var generate = function(options, pool) {
var password = "", optionsLength = options.length, poolLength = pool.length;
for (var i = 0;i < optionsLength; i++) {
password += pool[randomNumber(poolLength)];
}
if (options.strict) {
var fitsRules = strictRules.every(function(rule) {
if (options[rule.name] == false)
return true;
if (rule.name === "symbols" && typeof options[rule.name] === "string") {
var re = new RegExp("[" + options[rule.name] + "]");
return re.test(password);
}
return rule.rule.test(password);
});
if (!fitsRules)
return generate(options, pool);
}
return password;
};
exports.generate = function(options) {
options = options || {};
if (!Object.prototype.hasOwnProperty.call(options, "length"))
options.length = 10;
if (!Object.prototype.hasOwnProperty.call(options, "numbers"))
options.numbers = false;
if (!Object.prototype.hasOwnProperty.call(options, "symbols"))
options.symbols = false;
if (!Object.prototype.hasOwnProperty.call(options, "exclude"))
options.exclude = "";
if (!Object.prototype.hasOwnProperty.call(options, "uppercase"))
options.uppercase = true;
if (!Object.prototype.hasOwnProperty.call(options, "lowercase"))
options.lowercase = true;
if (!Object.prototype.hasOwnProperty.call(options, "excludeSimilarCharacters"))
options.excludeSimilarCharacters = false;
if (!Object.prototype.hasOwnProperty.call(options, "strict"))
options.strict = false;
if (options.strict) {
var minStrictLength = 1 + (options.numbers ? 1 : 0) + (options.symbols ? 1 : 0) + (options.uppercase ? 1 : 0);
if (minStrictLength > options.length) {
throw new TypeError("Length must correlate with strict guidelines");
}
}
var pool = "";
if (options.lowercase) {
pool += lowercase;
}
if (options.uppercase) {
pool += uppercase;
}
if (options.numbers) {
pool += numbers;
}
if (options.symbols) {
if (typeof options.symbols === "string") {
pool += options.symbols;
} else {
pool += symbols;
}
}
if (!pool) {
throw new TypeError("At least one rule for pools must be true");
}
if (options.excludeSimilarCharacters) {
pool = pool.replace(similarCharacters, "");
}
var i = options.exclude.length;
while (i--) {
pool = pool.replace(options.exclude[i], "");
}
var password = generate(options, pool);
return password;
};
exports.generateMultiple = function(amount, options) {
var passwords = [];
for (var i = 0;i < amount; i++) {
passwords[i] = exports.generate(options);
}
return passwords;
};
});
// package-shared/functions/api/users/api-delete-user.ts
async function apiDeleteUser({
dbFullName,
deletedUserId,
useLocal
}) {
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
const existingUserValues = [deletedUserId];
const existingUser = await varDatabaseDbHandler2({
queryString: existingUserQuery,
queryValuesArray: existingUserValues,
database: dbFullName,
useLocal
});
if (!existingUser?.[0]) {
return {
success: false,
msg: "User not found"
};
}
const deleteUser = await deleteDbEntry({
dbContext: "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: "users",
identifierColumnName: "id",
identifierValue: deletedUserId,
useLocal
});
return {
success: true,
result: deleteUser
};
}
var init_api_delete_user = __esm(() => {
init_deleteDbEntry();
init_varDatabaseDbHandler();
});
// users/delete-user.ts
var exports_delete_user = {};
__export(exports_delete_user, {
default: () => deleteUser
});
import path16 from "path";
import fs21 from "fs";
async function deleteUser({
key,
database,
user_id,
useLocal,
deletedUserId
}) {
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path16.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs21.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiDeleteUser({
dbFullName: DSQL_DB_NAME,
useLocal,
deletedUserId
});
}
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
database,
deletedUserId
});
const httpsRequest2 = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY || key
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/delete-user`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest2.write(reqPayload);
httpsRequest2.end();
});
return httpResponse;
}
var init_delete_user = __esm(() => {
init_grab_host_names();
init_api_delete_user();
});
// users/validate-temp-email-code.ts
var exports_validate_temp_email_code = {};
__export(exports_validate_temp_email_code, {
default: () => validateTempEmailCode
});
async function validateTempEmailCode({
request,
email,
cookieString
}) {
try {
const keyNames = getAuthCookieNames();
const oneTimeCodeCookieName = keyNames.oneTimeCodeName;
const cookies = parseCookies({ request, cookieString });
const encryptedOneTimeCode = cookies[oneTimeCodeCookieName];
const encryptedPayload = decrypt({
encryptedString: encryptedOneTimeCode
});
const payload = ejson_default.parse(encryptedPayload);
if (payload?.email && !email) {
return payload;
}
if (payload?.email && payload.email === email) {
return payload;
}
return null;
} catch (error) {
console.log("validateTempEmailCode error:", error.message);
return null;
}
}
var init_validate_temp_email_code = __esm(() => {
init_decrypt();
init_ejson();
});
// utils/get.ts
init_grab_host_names();
import path from "path";
import fs4 from "fs";
// package-shared/functions/api/query/get.ts
var import_lodash = __toESM(require_lodash(), 1);
init_serverError();
// package-shared/functions/backend/fullAccessDbHandler.ts
init_DSQL_USER_DB_HANDLER();
init_LOCAL_DB_HANDLER();
init_parseDbResults();
init_serverError();
async function fullAccessDbHandler({
queryString,
database,
tableSchema,
queryValuesArray,
local
}) {
let results;
try {
results = local ? await LOCAL_DB_HANDLER(queryString, queryValuesArray) : await DSQL_USER_DB_HANDLER({
paradigm: "Full Access",
database,
queryString,
queryValues: queryValuesArray
});
} catch (error) {
serverError({
component: "fullAccessDbHandler",
message: error.message
});
return error.message;
}
if (results && tableSchema) {
const unparsedResults = results;
const parsedResults = await parseDbResults({
unparsedResults,
tableSchema
});
return parsedResults;
} else if (results) {
return results;
} else {
return null;
}
}
// package-shared/functions/backend/varReadOnlyDatabaseDbHandler.ts
init_serverError();
init_parseDbResults();
init_DSQL_USER_DB_HANDLER();
init_LOCAL_DB_HANDLER();
async function varReadOnlyDatabaseDbHandler({
queryString,
database,
queryValuesArray,
tableSchema,
useLocal
}) {
let results;
try {
results = useLocal ? await LOCAL_DB_HANDLER(queryString, queryValuesArray) : await DSQL_USER_DB_HANDLER({
paradigm: "Read Only",
database,
queryString,
queryValues: queryValuesArray
});
} catch (error) {
serverError({
component: "varReadOnlyDatabaseDbHandler",
message: error.message,
noMail: true
});
return error.message;
}
if (results) {
const unparsedResults = results;
const parsedResults = await parseDbResults({
unparsedResults,
tableSchema
});
return parsedResults;
} else {
return null;
}
}
// package-shared/functions/backend/db/runQuery.ts
init_serverError();
// package-shared/functions/backend/db/addDbEntry.ts
var import_sanitize_html2 = __toESM(require_sanitize_html(), 1);
// package-shared/functions/backend/html/sanitizeHtmlOptions.ts
var sanitizeHtmlOptions = {
allowedTags: [
"b",
"i",
"em",
"strong",
"a",
"p",
"span",
"ul",
"ol",
"li",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"img",
"div",
"button",
"pre",
"code",
"br"
],
allowedAttributes: {
a: ["href"],
img: ["src", "alt", "width", "height", "class", "style"],
"*": ["style", "class"]
}
};
var sanitizeHtmlOptions_default = sanitizeHtmlOptions;
// package-shared/functions/backend/db/updateDbEntry.ts
var import_sanitize_html = __toESM(require_sanitize_html(), 1);
init_DB_HANDLER();
init_DSQL_USER_DB_HANDLER();
init_encrypt();
init_LOCAL_DB_HANDLER();
async function updateDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
data,
tableSchema,
identifierColumnName,
identifierValue,
encryptionKey,
encryptionSalt,
useLocal
}) {
if (!data || !Object.keys(data).length)
return null;
const isMaster = useLocal ? true : dbContext?.match(/dsql.user/i) ? false : dbFullName && !dbFullName.match(/^datasquirel$/) ? false : true;
const dbHandler = useLocal ? LOCAL_DB_HANDLER : isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
const dataKeys = Object.keys(data);
let updateKeyValueArray = [];
let updateValues = [];
for (let i = 0;i < dataKeys.length; i++) {
try {
const dataKey = dataKeys[i];
let value = data[dataKey];
const targetFieldSchemaArray = tableSchema ? tableSchema?.fields?.filter((field) => field.fieldName === dataKey) : null;
const targetFieldSchema = targetFieldSchemaArray && targetFieldSchemaArray[0] ? targetFieldSchemaArray[0] : null;
if (value == null || value == undefined)
continue;
const htmlRegex = /<[^>]+>/g;
if (targetFieldSchema?.richText || String(value).match(htmlRegex)) {
value = import_sanitize_html.default(value, sanitizeHtmlOptions_default);
}
if (targetFieldSchema?.encrypted) {
value = encrypt({
data: value,
encryptionKey,
encryptionSalt
});
}
if (typeof value === "object") {
value = JSON.stringify(value);
}
if (targetFieldSchema?.pattern) {
const pattern = new RegExp(targetFieldSchema.pattern, targetFieldSchema.patternFlags || "");
if (!pattern.test(value)) {
console.log("DSQL: Pattern not matched =>", value);
value = "";
}
}
if (typeof value === "string" && value.match(/^null$/i)) {
value = {
toSqlString: function() {
return "NULL";
}
};
}
if (typeof value === "string" && !value.match(/./i)) {
value = {
toSqlString: function() {
return "NULL";
}
};
}
updateKeyValueArray.push(`\`${dataKey}\`=?`);
if (typeof value == "number") {
updateValues.push(String(value));
} else {
updateValues.push(value);
}
} catch (error) {
console.log("DSQL: Error in parsing data keys in update function =>", error.message);
continue;
}
}
updateKeyValueArray.push(`date_updated='${Date()}'`);
updateKeyValueArray.push(`date_updated_code='${Date.now()}'`);
const query = `UPDATE ${tableName} SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`;
updateValues.push(identifierValue);
const updatedEntry = isMaster ? await dbHandler(query, updateValues) : await dbHandler({
paradigm,
database: dbFullName,
queryString: query,
queryValues: updateValues
});
return updatedEntry;
}
// package-shared/functions/backend/db/addDbEntry.ts
init_DB_HANDLER();
init_DSQL_USER_DB_HANDLER();
init_encrypt();
init_LOCAL_DB_HANDLER();
async function addDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
data,
tableSchema,
duplicateColumnName,
duplicateColumnValue,
update,
encryptionKey,
encryptionSalt,
useLocal
}) {
const isMaster = useLocal ? true : dbContext?.match(/dsql.user/i) ? false : dbFullName && !dbFullName.match(/^datasquirel$/) ? false : true;
const dbHandler = useLocal ? LOCAL_DB_HANDLER : isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
if (data?.["date_created_timestamp"])
delete data["date_created_timestamp"];
if (data?.["date_updated_timestamp"])
delete data["date_updated_timestamp"];
if (data?.["date_updated"])
delete data["date_updated"];
if (data?.["date_updated_code"])
delete data["date_updated_code"];
if (data?.["date_created"])
delete data["date_created"];
if (data?.["date_created_code"])
delete data["date_created_code"];
if (duplicateColumnName && typeof duplicateColumnName === "string") {
const duplicateValue = isMaster ? await dbHandler(`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`, [duplicateColumnValue]) : await dbHandler({
paradigm: "Read Only",
database: dbFullName,
queryString: `SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
queryValues: [duplicateColumnValue]
});
if (duplicateValue?.[0] && !update) {
return null;
} else if (duplicateValue && duplicateValue[0] && update) {
return await updateDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
data,
tableSchema,
encryptionKey,
encryptionSalt,
identifierColumnName: duplicateColumnName,
identifierValue: duplicateColumnValue || ""
});
}
}
const dataKeys = Object.keys(data);
let insertKeysArray = [];
let insertValuesArray = [];
for (let i = 0;i < dataKeys.length; i++) {
try {
const dataKey = dataKeys[i];
let value = data?.[dataKey];
const targetFieldSchemaArray = tableSchema ? tableSchema?.fields?.filter((field) => field.fieldName == dataKey) : null;
const targetFieldSchema = targetFieldSchemaArray && targetFieldSchemaArray[0] ? targetFieldSchemaArray[0] : null;
if (value == null || value == undefined)
continue;
if (targetFieldSchema?.dataType?.match(/int$/i) && typeof value == "string" && !value?.match(/./))
continue;
if (targetFieldSchema?.encrypted) {
value = encrypt({
data: value,
encryptionKey,
encryptionSalt
});
console.log("DSQL: Encrypted value =>", value);
}
const htmlRegex = /<[^>]+>/g;
if (targetFieldSchema?.richText || String(value).match(htmlRegex)) {
value = import_sanitize_html2.default(value, sanitizeHtmlOptions_default);
}
if (targetFieldSchema?.pattern) {
const pattern = new RegExp(targetFieldSchema.pattern, targetFieldSchema.patternFlags || "");
if (!pattern.test(value)) {
console.log("DSQL: Pattern not matched =>", value);
value = "";
}
}
insertKeysArray.push("`" + dataKey + "`");
if (typeof value === "object") {
value = JSON.stringify(value);
}
if (typeof value == "number") {
insertValuesArray.push(String(value));
} else {
insertValuesArray.push(value);
}
} catch (error) {
console.log("DSQL: Error in parsing data keys =>", error.message);
continue;
}
}
if (!data?.["date_created"]) {
insertKeysArray.push("`date_created`");
insertValuesArray.push(Date());
}
if (!data?.["date_created_code"]) {
insertKeysArray.push("`date_created_code`");
insertValuesArray.push(Date.now());
}
if (!data?.["date_updated"]) {
insertKeysArray.push("`date_updated`");
insertValuesArray.push(Date());
}
if (!data?.["date_updated_code"]) {
insertKeysArray.push("`date_updated_code`");
insertValuesArray.push(Date.now());
}
const query = `INSERT INTO \`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
const queryValuesArray = insertValuesArray;
const newInsert = isMaster ? await dbHandler(query, queryValuesArray) : await dbHandler({
paradigm,
database: dbFullName,
queryString: query,
queryValues: queryValuesArray
});
return newInsert;
}
// package-shared/functions/backend/db/runQuery.ts
init_deleteDbEntry();
// package-shared/utils/trim-sql.ts
function trimSql(sql) {
return sql.replace(/\n|\r|\n\r|\r\n/gm, " ").replace(/ {2,}/g, " ").trim();
}
// package-shared/functions/backend/db/runQuery.ts
async function runQuery({
dbFullName,
query,
readOnly,
dbSchema,
queryValuesArray,
tableName,
local
}) {
let result;
let error;
let tableSchema;
if (dbSchema) {
try {
const table = tableName ? tableName : typeof query == "string" ? null : query ? query?.table : null;
if (!table)
throw new Error("No table name provided");
tableSchema = dbSchema.tables.filter((tb) => tb?.tableName === table)[0];
} catch (_err) {
}
}
try {
if (typeof query === "string") {
const formattedQuery = trimSql(query);
if (readOnly && formattedQuery.match(/^alter|^delete|information_schema|^create/i)) {
throw new Error("Wrong Input!");
}
if (readOnly) {
result = await varReadOnlyDatabaseDbHandler({
queryString: formattedQuery,
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
database: dbFullName,
tableSchema,
useLocal: local
});
} else {
result = await fullAccessDbHandler({
queryString: formattedQuery,
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
database: dbFullName,
tableSchema,
local
});
}
} else if (typeof query === "object") {
const {
data,
action,
table,
identifierColumnName,
identifierValue,
update,
duplicateColumnName,
duplicateColumnValue
} = query;
switch (action.toLowerCase()) {
case "insert":
result = await addDbEntry({
dbContext: local ? "Master" : "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: table,
data,
update,
duplicateColumnName,
duplicateColumnValue,
tableSchema,
useLocal: local
});
if (!result?.insertId) {
error = new Error("Couldn't insert data");
}
break;
case "update":
result = await updateDbEntry({
dbContext: local ? "Master" : "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: table,
data,
identifierColumnName,
identifierValue,
tableSchema,
useLocal: local
});
break;
case "delete":
result = await deleteDbEntry({
dbContext: local ? "Master" : "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: table,
identifierColumnName,
identifierValue,
tableSchema,
useLocal: local
});
break;
default:
result = null;
break;
}
}
} catch (error2) {
serverError({
component: "functions/backend/runQuery",
message: error2.message
});
result = null;
error2 = error2.message;
}
return { result, error };
}
// package-shared/functions/api/query/get.ts
async function apiGet({
query,
dbFullName,
queryValues,
tableName,
dbSchema,
useLocal
}) {
if (typeof query == "string" && query.match(/^alter|^delete|information_schema|databases|^create/i)) {
return { success: false, msg: "Wrong Input." };
}
let results;
try {
let { result, error } = await runQuery({
dbFullName,
query,
queryValuesArray: queryValues,
readOnly: true,
dbSchema,
tableName,
local: useLocal
});
let tableSchema;
if (dbSchema) {
const targetTable = dbSchema.tables.find((table) => table.tableName === tableName);
if (targetTable) {
const clonedTargetTable = import_lodash.default.cloneDeep(targetTable);
delete clonedTargetTable.childTable;
delete clonedTargetTable.childTableDbFullName;
delete clonedTargetTable.childTableName;
delete clonedTargetTable.childrenTables;
delete clonedTargetTable.updateData;
delete clonedTargetTable.tableNameOld;
delete clonedTargetTable.indexes;
tableSchema = clonedTargetTable;
}
}
if (error)
throw error;
if (result.error)
throw new Error(result.error);
results = result;
const resObject = {
success: true,
payload: results,
schema: tableName && tableSchema ? tableSchema : undefined
};
return resObject;
} catch (error) {
serverError({
component: "/api/query/get/lines-85-94",
message: error.message
});
return { success: false, payload: null, error: error.message };
}
}
// package-shared/utils/serialize-query.ts
init_ejson();
function serializeQuery(query) {
let str = "?";
if (typeof query !== "object") {
console.log("Invalid Query type");
return str;
}
if (Array.isArray(query)) {
console.log("Query is an Array. This is invalid.");
return str;
}
if (!query) {
console.log("No Query provided.");
return str;
}
const keys = Object.keys(query);
const queryArr = [];
keys.forEach((key) => {
if (!key || !query[key])
return;
const value = query[key];
if (typeof value === "object") {
const jsonStr = ejson_default.stringify(value);
queryArr.push(`${key}=${encodeURIComponent(String(jsonStr))}`);
} else if (typeof value === "string" || typeof value === "number") {
queryArr.push(`${key}=${encodeURIComponent(value)}`);
} else {
queryArr.push(`${key}=${String(value)}`);
}
});
str += queryArr.join("&");
return str;
}
// utils/get.ts
async function get({
key,
db,
query,
queryValues,
tableName,
useLocal,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs4.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiGet({
dbFullName: DSQL_DB_NAME,
query,
queryValues,
tableName,
dbSchema,
useLocal
});
}
const httpResponse = await new Promise((resolve, reject) => {
const queryObject = {
db: process.env.DSQL_API_DB_NAME || String(db),
query: String(query.replace(/\n|\r|\n\r/g, "").replace(/ {2,}/g, " ")),
queryValues: queryValues ? JSON.stringify(queryValues) : undefined,
tableName
};
const queryString = serializeQuery({ ...queryObject });
let path2 = `/api/query/${user_id || grabedHostNames.user_id}/get${queryString}`;
const requestObject = {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: key || process.env.DSQL_READ_ONLY_API_KEY || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: path2
};
scheme.request(requestObject, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
try {
resolve(JSON.parse(str));
} catch (error) {
reject({
error: error.message,
result: str
});
}
});
response.on("error", (err) => {
console.log("DSQL get Error,", err.message);
resolve(null);
});
}).end();
});
return httpResponse;
}
// utils/post.ts
init_grab_host_names();
import path2 from "path";
import fs5 from "fs";
// package-shared/functions/api/query/post.ts
var import_lodash2 = __toESM(require_lodash(), 1);
init_serverError();
async function apiPost({
query,
dbFullName,
queryValues,
tableName,
dbSchema,
useLocal
}) {
if (typeof query === "string" && query?.match(/^create |^alter |^drop /i)) {
return { success: false, msg: "Wrong Input" };
}
if (typeof query === "object" && query?.action?.match(/^create |^alter |^drop /i)) {
return { success: false, msg: "Wrong Input" };
}
let results;
try {
let { result, error } = await runQuery({
dbFullName,
query,
dbSchema,
queryValuesArray: queryValues,
tableName,
local: useLocal
});
results = result;
if (error)
throw error;
let tableSchema;
if (dbSchema) {
const targetTable = dbSchema.tables.find((table) => table.tableName === tableName);
if (targetTable) {
const clonedTargetTable = import_lodash2.default.cloneDeep(targetTable);
delete clonedTargetTable.childTable;
delete clonedTargetTable.childTableDbFullName;
delete clonedTargetTable.childTableName;
delete clonedTargetTable.childrenTables;
delete clonedTargetTable.updateData;
delete clonedTargetTable.tableNameOld;
delete clonedTargetTable.indexes;
tableSchema = clonedTargetTable;
}
}
return {
success: true,
payload: results,
error,
schema: tableName && tableSchema ? tableSchema : undefined
};
} catch (error) {
serverError({
component: "/api/query/post/lines-132-142",
message: error.message
});
return {
success: false,
payload: results,
error: error.message
};
}
}
// utils/post.ts
async function post({
key,
query,
queryValues,
database,
tableName,
useLocal,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path2.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs5.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiPost({
dbFullName: DSQL_DB_NAME,
query,
dbSchema,
queryValues,
tableName,
useLocal
});
}
const httpResponse = await new Promise((resolve, reject) => {
const reqPayloadString = JSON.stringify({
query,
queryValues,
database: process.env.DSQL_API_DB_NAME || database,
tableName: tableName ? tableName : null
}).replace(/\n|\r|\n\r/gm, "");
try {
JSON.parse(reqPayloadString);
} catch (error) {
console.log(error);
console.log(reqPayloadString);
return {
success: false,
payload: null,
error: "Query object is invalid. Please Check query data values"
};
}
const reqPayload = reqPayloadString;
const requPath = `/api/query/${user_id || grabedHostNames.user_id}/post`;
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: requPath
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
try {
resolve(JSON.parse(str));
} catch (error) {
console.log("Route ERROR:", error.message);
resolve({
success: false,
payload: null,
error: error.message,
errPayload: str
});
}
});
response.on("error", (err) => {
resolve({
success: false,
payload: null,
error: err.message
});
});
});
httpsRequest.write(reqPayload);
httpsRequest.on("error", (error) => {
console.log("HTTPS request ERROR =>", error);
});
httpsRequest.end();
});
return httpResponse;
}
// utils/get-schema.ts
init_grab_host_names();
async function getSchema({
key,
database,
field,
table,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const httpResponse = await new Promise((resolve, reject) => {
const queryObject = { database, field, table };
let query = Object.keys(queryObject).filter((k) => queryObject[k]).map((k) => `${k}=${queryObject[k]}`).join("&");
scheme.request({
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/query/${user_id || grabedHostNames.user_id}/get-schema` + (query?.match(/./) ? `?${query}` : "")
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
resolve(null);
});
}).end();
});
return {
success: true,
payload: httpResponse
};
}
// utils/upload-image.ts
init_grab_host_names();
async function uploadImage({
key,
payload,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
try {
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify(payload);
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/query/${user_id || grabedHostNames.user_id}/add-image`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
} catch (error) {
console.log("Error in uploading image: ", error.message);
return {
success: false,
payload: null,
msg: error.message
};
}
}
module_upload_image.exports = uploadImage;
// utils/upload-file.ts
init_grab_host_names();
async function uploadImage2({
key,
payload,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
try {
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify(payload);
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/query/${user_id || grabedHostNames.user_id}/add-file`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
} catch (error) {
console.log("Error in uploading file: ", error.message);
return {
success: false,
payload: null,
msg: error.message
};
}
}
// utils/delete-file.ts
init_grab_host_names();
async function deleteFile({
key,
url,
user_id
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
try {
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({ url });
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/query/${user_id || grabedHostNames.user_id}/delete-file`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
} catch (error) {
console.log("Error deleting file: ", error.message);
return {
success: false,
payload: null,
msg: error.message
};
}
}
module_delete_file.exports = deleteFile;
// users/add-user.ts
init_grab_host_names();
import path7 from "path";
import fs11 from "fs";
// package-shared/functions/backend/addUsersTableToDb.ts
init_serverError();
init_DB_HANDLER();
// package-shared/functions/backend/grabUserSchemaData.ts
init_serverError();
import fs6 from "fs";
import path3 from "path";
function grabUserSchemaData({
userId
}) {
try {
const userSchemaFilePath = path3.resolve(process.cwd(), `${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${userId}/main.json`);
const userSchemaData = JSON.parse(fs6.readFileSync(userSchemaFilePath, "utf-8"));
return userSchemaData;
} catch (error) {
serverError({
component: "grabUserSchemaData",
message: error.message
});
return null;
}
}
// package-shared/functions/backend/setUserSchemaData.ts
init_serverError();
import fs7 from "fs";
import path4 from "path";
function setUserSchemaData({
userId,
schemaData
}) {
try {
const userSchemaFilePath = path4.resolve(process.cwd(), `${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${userId}/main.json`);
fs7.writeFileSync(userSchemaFilePath, JSON.stringify(schemaData), "utf8");
return true;
} catch (error) {
serverError({
component: "/functions/backend/setUserSchemaData",
message: error.message
});
return false;
}
}
// package-shared/shell/createDbFromSchema.ts
import path6 from "path";
import fs10 from "fs";
// package-shared/shell/utils/dbHandler.ts
var import_serverless_mysql4 = __toESM(require_serverless_mysql(), 1);
init_grabDbSSL();
import fs8 from "fs";
import path5 from "path";
var __dirname = "/home/benoti/Projects/Git/moduletrace/datasquirel/datasquirel/package-shared/shell/utils";
var connection = import_serverless_mysql4.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
charset: "utf8mb4",
ssl: grabDbSSL()
}
});
async function dbHandler({
query,
values,
database
}) {
let isDbCorrect = true;
if (database) {
connection = import_serverless_mysql4.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database,
charset: "utf8mb4",
ssl: grabDbSSL()
}
});
}
if (!isDbCorrect) {
console.log("Shell Db Handler ERROR in switching Database! Operation Failed!");
return null;
}
let results;
try {
if (query && values) {
results = await connection.query(query, values);
} else {
results = await connection.query(query);
}
await connection.end();
} catch (error) {
if (process.env.FIRST_RUN) {
return null;
}
console.log("ERROR in dbHandler =>", error.message);
console.log(error);
console.log(connection.config());
fs8.appendFileSync(path5.resolve(__dirname, "../.tmp/dbErrorLogs.txt"), JSON.stringify(error, null, 4) + "\n" + Date() + "\n\n\n", "utf8");
results = null;
}
if (results) {
return JSON.parse(JSON.stringify(results));
} else {
return null;
}
}
// package-shared/shell/utils/noDatabaseDbHandler.ts
async function noDatabaseDbHandler(queryString) {
let results;
try {
results = await dbHandler({ query: queryString });
} catch (error) {
console.log("ERROR in noDatabaseDbHandler =>", error.message);
}
if (results) {
return results;
} else {
return null;
}
}
// package-shared/shell/utils/varDatabaseDbHandler.ts
async function varDatabaseDbHandler({
queryString,
queryValuesArray,
database,
tableSchema
}) {
let results;
try {
if (queryString && queryValuesArray && Array.isArray(queryValuesArray) && queryValuesArray[0]) {
results = await dbHandler({
query: queryString,
values: queryValuesArray,
database
});
} else {
results = await dbHandler({
query: queryString,
database
});
}
} catch (error) {
console.log("Shell Vardb Error =>", error.message);
}
return results;
}
// package-shared/shell/utils/generateColumnDescription.ts
function generateColumnDescription({
columnData,
primaryKeySet
}) {
const {
fieldName,
dataType,
nullValue,
primaryKey,
autoIncrement,
defaultValue,
defaultValueLiteral,
onUpdateLiteral,
notNullValue
} = columnData;
let fieldEntryText = "";
fieldEntryText += `\`${fieldName}\` ${dataType}`;
if (nullValue) {
fieldEntryText += " DEFAULT NULL";
} else if (defaultValueLiteral) {
fieldEntryText += ` DEFAULT ${defaultValueLiteral}`;
} else if (defaultValue) {
if (String(defaultValue).match(/uuid\(\)/i)) {
fieldEntryText += ` DEFAULT UUID()`;
} else {
fieldEntryText += ` DEFAULT '${defaultValue}'`;
}
} else if (notNullValue) {
fieldEntryText += ` NOT NULL`;
}
if (onUpdateLiteral) {
fieldEntryText += ` ON UPDATE ${onUpdateLiteral}`;
}
if (primaryKey && !primaryKeySet) {
fieldEntryText += " PRIMARY KEY";
primaryKeySet = true;
}
if (autoIncrement) {
fieldEntryText += " AUTO_INCREMENT";
primaryKeySet = true;
}
return {
fieldEntryText,
newPrimaryKeySet: primaryKeySet || false
};
}
// package-shared/shell/utils/supplementTable.ts
function supplementTable({ tableInfoArray }) {
let finalTableArray = tableInfoArray;
const defaultFields = require_defaultFields();
let primaryKeyExists = finalTableArray.filter((_field) => _field.primaryKey);
defaultFields.forEach((field) => {
let fieldExists = finalTableArray.filter((_field) => _field.fieldName === field.fieldName);
if (fieldExists && fieldExists[0]) {
return;
} else if (field.fieldName === "id" && !primaryKeyExists[0]) {
finalTableArray.unshift(field);
} else {
finalTableArray.push(field);
}
});
return finalTableArray;
}
// package-shared/shell/utils/createTable.ts
async function createTable({
dbFullName,
tableName,
tableInfoArray,
dbSchema,
clone,
tableSchema,
recordedDbEntry
}) {
const finalTable = supplementTable({ tableInfoArray });
const createTableQueryArray = [];
createTableQueryArray.push(`CREATE TABLE IF NOT EXISTS \`${tableName}\` (`);
try {
if (!recordedDbEntry) {
throw new Error("Recorded Db entry not found!");
}
const existingTable = await varDatabaseDbHandler({
database: "datasquirel",
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
queryValuesArray: [recordedDbEntry.id, tableSchema?.tableName]
});
const table = existingTable?.[0];
if (!table?.id) {
const newTableEntry = await dbHandler({
query: `INSERT INTO user_database_tables SET ?`,
values: {
user_id: recordedDbEntry.user_id,
db_id: recordedDbEntry.id,
db_slug: recordedDbEntry.db_slug,
table_name: tableSchema?.tableFullName,
table_slug: tableSchema?.tableName,
child_table: tableSchema?.childTable ? "1" : null,
child_table_parent_database: tableSchema?.childTableDbFullName || null,
child_table_parent_table: tableSchema?.childTableName || null,
date_created: Date(),
date_created_code: Date.now(),
date_updated: Date(),
date_updated_code: Date.now()
},
database: "datasquirel"
});
}
} catch (error) {
}
let primaryKeySet = false;
let foreignKeys = [];
for (let i = 0;i < finalTable.length; i++) {
const column = finalTable[i];
const {
fieldName,
dataType,
nullValue,
primaryKey,
autoIncrement,
defaultValue,
defaultValueLiteral,
foreignKey,
updatedField,
onUpdate,
onUpdateLiteral,
onDelete,
onDeleteLiteral,
defaultField,
encrypted,
json,
newTempField,
notNullValue,
originName,
plainText,
pattern,
patternFlags,
richText
} = column;
if (foreignKey) {
foreignKeys.push({
...column
});
}
let { fieldEntryText, newPrimaryKeySet } = generateColumnDescription({
columnData: column,
primaryKeySet
});
primaryKeySet = newPrimaryKeySet;
const comma = (() => {
if (foreignKeys[0])
return ",";
if (i === finalTable.length - 1)
return "";
return ",";
})();
createTableQueryArray.push(" " + fieldEntryText + comma);
}
if (foreignKeys[0]) {
foreignKeys.forEach((foreighKey, index, array) => {
const fieldName = foreighKey.fieldName;
const destinationTableName = foreighKey.foreignKey?.destinationTableName;
const destinationTableColumnName = foreighKey.foreignKey?.destinationTableColumnName;
const cascadeDelete = foreighKey.foreignKey?.cascadeDelete;
const cascadeUpdate = foreighKey.foreignKey?.cascadeUpdate;
const foreignKeyName = foreighKey.foreignKey?.foreignKeyName;
const comma = (() => {
if (index === foreignKeys.length - 1)
return "";
return ",";
})();
createTableQueryArray.push(` CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${fieldName}\`) REFERENCES \`${destinationTableName}\`(${destinationTableColumnName})${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}${comma}`);
});
}
createTableQueryArray.push(`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;`);
const createTableQuery = createTableQueryArray.join("\n");
const newTable = await varDatabaseDbHandler({
queryString: createTableQuery,
database: dbFullName
});
return newTable;
}
// package-shared/shell/utils/updateTable.ts
import fs9 from "fs";
var defaultFieldsRegexp2 = /^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/;
async function updateTable({
dbFullName,
tableName,
tableInfoArray,
userId,
dbSchema,
tableIndexes,
tableSchema,
clone,
childDb,
tableIndex,
tableNameFull,
recordedDbEntry
}) {
let errorLogs = [];
let upToDateTableFieldsArray = tableInfoArray;
try {
const updateTableQueryArray = [];
const constraintsQueryArray = [];
updateTableQueryArray.push(`ALTER TABLE \`${tableName}\``);
if (childDb) {
try {
if (!recordedDbEntry) {
throw new Error("Recorded Db entry not found!");
}
const existingTable = await varDatabaseDbHandler({
database: "datasquirel",
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
queryValuesArray: [recordedDbEntry.id, tableName]
});
const table = existingTable?.[0];
if (!table?.id) {
const newTableEntry = await dbHandler({
query: `INSERT INTO user_database_tables SET ?`,
values: {
user_id: recordedDbEntry.user_id,
db_id: recordedDbEntry.id,
db_slug: recordedDbEntry.db_slug,
table_name: tableNameFull,
table_slug: tableName,
child_table: tableSchema?.childTable ? "1" : null,
child_table_parent_database: tableSchema?.childTableDbFullName || null,
child_table_parent_table: tableSchema.childTableName || null,
date_created: Date(),
date_created_code: Date.now(),
date_updated: Date(),
date_updated_code: Date.now()
},
database: "datasquirel"
});
}
} catch (error) {
}
}
const allExistingIndexes = await varDatabaseDbHandler({
queryString: `SHOW INDEXES FROM \`${tableName}\``,
database: dbFullName
});
const allExistingColumns = await varDatabaseDbHandler({
queryString: `SHOW COLUMNS FROM \`${tableName}\``,
database: dbFullName
});
const updatedColumnsArray = [];
for (let e = 0;e < allExistingColumns.length; e++) {
const { Field } = allExistingColumns[e];
if (Field.match(defaultFieldsRegexp2))
continue;
let existingEntry = upToDateTableFieldsArray.filter((column) => column.fieldName === Field || column.originName === Field);
if (existingEntry && existingEntry[0]) {
if (existingEntry[0].updatedField && existingEntry[0].fieldName) {
updatedColumnsArray.push(existingEntry[0].fieldName);
const renameColumn = await varDatabaseDbHandler({
queryString: `ALTER TABLE ${tableName} RENAME COLUMN \`${existingEntry[0].originName}\` TO \`${existingEntry[0].fieldName}\``,
database: dbFullName
});
console.log(`Column Renamed from "${existingEntry[0].originName}" to "${existingEntry[0].fieldName}"`);
try {
const userSchemaData = dbSchema;
const targetDbIndex = userSchemaData.findIndex((db) => db.dbFullName === dbFullName);
const targetTableIndex = userSchemaData[targetDbIndex].tables.findIndex((table) => table.tableName === tableName);
const targetFieldIndex = userSchemaData[targetDbIndex].tables[targetTableIndex].fields.findIndex((field) => field.fieldName === existingEntry[0].fieldName);
delete userSchemaData[targetDbIndex].tables[targetTableIndex].fields[targetFieldIndex]["originName"];
delete userSchemaData[targetDbIndex].tables[targetTableIndex].fields[targetFieldIndex]["updatedField"];
upToDateTableFieldsArray = userSchemaData[targetDbIndex].tables[targetTableIndex].fields;
fs9.writeFileSync(`${String(process.env.DSQL_USER_DB_SCHEMA_PATH)}/user-${userId}/main.json`, JSON.stringify(userSchemaData), "utf8");
} catch (error) {
console.log("Update table error =>", error.message);
}
}
continue;
} else {
await varDatabaseDbHandler({
queryString: `ALTER TABLE ${tableName} DROP COLUMN \`${Field}\``,
database: dbFullName
});
}
}
for (let f = 0;f < allExistingIndexes.length; f++) {
const { Key_name, Index_comment } = allExistingIndexes[f];
if (Index_comment?.match(/schema_index/)) {
try {
const existingKeyInSchema = tableIndexes?.filter((indexObject) => indexObject.alias === Key_name);
if (!existingKeyInSchema?.[0])
throw new Error(`This Index(${Key_name}) Has been Deleted!`);
} catch (error) {
await varDatabaseDbHandler({
queryString: `ALTER TABLE ${tableName} DROP INDEX \`${Key_name}\``,
database: dbFullName
});
}
}
}
if (tableIndexes && tableIndexes[0]) {
for (let g = 0;g < tableIndexes.length; g++) {
const { indexType, indexName, indexTableFields, alias } = tableIndexes[g];
if (!alias?.match(/./))
continue;
try {
const existingKeyInDb = allExistingIndexes.filter((indexObject) => indexObject.Key_name === alias);
if (!existingKeyInDb[0])
throw new Error("This Index Does not Exist");
} catch (error) {
await varDatabaseDbHandler({
queryString: `CREATE${indexType?.match(/fullText/i) ? " FULLTEXT" : ""} INDEX \`${alias}\` ON ${tableName}(${indexTableFields?.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
database: dbFullName
});
}
}
}
const allForeignKeys = await varDatabaseDbHandler({
queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`,
database: dbFullName
});
if (allForeignKeys) {
for (let c = 0;c < allForeignKeys.length; c++) {
const { CONSTRAINT_NAME } = allForeignKeys[c];
if (CONSTRAINT_NAME.match(/PRIMARY/))
continue;
const dropForeignKey = await varDatabaseDbHandler({
queryString: `ALTER TABLE ${tableName} DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``,
database: dbFullName
});
}
}
for (let i = 0;i < upToDateTableFieldsArray.length; i++) {
const column = upToDateTableFieldsArray[i];
const prevColumn = upToDateTableFieldsArray[i - 1];
const nextColumn = upToDateTableFieldsArray[i + 1];
const {
fieldName,
dataType,
nullValue,
primaryKey,
autoIncrement,
defaultValue,
defaultValueLiteral,
foreignKey,
updatedField
} = column;
if (fieldName?.match(/^id$|^date_/))
continue;
let updateText = "";
let existingColumnIndex;
let existingColumn = allExistingColumns && allExistingColumns[0] ? allExistingColumns.filter((_column, _index) => {
if (_column.Field === fieldName) {
existingColumnIndex = _index;
return true;
}
}) : null;
let { fieldEntryText } = generateColumnDescription({
columnData: column
});
if (existingColumn && existingColumn[0]?.Field) {
const { Field, Type, Null, Key, Default, Extra } = existingColumn[0];
let isColumnReordered = i < existingColumnIndex;
if (Field === fieldName && !isColumnReordered && dataType?.toUpperCase() === Type.toUpperCase()) {
updateText += `MODIFY COLUMN ${fieldEntryText}`;
} else {
if (userId) {
updateText += `MODIFY COLUMN ${fieldEntryText}${isColumnReordered ? prevColumn?.fieldName ? " AFTER `" + prevColumn.fieldName + "`" : nextColumn?.fieldName ? " BEFORE `" + nextColumn.fieldName + "`" : "" : ""}`;
} else {
updateText += `MODIFY COLUMN ${fieldEntryText}`;
}
}
} else if (prevColumn && prevColumn.fieldName) {
updateText += `ADD COLUMN ${fieldEntryText} AFTER \`${prevColumn.fieldName}\``;
} else if (nextColumn && nextColumn.fieldName) {
updateText += `ADD COLUMN ${fieldEntryText} BEFORE \`${nextColumn.fieldName}\``;
} else {
updateText += `ADD COLUMN ${fieldEntryText}`;
}
updateTableQueryArray.push(updateText + ",");
if (!clone && foreignKey) {
const {
destinationTableName,
destinationTableColumnName,
cascadeDelete,
cascadeUpdate,
foreignKeyName
} = foreignKey;
const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${fieldName}\`) REFERENCES \`${destinationTableName}\`(\`${destinationTableColumnName}\`)${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
const finalQueryString = `ALTER TABLE \`${tableName}\` ${foreinKeyText}`;
const addForeignKey = await varDatabaseDbHandler({
database: dbFullName,
queryString: finalQueryString
});
if (!addForeignKey?.serverStatus) {
errorLogs.push(addForeignKey);
}
}
}
const updateTableQuery = updateTableQueryArray.join(" ").replace(/,$/, "");
if (updateTableQueryArray.length > 1) {
const updateTable2 = await varDatabaseDbHandler({
queryString: updateTableQuery,
database: dbFullName
});
return updateTable2;
} else {
return "No Changes Made to Table";
}
} catch (error) {
console.log('Error in "updateTable" shell function =>', error.message);
return "Error in Updating Table";
}
}
// package-shared/shell/createDbFromSchema.ts
init_ejson();
var __dirname = "/home/benoti/Projects/Git/moduletrace/datasquirel/datasquirel/package-shared/shell";
require_main().config({ path: "./../.env" });
var execFlag = process.argv.find((arg) => arg === "--exec");
async function createDbFromSchema({
userId,
targetDatabase,
dbSchemaData
}) {
const schemaPath = userId ? path6.join(String(process.env.DSQL_USER_DB_SCHEMA_PATH), `/user-${userId}/main.json`) : path6.resolve(__dirname, "../../jsonData/dbSchemas/main.json");
const dbSchema = dbSchemaData || ejson_default.parse(fs10.readFileSync(schemaPath, "utf8"));
if (!dbSchema) {
console.log("Schema Not Found!");
return;
}
for (let i = 0;i < dbSchema.length; i++) {
const database = dbSchema[i];
const { dbFullName, tables, dbName, dbSlug, childrenDatabases } = database;
if (targetDatabase && dbFullName != targetDatabase) {
continue;
}
const dbCheck = await noDatabaseDbHandler(`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`);
if (dbCheck && dbCheck[0]?.dbFullName) {
} else {
const newDatabase = await noDatabaseDbHandler(`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`);
}
const allTables = await noDatabaseDbHandler(`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${dbFullName}'`);
for (let tb = 0;tb < allTables.length; tb++) {
const { TABLE_NAME } = allTables[tb];
if (!tables.filter((_table) => _table.tableName === TABLE_NAME)[0]) {
const oldTableFilteredArray = tables.filter((_table) => _table.tableNameOld && _table.tableNameOld === TABLE_NAME);
if (oldTableFilteredArray && oldTableFilteredArray[0]) {
console.log("Renaming Table");
await varDatabaseDbHandler({
queryString: `RENAME TABLE \`${oldTableFilteredArray[0].tableNameOld}\` TO \`${oldTableFilteredArray[0].tableName}\``,
database: dbFullName
});
} else {
console.log(`Dropping Table from ${dbFullName}`);
await varDatabaseDbHandler({
queryString: `DROP TABLE \`${TABLE_NAME}\``,
database: dbFullName
});
const deleteTableEntry = await dbHandler({
query: `DELETE FROM user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`,
values: [userId, dbSlug, TABLE_NAME],
database: "datasquirel"
});
}
}
}
const recordedDbEntryArray = userId ? await varDatabaseDbHandler({
database: "datasquirel",
queryString: `SELECT * FROM user_databases WHERE db_full_name = ?`,
queryValuesArray: [dbFullName]
}) : undefined;
const recordedDbEntry = recordedDbEntryArray?.[0];
for (let t = 0;t < tables.length; t++) {
const table = tables[t];
const { tableName, fields, indexes } = table;
const tableCheck = await varDatabaseDbHandler({
queryString: `
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = ? AND
TABLE_NAME = ?
) AS tableExists`,
queryValuesArray: [dbFullName, table.tableName],
database: dbFullName
});
if (tableCheck && tableCheck[0]?.tableExists > 0) {
const updateExistingTable = await updateTable({
dbFullName,
tableName,
tableNameFull: table.tableFullName,
tableInfoArray: fields,
userId,
dbSchema,
tableIndexes: indexes,
tableIndex: t,
childDb: database.childDatabase || undefined,
recordedDbEntry,
tableSchema: table
});
if (table.childrenTables && table.childrenTables[0]) {
for (let ch = 0;ch < table.childrenTables.length; ch++) {
const childTable = table.childrenTables[ch];
const updateExistingChildTable = await updateTable({
dbFullName: childTable.dbNameFull,
tableName: childTable.tableName,
tableNameFull: childTable.tableNameFull,
tableInfoArray: fields,
userId,
dbSchema,
tableIndexes: indexes,
clone: true,
childDb: database.childDatabase || undefined,
recordedDbEntry,
tableSchema: table
});
}
}
} else {
const createNewTable = await createTable({
tableName,
tableInfoArray: fields,
dbFullName,
dbSchema,
tableSchema: table,
recordedDbEntry
});
if (indexes && indexes[0]) {
if (indexes && indexes[0]) {
for (let g = 0;g < indexes.length; g++) {
const {
indexType,
indexName,
indexTableFields,
alias
} = indexes[g];
if (!alias?.match(/./))
continue;
try {
const allExistingIndexes = await varDatabaseDbHandler({
queryString: `SHOW INDEXES FROM \`${tableName}\``,
database: dbFullName
});
const existingKeyInDb = allExistingIndexes.filter((indexObject) => indexObject.Key_name === alias);
if (!existingKeyInDb[0])
throw new Error("This Index Does not Exist");
} catch (error) {
await varDatabaseDbHandler({
queryString: `CREATE${indexType?.match(/fullText/i) ? " FULLTEXT" : ""} INDEX \`${alias}\` ON ${tableName}(${indexTableFields?.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
database: dbFullName
});
}
}
}
}
}
}
if (childrenDatabases?.[0]) {
for (let ch = 0;ch < childrenDatabases.length; ch++) {
const childDb = childrenDatabases[ch];
const { dbFullName: dbFullName2 } = childDb;
await createDbFromSchema({
userId,
targetDatabase: dbFullName2
});
}
}
}
}
if (execFlag) {
createDbFromSchema({});
}
// package-shared/functions/backend/addUsersTableToDb.ts
init_LOCAL_DB_HANDLER();
// package-shared/functions/backend/grabSchemaFieldsFromData.ts
init_serverError();
function grabSchemaFieldsFromData({
data,
fields,
excludeData,
excludeFields
}) {
try {
const possibleFields = require_possibleFields();
const dataTypes = require_dataTypes();
const finalFields = [];
let filteredFields = [];
if (data && Object.keys(data)?.[0]) {
filteredFields = Object.keys(data);
}
if (fields) {
filteredFields = [...filteredFields, ...fields];
filteredFields = [...new Set(filteredFields)];
}
filteredFields = filteredFields.filter((fld) => !excludeData || !Object.keys(excludeData).includes(fld)).filter((fld) => !excludeFields || !excludeFields.find((exlFld) => exlFld.fieldName == fld));
filteredFields.forEach((fld) => {
const value = data ? data[fld] : null;
if (typeof value == "string") {
const newField = {
fieldName: fld,
dataType: value.length > 255 ? "TEXT" : "VARCHAR(255)"
};
if (Boolean(value.match(/<[^>]+>/g))) {
newField.richText = true;
}
finalFields.push(newField);
} else if (typeof value == "number") {
finalFields.push({
fieldName: fld,
dataType: "INT"
});
} else {
finalFields.push({
fieldName: fld,
dataType: "VARCHAR(255)"
});
}
});
return finalFields;
} catch (error) {
console.log(`grabSchemaFieldsFromData.js ERROR: ${error.message}`);
serverError({
component: "grabSchemaFieldsFromData.js",
message: error.message
});
return [];
}
}
// package-shared/functions/backend/grabNewUsersTableSchema.ts
init_serverError();
function grabNewUsersTableSchema(params) {
try {
const userPreset = require_users();
const defaultFields = require_defaultFields();
const supplementalFields = params?.payload ? grabSchemaFieldsFromData({
data: params?.payload,
excludeData: defaultFields,
excludeFields: userPreset.fields
}) : [];
console.log("supplementalFields", supplementalFields);
const allFields = [...userPreset.fields, ...supplementalFields];
console.log("allFields", allFields);
const finalFields = [
...defaultFields.slice(0, 2),
...allFields,
...defaultFields.slice(2)
];
userPreset.fields = [...finalFields];
return userPreset;
} catch (error) {
console.log(`grabNewUsersTableSchema.js ERROR: ${error.message}`);
serverError({
component: "grabNewUsersTableSchema",
message: error.message
});
return null;
}
}
// package-shared/functions/backend/addUsersTableToDb.ts
async function addUsersTableToDb({
userId,
database,
useLocal,
payload
}) {
try {
const dbFullName = database;
const userPreset = grabNewUsersTableSchema({ payload });
if (!userPreset)
throw new Error("Couldn't Get User Preset!");
const userSchemaData = grabUserSchemaData({ userId });
if (!userSchemaData)
throw new Error("User schema data not found!");
let targetDatabase = userSchemaData.find((db) => db.dbFullName === database);
if (!targetDatabase) {
throw new Error("Couldn't Find Target Database!");
}
let existingTableIndex = targetDatabase?.tables.findIndex((table) => table.tableName === "users");
if (typeof existingTableIndex == "number" && existingTableIndex > 0) {
targetDatabase.tables[existingTableIndex] = userPreset;
} else {
targetDatabase.tables.push(userPreset);
}
setUserSchemaData({ schemaData: userSchemaData, userId });
const targetDb = useLocal ? await LOCAL_DB_HANDLER(`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, [userId, database]) : await DB_HANDLER(`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, [userId, database]);
if (targetDb?.[0]) {
const newTableEntry = await addDbEntry({
dbFullName: "datasquirel",
tableName: "user_database_tables",
data: {
user_id: userId,
db_id: targetDb[0].id,
db_slug: targetDatabase.dbSlug,
table_name: "Users",
table_slug: "users"
},
useLocal
});
}
const dbShellUpdate = await createDbFromSchema({
userId,
targetDatabase: dbFullName
});
return `Done!`;
} catch (error) {
console.log(`addUsersTableToDb.js ERROR: ${error.message}`);
serverError({
component: "addUsersTableToDb",
message: error.message,
user: { id: userId }
});
return error.message;
}
}
// package-shared/functions/backend/updateUsersTableSchema.ts
init_serverError();
async function updateUsersTableSchema({
userId,
database,
newFields,
newPayload
}) {
try {
const dbFullName = database;
const userSchemaData = grabUserSchemaData({ userId });
if (!userSchemaData)
throw new Error("User schema data not found!");
let targetDatabaseIndex = userSchemaData.findIndex((db) => db.dbFullName === database);
if (targetDatabaseIndex < 0) {
throw new Error("Couldn't Find Target Database!");
}
let existingTableIndex = userSchemaData[targetDatabaseIndex]?.tables.findIndex((table) => table.tableName === "users");
const usersTable = userSchemaData[targetDatabaseIndex].tables[existingTableIndex];
if (!usersTable?.fields?.[0])
throw new Error("Users Table Not Found!");
const additionalFields = grabSchemaFieldsFromData({
fields: newFields,
data: newPayload
});
const spliceStartIndex = usersTable.fields.findIndex((field) => field.fieldName === "date_created");
const finalSpliceStartIndex = spliceStartIndex >= 0 ? spliceStartIndex : 0;
usersTable.fields.splice(finalSpliceStartIndex, 0, ...additionalFields);
setUserSchemaData({ schemaData: userSchemaData, userId });
const dbShellUpdate = await createDbFromSchema({
userId,
targetDatabase: dbFullName
});
return `Done!`;
} catch (error) {
console.log(`addUsersTableToDb.js ERROR: ${error.message}`);
serverError({
component: "addUsersTableToDb",
message: error.message,
user: { id: userId }
});
return error.message;
}
}
// package-shared/functions/api/users/api-create-user.ts
init_varDatabaseDbHandler();
init_hashPassword();
async function apiCreateUser({
encryptionKey,
payload,
database,
userId,
useLocal
}) {
const dbFullName = database;
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
if (!finalEncryptionKey) {
return {
success: false,
msg: "No encryption key provided",
payload: null
};
}
if (!finalEncryptionKey?.match(/.{8,}/)) {
return {
success: false,
msg: "Encryption key must be at least 8 characters long",
payload: null
};
}
const hashedPassword = hashPassword({
encryptionKey: finalEncryptionKey,
password: String(payload.password)
});
payload.password = hashedPassword;
const fieldsQuery = `SHOW COLUMNS FROM users`;
let fields = await varDatabaseDbHandler2({
queryString: fieldsQuery,
database: dbFullName,
useLocal
});
if (!fields?.[0]) {
const newTable = await addUsersTableToDb({
userId: Number(API_USER_ID),
database: dbFullName,
useLocal,
payload
});
fields = await varDatabaseDbHandler2({
queryString: fieldsQuery,
database: dbFullName,
useLocal
});
}
if (!fields?.[0]) {
return {
success: false,
msg: "Could not create users table"
};
}
const fieldsTitles = fields.map((fieldObject) => fieldObject.Field);
let invalidField = null;
for (let i = 0;i < Object.keys(payload).length; i++) {
const key = Object.keys(payload)[i];
if (!fieldsTitles.includes(key)) {
await updateUsersTableSchema({
userId: Number(API_USER_ID),
database: dbFullName,
newPayload: {
[key]: payload[key]
}
});
}
}
if (invalidField) {
return {
success: false,
msg: `${invalidField} is not a valid field!`
};
}
const existingUserQuery = `SELECT * FROM users WHERE email = ?${payload.username ? " OR username = ?" : ""}`;
const existingUserValues = payload.username ? [payload.email, payload.username] : [payload.email];
const existingUser = await varDatabaseDbHandler2({
queryString: existingUserQuery,
queryValuesArray: existingUserValues,
database: dbFullName,
useLocal
});
if (existingUser?.[0]) {
return {
success: false,
msg: "User Already Exists",
payload: null
};
}
const addUser = await addDbEntry({
dbContext: "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: "users",
data: {
...payload,
image: process.env.DSQL_DEFAULT_USER_IMAGE || "/images/user-preset.png",
image_thumbnail: process.env.DSQL_DEFAULT_USER_IMAGE || "/images/user-preset-thumbnail.png"
},
useLocal
});
if (addUser?.insertId) {
const newlyAddedUserQuery = `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM users WHERE id='${addUser.insertId}'`;
const newlyAddedUser = await varDatabaseDbHandler2({
queryString: newlyAddedUserQuery,
database: dbFullName,
useLocal
});
return {
success: true,
payload: newlyAddedUser[0]
};
} else {
return {
success: false,
msg: "Could not create user",
sqlResult: addUser,
payload: null
};
}
}
// users/add-user.ts
async function addUser({
key,
payload,
database,
encryptionKey,
user_id,
useLocal,
apiUserId
}) {
const {
DSQL_DB_HOST,
DSQL_DB_USERNAME,
DSQL_DB_PASSWORD,
DSQL_DB_NAME,
DSQL_API_USER_ID
} = process.env;
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path7.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs11.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiCreateUser({
database: DSQL_DB_NAME,
encryptionKey,
payload,
userId: apiUserId,
useLocal
});
}
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
payload,
database,
encryptionKey
});
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/add-user`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
}
// users/update-user.ts
init_grab_host_names();
import path8 from "path";
import fs12 from "fs";
// package-shared/functions/api/users/api-update-user.ts
init_encrypt();
init_hashPassword();
init_varDatabaseDbHandler();
async function apiUpdateUser({
payload,
dbFullName,
updatedUserId,
useLocal,
dbSchema
}) {
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
const existingUserValues = [updatedUserId];
const existingUser = await varDatabaseDbHandler2({
queryString: existingUserQuery,
queryValuesArray: existingUserValues,
database: dbFullName,
useLocal
});
if (!existingUser?.[0]) {
return {
success: false,
msg: "User not found"
};
}
const data = (() => {
const reqBodyKeys = Object.keys(payload);
const targetTableSchema = (() => {
try {
const targetDatabaseSchema = dbSchema?.tables?.find((tbl) => tbl.tableName == "users");
return targetDatabaseSchema;
} catch (error) {
return;
}
})();
const finalData = {};
reqBodyKeys.forEach((key) => {
const targetFieldSchema = targetTableSchema?.fields?.find((field) => field.fieldName == key);
if (key?.match(/^date_|^id$|^uuid$/))
return;
let value = payload[key];
if (targetFieldSchema?.encrypted) {
value = encrypt({ data: value });
}
finalData[key] = value;
});
if (finalData.password && typeof finalData.password == "string") {
finalData.password = hashPassword({ password: finalData.password });
}
return finalData;
})();
const updateUser = await updateDbEntry({
dbContext: "Dsql User",
paradigm: "Full Access",
dbFullName,
tableName: "users",
identifierColumnName: "id",
identifierValue: updatedUserId,
data,
useLocal
});
return {
success: true,
payload: updateUser
};
}
// users/update-user.ts
async function updateUser({
key,
payload,
database,
user_id,
useLocal,
updatedUserId
}) {
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path8.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs12.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiUpdateUser({
payload,
dbFullName: DSQL_DB_NAME,
useLocal,
updatedUserId,
dbSchema
});
}
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
payload,
database,
updatedUserId
});
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY || key
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/update-user`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
}
// users/login-user.ts
init_encrypt();
init_grab_host_names();
import fs14 from "fs";
import path10 from "path";
// package-shared/functions/api/users/api-login.ts
init_varDatabaseDbHandler();
init_hashPassword();
async function apiLoginUser({
encryptionKey,
email,
username,
password,
database,
additionalFields,
email_login,
email_login_code,
email_login_field,
token,
skipPassword,
social,
useLocal
}) {
const dbFullName = database;
if (email?.match(/ /) || username && username?.match(/ /) || password && password?.match(/ /)) {
return {
success: false,
msg: "Invalid Email/Password format"
};
}
let hashedPassword = password ? hashPassword({
encryptionKey,
password
}) : null;
let foundUser = await varDatabaseDbHandler2({
queryString: `SELECT * FROM users WHERE email = ? OR username = ?`,
queryValuesArray: [email, username],
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
useLocal
});
if ((!foundUser || !foundUser[0]) && !social)
return {
success: false,
payload: null,
msg: "No user found"
};
let isPasswordCorrect = false;
if (foundUser?.[0] && !email_login && skipPassword) {
isPasswordCorrect = true;
} else if (foundUser?.[0] && !email_login) {
isPasswordCorrect = hashedPassword === foundUser[0].password;
} else if (foundUser && foundUser[0] && email_login && email_login_code && email_login_field) {
const tempCode = foundUser[0][email_login_field];
if (!tempCode)
throw new Error("No code Found!");
const tempCodeArray = tempCode.split("-");
const [code, codeDate] = tempCodeArray;
const millisecond15mins = 1000 * 60 * 15;
if (Date.now() - Number(codeDate) > millisecond15mins) {
throw new Error("Code Expired");
}
isPasswordCorrect = code === email_login_code;
}
let socialUserValid = false;
if (!isPasswordCorrect && !socialUserValid) {
return {
success: false,
msg: "Wrong password, no social login validity",
payload: null
};
}
if (isPasswordCorrect && email_login) {
const resetTempCode = await varDatabaseDbHandler2({
queryString: `UPDATE users SET ${email_login_field} = '' WHERE email = ? OR username = ?`,
queryValuesArray: [email, username],
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
useLocal
});
}
let csrfKey = Math.random().toString(36).substring(2) + "-" + Math.random().toString(36).substring(2);
let userPayload = {
id: foundUser[0].id,
first_name: foundUser[0].first_name,
last_name: foundUser[0].last_name,
username: foundUser[0].username,
email: foundUser[0].email,
phone: foundUser[0].phone,
social_id: foundUser[0].social_id,
image: foundUser[0].image,
image_thumbnail: foundUser[0].image_thumbnail,
verification_status: foundUser[0].verification_status,
social_login: foundUser[0].social_login,
social_platform: foundUser[0].social_platform,
csrf_k: csrfKey,
more_data: foundUser[0].more_user_data,
logged_in_status: true,
date: Date.now()
};
const resposeObject = {
success: true,
msg: "Login Successful",
payload: userPayload,
userId: foundUser[0].id,
csrf: csrfKey
};
if (additionalFields && Array.isArray(additionalFields) && additionalFields.length > 0) {
additionalFields.forEach((key) => {
userPayload[key] = foundUser[0][key];
});
}
return resposeObject;
}
// package-shared/functions/backend/auth/write-auth-files.ts
import fs13 from "fs";
import path9 from "path";
var grabAuthDirs = () => {
const DSQL_AUTH_DIR = process.env.DSQL_AUTH_DIR;
const ROOT_DIR = DSQL_AUTH_DIR?.match(/./) ? DSQL_AUTH_DIR : path9.resolve(process.cwd(), "./.tmp");
const AUTH_DIR = path9.join(ROOT_DIR, "logins");
return { root: ROOT_DIR, auth: AUTH_DIR };
};
var initAuthFiles = () => {
try {
const authDirs = grabAuthDirs();
if (!fs13.existsSync(authDirs.root))
fs13.mkdirSync(authDirs.root, { recursive: true });
if (!fs13.existsSync(authDirs.auth))
fs13.mkdirSync(authDirs.auth, { recursive: true });
return true;
} catch (error) {
console.log(`Error initializing Auth Files: ${error.message}`);
return false;
}
};
var writeAuthFile = (name, data) => {
initAuthFiles();
try {
fs13.writeFileSync(path9.join(grabAuthDirs().auth, name), data);
return true;
} catch (error) {
console.log(`Error writing Auth File: ${error.message}`);
return false;
}
};
var deleteAuthFile = (name) => {
try {
return fs13.rmSync(path9.join(grabAuthDirs().auth, name));
} catch (error) {
console.log(`Error deleting Auth File: ${error.message}`);
return null;
}
};
var checkAuthFile = (name) => {
try {
return fs13.existsSync(path9.join(grabAuthDirs().auth, name));
return true;
} catch (error) {
console.log(`Error checking Auth File: ${error.message}`);
return false;
}
};
// users/login-user.ts
async function loginUser({
key,
payload,
database,
additionalFields,
response,
encryptionKey,
encryptionSalt,
email_login,
email_login_code,
temp_code_field,
token,
user_id,
skipPassword,
useLocal,
apiUserID,
skipWriteAuthFile
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const defaultTempLoginFieldName = "temp_login_code";
const emailLoginTempCodeFieldName = email_login ? temp_code_field ? temp_code_field : defaultTempLoginFieldName : undefined;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
if (!finalEncryptionKey?.match(/.{8,}/)) {
console.log("Encryption key is invalid");
return {
success: false,
payload: null,
msg: "Encryption key is invalid"
};
}
if (!finalEncryptionSalt?.match(/.{8,}/)) {
console.log("Encryption salt is invalid");
return {
success: false,
payload: null,
msg: "Encryption salt is invalid"
};
}
if (!payload.email) {
return {
success: false,
payload: null,
msg: "Email Required"
};
}
let httpResponse = {
success: false
};
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path10.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs14.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
httpResponse = await apiLoginUser({
database: process.env.DSQL_DB_NAME || "",
email: payload.email,
username: payload.username,
password: payload.password,
skipPassword,
encryptionKey: finalEncryptionKey,
additionalFields,
email_login,
email_login_code,
email_login_field: emailLoginTempCodeFieldName,
token,
useLocal
});
} else {
httpResponse = await new Promise((resolve, reject) => {
const reqPayload = {
encryptionKey: finalEncryptionKey,
payload,
database,
additionalFields,
email_login,
email_login_code,
email_login_field: emailLoginTempCodeFieldName,
token,
skipPassword
};
const reqPayloadJSON = JSON.stringify(reqPayload);
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayloadJSON).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/login-user`
}, (res) => {
var str = "";
res.on("data", function(chunk) {
str += chunk;
});
res.on("end", function() {
resolve(JSON.parse(str));
});
res.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayloadJSON);
httpsRequest.end();
});
}
if (httpResponse?.success) {
let encryptedPayload = encrypt({
data: JSON.stringify(httpResponse.payload),
encryptionKey: finalEncryptionKey,
encryptionSalt: finalEncryptionSalt
});
try {
if (token && encryptedPayload)
httpResponse["token"] = encryptedPayload;
} catch (error) {
}
const cookieNames = getAuthCookieNames({
database,
userId: apiUserID || user_id || grabedHostNames.user_id
});
if (httpResponse.csrf && !skipWriteAuthFile) {
writeAuthFile(httpResponse.csrf, JSON.stringify(httpResponse.payload));
}
httpResponse["cookieNames"] = cookieNames;
httpResponse["key"] = String(encryptedPayload);
const authKeyName = cookieNames.keyCookieName;
const csrfName = cookieNames.csrfCookieName;
response?.setHeader("Set-Cookie", [
`${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`,
`${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`
]);
}
return httpResponse;
}
// users/send-email-code.ts
init_grab_host_names();
import fs15 from "fs";
import path11 from "path";
// package-shared/functions/api/users/api-send-email-code.ts
init_varDatabaseDbHandler();
var import_nodemailer = __toESM(require_nodemailer(), 1);
init_encrypt();
// package-shared/utils/serialize-cookies.ts
function serializeCookies({
cookies
}) {
let cookiesStringsArray = [];
for (let i = 0;i < cookies.length; i++) {
const cookieObject = cookies[i];
let cookieString = `${cookieObject.name}=${cookieObject.value}`;
if (cookieObject.maxAge) {
cookieString += `;Max-Age=${cookieObject.maxAge}`;
}
if (cookieObject.path) {
cookieString += `;Path=${cookieObject.path}`;
}
if (cookieObject.domain) {
cookieString += `;Domain=${cookieObject.domain}`;
}
if (cookieObject.secure) {
cookieString += ";Secure";
}
if (cookieObject.httpOnly) {
cookieString += ";HttpOnly";
}
if (cookieObject.sameSite) {
cookieString += `;SameSite=${cookieObject.sameSite}`;
}
if (cookieObject.expires) {
cookieString += `;expires=${cookieObject.expires}`;
}
if (cookieObject.priority) {
cookieString += `;priority=${cookieObject.priority}`;
}
cookiesStringsArray.push(cookieString);
}
return cookiesStringsArray;
}
// package-shared/functions/api/users/api-send-email-code.ts
async function apiSendEmailCode({
email,
database,
email_login_field,
mail_domain,
mail_port,
sender,
mail_username,
mail_password,
html,
useLocal,
response,
extraCookies
}) {
if (email?.match(/ /)) {
return {
success: false,
msg: "Invalid Email/Password format"
};
}
const createdAt = Date.now();
const foundUserQuery = `SELECT * FROM users WHERE email = ?`;
const foundUserValues = [email];
let foundUser = await varDatabaseDbHandler2({
queryString: foundUserQuery,
queryValuesArray: foundUserValues,
database,
useLocal
});
if (!foundUser || !foundUser[0]) {
return {
success: false,
msg: "No user found"
};
}
function generateCode() {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let code = "";
for (let i = 0;i < 8; i++) {
code += chars[Math.floor(Math.random() * chars.length)];
}
return code;
}
if (foundUser?.[0] && email_login_field) {
const tempCode = generateCode();
let transporter = import_nodemailer.default.createTransport({
host: mail_domain || process.env.DSQL_MAIL_HOST,
port: mail_port ? mail_port : process.env.DSQL_MAIL_PORT ? Number(process.env.DSQL_MAIL_PORT) : 465,
secure: true,
auth: {
user: mail_username || process.env.DSQL_MAIL_EMAIL,
pass: mail_password || process.env.DSQL_MAIL_PASSWORD
}
});
let mailObject = {};
mailObject["from"] = `"Datasquirel SSO" <${sender || "support@datasquirel.com"}>`;
mailObject["sender"] = sender || "support@datasquirel.com";
mailObject["to"] = email;
mailObject["subject"] = "One Time Login Code";
mailObject["html"] = html.replace(/{{code}}/, tempCode);
const info = await transporter.sendMail(mailObject);
if (!info?.accepted)
throw new Error("Mail not Sent!");
const setTempCodeQuery = `UPDATE users SET ${email_login_field} = ? WHERE email = ?`;
const setTempCodeValues = [tempCode + `-${createdAt}`, email];
let setTempCode = await varDatabaseDbHandler2({
queryString: setTempCodeQuery,
queryValuesArray: setTempCodeValues,
database,
useLocal
});
const resObject = {
success: true,
code: tempCode,
email,
createdAt,
msg: "Success"
};
if (response) {
const cookieKeyNames = getAuthCookieNames();
const oneTimeCodeCookieName = cookieKeyNames.oneTimeCodeName;
const encryptedPayload = encrypt({
data: JSON.stringify(resObject)
});
if (!encryptedPayload) {
throw new Error("apiSendEmailCode Error: Failed to encrypt payload");
}
const oneTimeCookieObject = {
name: oneTimeCodeCookieName,
value: encryptedPayload,
sameSite: "Strict",
path: "/",
httpOnly: true,
secure: true
};
const cookiesObjectArray = extraCookies ? [...extraCookies, oneTimeCookieObject] : [oneTimeCookieObject];
const serializedCookies = serializeCookies({
cookies: cookiesObjectArray
});
response.setHeader("Set-Cookie", serializedCookies);
}
return resObject;
} else {
return {
success: false,
msg: "Invalid Email/Password format"
};
}
}
// users/send-email-code.ts
var __dirname = "/home/benoti/Projects/Git/moduletrace/datasquirel/datasquirel/users";
async function sendEmailCode({
key,
email,
database,
temp_code_field_name,
mail_domain,
mail_password,
mail_username,
mail_port,
sender,
user_id,
useLocal,
response,
extraCookies
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const defaultTempLoginFieldName = "temp_login_code";
const emailLoginTempCodeFieldName = temp_code_field_name ? temp_code_field_name : defaultTempLoginFieldName;
const emailHtml = fs15.readFileSync(path11.resolve(__dirname, "../package-shared/html/one-time-code.html"), "utf-8");
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path11.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs15.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiSendEmailCode({
database: DSQL_DB_NAME,
email,
email_login_field: emailLoginTempCodeFieldName,
html: emailHtml,
mail_domain,
mail_password,
mail_port,
mail_username,
sender,
useLocal,
response,
extraCookies
});
} else {
const httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
email,
database,
email_login_field: emailLoginTempCodeFieldName,
mail_domain,
mail_password,
mail_username,
mail_port,
sender,
html: emailHtml
});
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/send-email-code`
}, (res) => {
var str = "";
res.on("data", function(chunk) {
str += chunk;
});
res.on("end", function() {
resolve(JSON.parse(str));
});
res.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
}
}
// users/logout-user.ts
init_decrypt();
init_ejson();
function logoutUser({
response,
database,
dsqlUserId,
encryptedUserString,
request,
cookieString
}) {
try {
const cookieNames = getAuthCookieNames({
database,
userId: dsqlUserId || process.env.DSQL_API_USER_ID
});
const authKeyName = cookieNames.keyCookieName;
const csrfName = cookieNames.csrfCookieName;
const oneTimeCodeName = getAuthCookieNames().oneTimeCodeName;
const decryptedUserJSON = (() => {
try {
if (request) {
const cookiesObject = parseCookies({
request,
cookieString
});
return decrypt({
encryptedString: cookiesObject[authKeyName]
});
} else if (encryptedUserString) {
return decrypt({
encryptedString: encryptedUserString
});
} else {
return;
}
} catch (error) {
console.log("Error getting decrypted User JSON to logout:", error.message);
return;
}
})();
if (!decryptedUserJSON)
throw new Error("Invalid User");
const userObject = ejson_default.parse(decryptedUserJSON);
if (!userObject?.csrf_k)
throw new Error("Invalid User. Please check key");
response?.setHeader("Set-Cookie", [
`${authKeyName}=null;max-age=0`,
`${csrfName}=null;max-age=0`,
`${oneTimeCodeName}=null;max-age=0`
]);
const csrf = userObject.csrf_k;
deleteAuthFile(csrf);
return {
success: true,
msg: "User Logged Out",
cookieNames
};
} catch (error) {
console.log("Logout Error:", error.message);
return {
success: false,
msg: "Logout Failed"
};
}
}
module_logout_user.exports = logoutUser;
// users/user-auth.ts
init_decrypt();
var minuteInMilliseconds = 60000;
var hourInMilliseconds = minuteInMilliseconds * 60;
var dayInMilliseconds = hourInMilliseconds * 24;
var weekInMilliseconds = dayInMilliseconds * 7;
var monthInMilliseconds = dayInMilliseconds * 30;
var yearInMilliseconds = dayInMilliseconds * 365;
function userAuth({
request,
req,
encryptionKey,
encryptionSalt,
level,
database,
dsqlUserId,
encryptedUserString,
expiry = weekInMilliseconds,
cookieString,
csrfHeaderIsValue,
csrfHeaderName
}) {
try {
const finalRequest = req || request;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
const cookies = parseCookies({
request: finalRequest,
cookieString
});
const keyNames = getAuthCookieNames({
userId: dsqlUserId || process.env.DSQL_API_USER_ID,
database: database || process.env.DSQL_DB_NAME
});
const authKeyName = keyNames.keyCookieName;
const csrfName = keyNames.csrfCookieName;
const key = encryptedUserString ? encryptedUserString : cookies[authKeyName];
const csrf = cookies[csrfName];
let userPayloadJSON = decrypt({
encryptedString: key,
encryptionKey: finalEncryptionKey,
encryptionSalt: finalEncryptionSalt
});
if (!userPayloadJSON) {
return {
success: false,
payload: null,
msg: "Couldn't Decrypt cookie"
};
}
let userObject = JSON.parse(userPayloadJSON);
if (!userObject.csrf_k) {
return {
success: false,
payload: null,
msg: "No CSRF_K in decrypted payload"
};
}
if (!checkAuthFile(userObject.csrf_k)) {
return {
success: false,
payload: null,
msg: "Auth file doesn't exist"
};
}
if (level?.match(/deep/i) && finalRequest) {
if (csrfHeaderName && finalRequest.headers[csrfHeaderName] !== userObject.csrf_k) {
return {
success: false,
payload: null,
msg: "CSRF_K mismatch"
};
}
const targetCsrfHeaderKey = Object.keys(finalRequest.headers).map((k) => k.replace(/[^a-zA-Z0-9\-]/g, "")).find((k) => k == userObject.csrf_k);
if (csrfHeaderIsValue && !targetCsrfHeaderKey) {
return {
success: false,
payload: null,
msg: "CSRF_K Header Key mismatch"
};
}
}
const payloadCreationDate = Number(userObject.date);
if (Number.isNaN(payloadCreationDate) || typeof payloadCreationDate !== "number") {
return {
success: false,
payload: null,
msg: "Payload Creation Date is not a number"
};
}
const timeElapsed = Date.now() - payloadCreationDate;
const finalExpiry = process.env.DSQL_SESSION_EXPIRY_TIME ? Number(process.env.DSQL_SESSION_EXPIRY_TIME) : expiry;
if (timeElapsed > finalExpiry) {
return {
success: false,
payload: null,
msg: "Session has expired"
};
}
return {
success: true,
payload: userObject
};
} catch (error) {
return {
success: false,
payload: null,
msg: error.message
};
}
}
// users/reauth-user.ts
init_encrypt();
import fs16 from "fs";
import path12 from "path";
init_grab_host_names();
// package-shared/functions/api/users/api-reauth-user.ts
init_varDatabaseDbHandler();
async function apiReauthUser({
existingUser,
database,
additionalFields,
useLocal
}) {
let foundUser = existingUser?.id && existingUser.id.toString().match(/./) ? await varDatabaseDbHandler2({
queryString: `SELECT * FROM users WHERE id=?`,
queryValuesArray: [existingUser.id.toString()],
database,
useLocal
}) : null;
if (!foundUser || !foundUser[0])
return {
success: false,
payload: null,
msg: "No user found"
};
let csrfKey = Math.random().toString(36).substring(2) + "-" + Math.random().toString(36).substring(2);
let userPayload = {
id: foundUser[0].id,
first_name: foundUser[0].first_name,
last_name: foundUser[0].last_name,
username: foundUser[0].username,
email: foundUser[0].email,
phone: foundUser[0].phone,
social_id: foundUser[0].social_id,
image: foundUser[0].image,
image_thumbnail: foundUser[0].image_thumbnail,
verification_status: foundUser[0].verification_status,
social_login: foundUser[0].social_login,
social_platform: foundUser[0].social_platform,
csrf_k: csrfKey,
more_data: foundUser[0].more_user_data,
logged_in_status: true,
date: Date.now()
};
if (additionalFields && Array.isArray(additionalFields) && additionalFields.length > 0) {
additionalFields.forEach((key) => {
userPayload[key] = foundUser[0][key];
});
}
return {
success: true,
msg: "Login Successful",
payload: userPayload,
csrf: csrfKey
};
}
// users/reauth-user.ts
async function reauthUser({
key,
database,
response,
request,
level,
encryptionKey,
encryptionSalt,
additionalFields,
encryptedUserString,
user_id,
useLocal
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
const existingUser = userAuth({
database,
encryptionKey: finalEncryptionKey,
encryptionSalt: finalEncryptionSalt,
level,
request,
encryptedUserString
});
if (!existingUser?.payload?.id) {
return {
success: false,
payload: null,
msg: "Cookie Credentials Invalid"
};
}
let httpResponse;
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path12.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs16.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
httpResponse = await apiReauthUser({
existingUser: existingUser.payload,
additionalFields,
useLocal
});
} else {
httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
existingUser: existingUser.payload,
database,
additionalFields
});
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/reauth-user`
}, (response2) => {
var str = "";
response2.on("data", function(chunk) {
str += chunk;
});
response2.on("end", function() {
resolve(JSON.parse(str));
});
response2.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
}
if (httpResponse?.success) {
let encryptedPayload = encrypt({
data: JSON.stringify(httpResponse.payload),
encryptionKey: finalEncryptionKey,
encryptionSalt: finalEncryptionSalt
});
const cookieNames = getAuthCookieNames({
database,
userId: user_id || grabedHostNames.user_id
});
httpResponse["cookieNames"] = cookieNames;
httpResponse["key"] = String(encryptedPayload);
const authKeyName = cookieNames.keyCookieName;
const csrfName = cookieNames.csrfCookieName;
response?.setHeader("Set-Cookie", [
`${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`,
`${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`
]);
if (httpResponse.csrf) {
deleteAuthFile(String(existingUser.payload.csrf_k));
writeAuthFile(httpResponse.csrf, JSON.stringify(httpResponse.payload));
}
}
return httpResponse;
}
// users/get-user.ts
init_grab_host_names();
import path13 from "path";
import fs17 from "fs";
// package-shared/functions/api/users/api-get-user.ts
init_varDatabaseDbHandler();
async function apiGetUser({
fields,
dbFullName,
userId,
useLocal
}) {
const query = `SELECT ${fields.join(",")} FROM users WHERE id=?`;
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
let foundUser = await varDatabaseDbHandler2({
queryString: query,
queryValuesArray: [API_USER_ID],
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
useLocal
});
if (!foundUser || !foundUser[0]) {
return {
success: false,
payload: null
};
}
return {
success: true,
payload: foundUser[0]
};
}
// users/get-user.ts
async function getUser({
key,
userId,
database,
fields,
apiUserId,
useLocal
}) {
const defaultFields = [
"id",
"first_name",
"last_name",
"email",
"username",
"image",
"image_thumbnail",
"verification_status",
"date_created",
"date_created_code",
"date_created_timestamp",
"date_updated",
"date_updated_code",
"date_updated_timestamp"
];
const updatedFields = fields && fields[0] ? [...defaultFields, ...fields] : defaultFields;
const reqPayload = JSON.stringify({
userId,
database,
fields: [...new Set(updatedFields)]
});
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
let dbSchema;
try {
const localDbSchemaPath = path13.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs17.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
return await apiGetUser({
userId,
fields: [...new Set(updatedFields)],
dbFullName: DSQL_DB_NAME,
useLocal
});
}
const httpResponse = await new Promise((resolve, reject) => {
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${apiUserId || grabedHostNames.user_id}/get-user`
}, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
resolve(JSON.parse(str));
});
response.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
return httpResponse;
}
// users/social/google-auth.ts
init_encrypt();
init_grab_host_names();
// package-shared/functions/api/users/social/api-google-login.ts
import https2 from "https";
// package-shared/functions/api/social-login/handleSocialDb.ts
import fs19 from "fs";
// package-shared/functions/backend/handleNodemailer.ts
var import_nodemailer2 = __toESM(require_nodemailer(), 1);
import fs18 from "fs";
var transporter = import_nodemailer2.default.createTransport({
host: process.env.DSQL_MAIL_HOST,
port: 465,
secure: true,
auth: {
user: process.env.DSQL_MAIL_EMAIL,
pass: process.env.DSQL_MAIL_PASSWORD
}
});
async function handleNodemailer({
to,
subject,
text,
html,
alias,
senderName
}) {
if (!process.env.DSQL_MAIL_HOST || !process.env.DSQL_MAIL_EMAIL || !process.env.DSQL_MAIL_PASSWORD) {
return null;
}
const sender = (() => {
if (alias?.match(/support/i))
return process.env.DSQL_MAIL_EMAIL;
return process.env.DSQL_MAIL_EMAIL;
})();
let sentMessage;
if (!fs18.existsSync("./email/index.html")) {
return;
}
let mailRoot = fs18.readFileSync("./email/index.html", "utf8");
let finalHtml = mailRoot.replace(/{{email_body}}/, html ? html : "").replace(/{{issue_date}}/, Date().substring(0, 24));
try {
let mailObject = {};
mailObject["from"] = `"${senderName || "Datasquirel"}" <${sender}>`;
mailObject["sender"] = sender;
if (alias)
mailObject["replyTo"] = sender;
mailObject["to"] = to;
mailObject["subject"] = subject;
mailObject["text"] = text;
mailObject["html"] = finalHtml;
let info = await transporter.sendMail(mailObject);
sentMessage = info;
} catch (error) {
console.log("ERROR in handleNodemailer Function =>", error.message);
}
return sentMessage;
}
// package-shared/functions/api/social-login/handleSocialDb.ts
import path14 from "path";
// package-shared/functions/backend/addMariadbUser.ts
var import_generate_password = __toESM(require_generate(), 1);
init_DB_HANDLER();
// package-shared/utils/backend/global-db/NO_DB_HANDLER.ts
var import_serverless_mysql5 = __toESM(require_serverless_mysql(), 1);
init_grabDbSSL();
var NO_DB = import_serverless_mysql5.default({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
charset: "utf8mb4",
ssl: grabDbSSL()
}
});
function NO_DB_HANDLER(...args) {
try {
return new Promise((resolve, reject) => {
NO_DB.query(...args).then((results) => {
NO_DB.end();
resolve(JSON.parse(JSON.stringify(results)));
}).catch((err) => {
NO_DB.end();
resolve({
error: err.message,
sql: err.sql
});
});
});
} catch (error) {
return {
success: false,
error: error.message
};
}
}
// package-shared/functions/backend/addMariadbUser.ts
init_encrypt();
init_LOCAL_DB_HANDLER();
async function addMariadbUser({
userId,
useLocal
}) {
try {
const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
const username = `dsql_user_${userId}`;
const password = import_generate_password.default.generate({
length: 16,
numbers: true,
symbols: true,
uppercase: true,
exclude: "*#.'`\""
});
const encryptedPassword = encrypt({ data: password });
const createMariadbUsersQuery = `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'`;
if (useLocal) {
await LOCAL_DB_HANDLER(createMariadbUsersQuery);
} else {
await NO_DB_HANDLER(createMariadbUsersQuery);
}
const updateUserQuery = `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`;
const updateUserValues = [username, encryptedPassword, userId];
const updateUser2 = useLocal ? await LOCAL_DB_HANDLER(updateUserQuery, updateUserValues) : await DB_HANDLER(updateUserQuery, updateUserValues);
const addMariadbUser2 = await addDbEntry({
tableName: "mariadb_users",
data: {
user_id: userId,
username,
host: defaultMariadbUserHost,
password: encryptedPassword,
primary: "1",
grants: '[{"database":"*","table":"*","privileges":["ALL"]}]'
},
dbContext: "Master",
useLocal
});
console.log(`User ${userId} SQL credentials successfully added.`);
} catch (error) {
console.log(`Error in adding SQL user in 'addMariadbUser' function =>`, error.message);
}
}
// package-shared/functions/api/social-login/handleSocialDb.ts
init_varDatabaseDbHandler();
init_encrypt();
// package-shared/functions/backend/addAdminUserOnLogin.ts
init_serverError();
init_DB_HANDLER();
init_LOCAL_DB_HANDLER();
async function addAdminUserOnLogin({
query,
user,
useLocal
}) {
try {
const finalDbHandler = useLocal ? LOCAL_DB_HANDLER : DB_HANDLER;
const { invite, database_access, priviledge, email } = query;
const lastInviteTimeQuery = `SELECT date_created_code FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`;
const lastInviteTimeValues = [invite, email];
const lastInviteTimeArray = await finalDbHandler(lastInviteTimeQuery, lastInviteTimeValues);
if (!lastInviteTimeArray || !lastInviteTimeArray[0]) {
throw new Error("No Invitation Found");
}
const invitingUserDbQuery = `SELECT first_name,last_name,email FROM users WHERE id=?`;
const invitingUserDbValues = [invite];
const invitingUserDb = await finalDbHandler(invitingUserDbQuery, invitingUserDbValues);
if (invitingUserDb?.[0]) {
const existingUserUser = await finalDbHandler(`SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, [invite, user.id, email]);
if (existingUserUser?.[0]) {
console.log("User already added");
} else {
addDbEntry({
dbFullName: "datasquirel",
tableName: "user_users",
data: {
user_id: invite,
invited_user_id: user.id,
database_access,
first_name: user.first_name,
last_name: user.last_name,
phone: user.phone,
email: user.email,
username: user.username,
user_type: "admin",
user_priviledge: priviledge,
image: user.image,
image_thumbnail: user.image_thumbnail
},
useLocal
});
const dbTableData = await finalDbHandler(`SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]);
const clearEntries = await finalDbHandler(`DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, [invite, user.id]);
if (dbTableData && dbTableData[0]) {
const dbTableEntries = dbTableData[0].db_tables_data.split("|");
for (let i = 0;i < dbTableEntries.length; i++) {
const dbTableEntry = dbTableEntries[i];
const dbTableEntryArray = dbTableEntry.split("-");
const [db_slug, table_slug] = dbTableEntryArray;
const newEntry = await addDbEntry({
dbFullName: "datasquirel",
tableName: "delegated_user_tables",
data: {
delegated_user_id: user.id,
root_user_id: invite,
database: db_slug,
table: table_slug,
priviledge
},
useLocal
});
}
}
}
const inviteAccepted = await finalDbHandler(`UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]);
}
} catch (error) {
serverError({
component: "addAdminUserOnLogin",
message: error.message,
user
});
}
}
// package-shared/functions/api/social-login/loginSocialUser.ts
init_varDatabaseDbHandler();
async function loginSocialUser({
user,
social_platform,
invitation,
database,
additionalFields,
useLocal
}) {
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_id=? AND social_platform=?`;
const foundUserValues = [user.email, user.social_id, social_platform];
const foundUser = await varDatabaseDbHandler2({
database: database ? database : "datasquirel",
queryString: foundUserQuery,
queryValuesArray: foundUserValues,
useLocal
});
if (!foundUser?.[0])
return {
success: false,
payload: null
};
let csrfKey = Math.random().toString(36).substring(2) + "-" + Math.random().toString(36).substring(2);
let userPayload = {
id: foundUser[0].id,
first_name: foundUser[0].first_name,
last_name: foundUser[0].last_name,
username: foundUser[0].username,
user_type: foundUser[0].user_type,
email: foundUser[0].email,
social_id: foundUser[0].social_id,
image: foundUser[0].image,
image_thumbnail: foundUser[0].image_thumbnail,
verification_status: foundUser[0].verification_status,
social_login: foundUser[0].social_login,
social_platform: foundUser[0].social_platform,
csrf_k: csrfKey,
logged_in_status: true,
date: Date.now()
};
if (additionalFields?.[0]) {
additionalFields.forEach((key) => {
userPayload[key] = foundUser[0][key];
});
}
if (invitation && (!database || database?.match(/^datasquirel$/))) {
addAdminUserOnLogin({
query: invitation,
user: userPayload,
useLocal
});
}
let result = {
success: true,
payload: userPayload,
csrf: csrfKey
};
return result;
}
// package-shared/functions/api/social-login/handleSocialDb.ts
async function handleSocialDb({
database,
social_id,
email,
social_platform,
payload,
invitation,
supEmail,
additionalFields,
useLocal
}) {
try {
const existingSocialIdUserQuery = `SELECT * FROM users WHERE social_id = ? AND social_login='1' AND social_platform = ? `;
const existingSocialIdUserValues = [
social_id.toString(),
social_platform
];
let existingSocialIdUser = await varDatabaseDbHandler2({
database: database ? database : "datasquirel",
queryString: existingSocialIdUserQuery,
queryValuesArray: existingSocialIdUserValues,
useLocal
});
if (existingSocialIdUser && existingSocialIdUser[0]) {
return await loginSocialUser({
user: existingSocialIdUser[0],
social_platform,
invitation,
database,
additionalFields,
useLocal
});
}
const finalEmail = email ? email : supEmail ? supEmail : null;
if (!finalEmail) {
return {
success: false,
payload: null,
msg: "No Email Present"
};
}
const existingEmailOnlyQuery = `SELECT * FROM users WHERE email='${finalEmail}'`;
let existingEmailOnly = await varDatabaseDbHandler2({
database: database ? database : "datasquirel",
queryString: existingEmailOnlyQuery,
useLocal
});
if (existingEmailOnly && existingEmailOnly[0]) {
return {
success: false,
payload: null,
msg: "This Email is already taken"
};
}
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_login='1' AND social_platform=? AND social_id=?`;
const foundUserQueryValues = [finalEmail, social_platform, social_id];
const foundUser = await varDatabaseDbHandler2({
database: database ? database : "datasquirel",
queryString: foundUserQuery,
queryValuesArray: foundUserQueryValues,
useLocal
});
if (foundUser && foundUser[0]) {
return await loginSocialUser({
user: payload,
social_platform,
invitation,
database,
additionalFields,
useLocal
});
}
const socialHashedPassword = encrypt({
data: social_id.toString()
});
const data = {
social_login: "1",
verification_status: supEmail ? "0" : "1",
password: socialHashedPassword
};
Object.keys(payload).forEach((key) => {
data[key] = payload[key];
});
const newUser = await addDbEntry({
dbContext: database ? "Dsql User" : undefined,
paradigm: database ? "Full Access" : undefined,
dbFullName: database ? database : "datasquirel",
tableName: "users",
duplicateColumnName: "email",
duplicateColumnValue: finalEmail,
data: {
...data,
email: finalEmail
},
useLocal
});
if (newUser?.insertId) {
if (!database) {
await addMariadbUser({ userId: newUser.insertId, useLocal });
}
const newUserQueriedQuery = `SELECT * FROM users WHERE id='${newUser.insertId}'`;
const newUserQueried = await varDatabaseDbHandler2({
database: database ? database : "datasquirel",
queryString: newUserQueriedQuery,
useLocal
});
if (!newUserQueried || !newUserQueried[0])
return {
success: false,
payload: null,
msg: "User Insertion Failed!"
};
if (supEmail && database?.match(/^datasquirel$/)) {
let generatedToken = encrypt({
data: JSON.stringify({
id: newUser.insertId,
email: supEmail,
dateCode: Date.now()
})
});
handleNodemailer({
to: supEmail,
subject: "Verify Email Address",
text: "Please click the link to verify your email address",
html: fs19.readFileSync("./email/send-email-verification-link.html", "utf8").replace(/{{host}}/, process.env.DSQL_HOST || "").replace(/{{token}}/, generatedToken || "")
}).then(() => {
});
}
const STATIC_ROOT = process.env.DSQL_STATIC_SERVER_DIR;
if (!STATIC_ROOT) {
console.log("Static File ENV not Found!");
return {
success: false,
payload: null,
msg: "Static File ENV not Found!"
};
}
if (!database || database?.match(/^datasquirel$/)) {
let newUserSchemaFolderPath = `${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${newUser.insertId}`;
let newUserMediaFolderPath = path14.join(STATIC_ROOT, `images/user-images/user-${newUser.insertId}`);
fs19.mkdirSync(newUserSchemaFolderPath);
fs19.mkdirSync(newUserMediaFolderPath);
fs19.writeFileSync(`${newUserSchemaFolderPath}/main.json`, JSON.stringify([]), "utf8");
}
return await loginSocialUser({
user: newUserQueried[0],
social_platform,
invitation,
database,
additionalFields,
useLocal
});
} else {
console.log("Social User Failed to insert in 'handleSocialDb.js' backend function =>", newUser);
return {
success: false,
payload: null,
msg: "Social User Failed to insert in 'handleSocialDb.js' backend function"
};
}
} catch (error) {
console.log("ERROR in 'handleSocialDb.js' backend function =>", error.message);
return {
success: false,
payload: null,
msg: error.message
};
}
}
// package-shared/functions/api/users/social/api-google-login.ts
init_ejson();
async function apiGoogleLogin({
token,
database,
additionalFields,
additionalData
}) {
try {
const gUser = await new Promise((resolve, reject) => {
https2.request({
method: "GET",
hostname: "www.googleapis.com",
path: "/oauth2/v3/userinfo",
headers: {
Authorization: `Bearer ${token}`
}
}, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
resolve(ejson_default.parse(data));
});
}).end();
});
if (!gUser?.email_verified)
throw new Error("No Google User.");
if (!database || typeof database != "string" || database?.match(/ /)) {
return {
success: false,
payload: undefined,
msg: "Please provide a database slug(database name in lowercase with no spaces)"
};
}
const { given_name, family_name, email, sub, picture } = gUser;
let payloadObject = {
email,
first_name: given_name,
last_name: family_name,
social_id: sub,
social_platform: "google",
image: picture,
image_thumbnail: picture,
username: `google-user-${sub}`
};
if (additionalData) {
payloadObject = { ...payloadObject, ...additionalData };
}
const loggedInGoogleUser = await handleSocialDb({
database,
email: email || "",
payload: payloadObject,
social_platform: "google",
social_id: sub,
additionalFields
});
return { ...loggedInGoogleUser };
} catch (error) {
console.log(`apo-google-login.js ERROR: ${error.message}`);
return {
success: false,
payload: undefined,
msg: error.message
};
}
}
// users/social/google-auth.ts
async function googleAuth({
key,
token,
database,
response,
encryptionKey,
encryptionSalt,
additionalFields,
additionalData,
apiUserID,
useLocal
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT;
if (!finalEncryptionKey?.match(/.{8,}/)) {
console.log("Encryption key is invalid");
return {
success: false,
payload: null,
msg: "Encryption key is invalid"
};
}
if (!finalEncryptionSalt?.match(/.{8,}/)) {
console.log("Encryption salt is invalid");
return {
success: false,
payload: null,
msg: "Encryption salt is invalid"
};
}
if (!token || token?.match(/ /)) {
return {
success: false,
payload: null,
msg: "Please enter Google Access Token"
};
}
let httpResponse = {
success: false
};
const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./) && useLocal) {
httpResponse = await apiGoogleLogin({
token,
additionalFields,
database: DSQL_DB_NAME,
additionalData
});
} else {
httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
token,
database,
additionalFields,
additionalData
});
const httpsRequest = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${apiUserID || grabedHostNames.user_id}/google-login`
}, (response2) => {
var str = "";
response2.on("data", function(chunk) {
str += chunk;
});
response2.on("end", function() {
resolve(JSON.parse(str));
});
response2.on("error", (err) => {
reject(err);
});
});
httpsRequest.write(reqPayload);
httpsRequest.end();
});
}
if (httpResponse?.success && httpResponse?.payload) {
let encryptedPayload = encrypt({
data: JSON.stringify(httpResponse.payload),
encryptionKey: finalEncryptionKey,
encryptionSalt: finalEncryptionSalt
});
const cookieNames = getAuthCookieNames({
database,
userId: apiUserID || process.env.DSQL_API_USER_ID
});
if (httpResponse.csrf) {
writeAuthFile(httpResponse.csrf, JSON.stringify(httpResponse.payload));
}
httpResponse["cookieNames"] = cookieNames;
httpResponse["key"] = String(encryptedPayload);
const authKeyName = cookieNames.keyCookieName;
const csrfName = cookieNames.csrfCookieName;
response?.setHeader("Set-Cookie", [
`${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`,
`${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`
]);
}
return httpResponse;
}
// users/social/github-auth.ts
init_encrypt();
init_grab_host_names();
import fs20 from "fs";
import path15 from "path";
// package-shared/functions/api/social-login/githubLogin.ts
init_DB_HANDLER();
// package-shared/functions/backend/httpsRequest.ts
import https3 from "https";
import http2 from "http";
import { URL as URL2 } from "url";
function httpsRequest({
url,
method,
hostname,
path: path15,
headers,
body,
port,
scheme
}) {
const reqPayloadString = body ? JSON.stringify(body) : null;
const PARSED_URL = url ? new URL2(url) : null;
let requestOptions = {
method: method || "GET",
hostname: PARSED_URL ? PARSED_URL.hostname : hostname,
port: scheme?.match(/https/i) ? 443 : PARSED_URL ? PARSED_URL.protocol?.match(/https/i) ? 443 : PARSED_URL.port : port ? Number(port) : 80,
headers: {}
};
if (path15)
requestOptions.path = path15;
if (headers)
requestOptions.headers = headers;
if (body) {
requestOptions.headers["Content-Type"] = "application/json";
requestOptions.headers["Content-Length"] = reqPayloadString ? Buffer.from(reqPayloadString).length : undefined;
}
return new Promise((res, rej) => {
const httpsRequest2 = ((scheme?.match(/https/i)) ? https3 : (PARSED_URL?.protocol?.match(/https/i)) ? https3 : http2).request(requestOptions, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
res(str);
});
response.on("error", (error) => {
console.log("HTTP response error =>", error.message);
rej(`HTTP response error =>, ${error.message}`);
});
response.on("close", () => {
console.log("HTTP(S) Response Closed Successfully");
});
});
if (body)
httpsRequest2.write(reqPayloadString);
httpsRequest2.on("error", (error) => {
console.log("HTTPS request ERROR =>", error.message);
rej(`HTTP request error =>, ${error.message}`);
});
httpsRequest2.end();
});
}
// package-shared/functions/api/social-login/githubLogin.ts
async function githubLogin({
code,
clientId,
clientSecret
}) {
let gitHubUser;
try {
const response = await httpsRequest({
method: "POST",
hostname: "github.com",
path: `/login/oauth/access_token?client_id=${clientId}&client_secret=${clientSecret}&code=${code}`,
headers: {
Accept: "application/json",
"User-Agent": "*"
},
scheme: "https"
});
const accessTokenObject = JSON.parse(response);
if (!accessTokenObject?.access_token) {
return gitHubUser;
}
const userDataResponse = await httpsRequest({
method: "GET",
hostname: "api.github.com",
path: "/user",
headers: {
Authorization: `Bearer ${accessTokenObject.access_token}`,
"User-Agent": "*"
},
scheme: "https"
});
gitHubUser = JSON.parse(userDataResponse);
if (!gitHubUser?.email && gitHubUser) {
const existingGithubUser = await DB_HANDLER(`SELECT email FROM users WHERE social_login='1' AND social_platform='github' AND social_id='${gitHubUser.id}'`);
if (existingGithubUser && existingGithubUser[0]) {
gitHubUser.email = existingGithubUser[0].email;
}
}
} catch (error) {
console.log("ERROR in githubLogin.js backend function =>", error.message);
}
return gitHubUser;
}
// package-shared/utils/camelJoinedtoCamelSpace.ts
function camelJoinedtoCamelSpace(text) {
if (!text?.match(/./)) {
return "";
}
if (text?.match(/ /)) {
return text;
}
if (text) {
let textArray = text.split("");
let capIndexes = [];
for (let i = 0;i < textArray.length; i++) {
const char = textArray[i];
if (i === 0)
continue;
if (char.match(/[A-Z]/)) {
capIndexes.push(i);
}
}
let textChunks = [
`${textArray[0].toUpperCase()}${text.substring(1, capIndexes[0])}`
];
for (let j = 0;j < capIndexes.length; j++) {
const capIndex = capIndexes[j];
if (capIndex === 0)
continue;
const startIndex = capIndex + 1;
const endIndex = capIndexes[j + 1];
textChunks.push(`${textArray[capIndex].toUpperCase()}${text.substring(startIndex, endIndex)}`);
}
return textChunks.join(" ");
} else {
return null;
}
}
// package-shared/functions/api/users/social/api-github-login.ts
async function apiGithubLogin({
code,
clientId,
clientSecret,
database,
additionalFields,
email,
additionalData
}) {
if (!code || !clientId || !clientSecret || !database) {
return {
success: false,
msg: "Missing query params"
};
}
if (typeof code !== "string" || typeof clientId !== "string" || typeof clientSecret !== "string" || typeof database !== "string") {
return {
success: false,
msg: "Wrong Parameters"
};
}
const gitHubUser = await githubLogin({
code,
clientId,
clientSecret
});
if (!gitHubUser) {
return {
success: false,
msg: "No github user returned"
};
}
const socialId = gitHubUser.name || gitHubUser.id || gitHubUser.login;
const targetName = gitHubUser.name || gitHubUser.login;
const nameArray = targetName?.match(/ /) ? targetName?.split(" ") : targetName?.match(/\-/) ? targetName?.split("-") : [targetName];
let payload = {
email: gitHubUser.email,
first_name: camelJoinedtoCamelSpace(nameArray[0]),
last_name: camelJoinedtoCamelSpace(nameArray[1]),
social_id: socialId,
social_platform: "github",
image: gitHubUser.avatar_url,
image_thumbnail: gitHubUser.avatar_url,
username: "github-user-" + socialId
};
if (additionalData) {
payload = { ...payload, ...additionalData };
}
const loggedInGithubUser = await handleSocialDb({
database,
email: gitHubUser.email,
payload,
social_platform: "github",
social_id: socialId,
supEmail: email,
additionalFields
});
return { ...loggedInGithubUser };
}
// users/social/github-auth.ts
async function githubAuth({
key,
code,
email,
database,
clientId,
clientSecret,
response,
encryptionKey,
encryptionSalt,
additionalFields,
user_id,
additionalData
}) {
const grabedHostNames = grabHostNames();
const { host, port, scheme } = grabedHostNames;
if (!code || code?.match(/ /)) {
return {
success: false,
user: null,
msg: "Please enter Github Access Token"
};
}
if (!database || database?.match(/ /)) {
return {
success: false,
user: null,
msg: "Please provide database slug name you want to access"
};
}
if (!clientId || clientId?.match(/ /)) {
return {
success: false,
user: null,
msg: "Please enter Github OAUTH client ID"
};
}
let httpResponse;
const {
DSQL_DB_HOST,
DSQL_DB_USERNAME,
DSQL_DB_PASSWORD,
DSQL_DB_NAME,
DSQL_KEY,
DSQL_REF_DB_NAME,
DSQL_FULL_SYNC
} = process.env;
if (DSQL_DB_HOST?.match(/./) && DSQL_DB_USERNAME?.match(/./) && DSQL_DB_PASSWORD?.match(/./) && DSQL_DB_NAME?.match(/./)) {
let dbSchema;
try {
const localDbSchemaPath = path15.resolve(process.cwd(), "dsql.schema.json");
dbSchema = JSON.parse(fs20.readFileSync(localDbSchemaPath, "utf8"));
} catch (error) {
}
httpResponse = await apiGithubLogin({
code,
email: email || undefined,
clientId,
clientSecret,
additionalFields,
database: DSQL_DB_NAME,
additionalData
});
} else {
httpResponse = await new Promise((resolve, reject) => {
const reqPayload = JSON.stringify({
code,
email,
clientId,
clientSecret,
database,
additionalFields,
additionalData
});
const httpsRequest2 = scheme.request({
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.from(reqPayload).length,
Authorization: key || process.env.DSQL_FULL_ACCESS_API_KEY || process.env.DSQL_API_KEY
},
port,
hostname: host,
path: `/api/user/${user_id || grabedHostNames.user_id}/github-login`
}, (response2) => {
var str = "";
response2.on("data", function(chunk) {
str += chunk;
});
response2.on("end", function() {
try {
resolve(JSON.parse(str));
} catch (error) {
console.log(error);
resolve({
success: false,
user: null,
msg: "Something went wrong"
});
}
});
response2.on("error", (err) => {
reject(err);
});
});
httpsRequest2.write(reqPayload);
httpsRequest2.end();
});
}
if (httpResponse?.success && httpResponse?.user) {
let encryptedPayload = encrypt({
data: JSON.stringify(httpResponse.user),
encryptionKey,
encryptionSalt
});
const { user, dsqlUserId } = httpResponse;
const authKeyName = `datasquirel_${dsqlUserId}_${database}_auth_key`;
const csrfName = `datasquirel_${dsqlUserId}_${database}_csrf`;
response.setHeader("Set-Cookie", [
`${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`,
`${csrfName}=${user.csrf_k};samesite=strict;path=/;HttpOnly=true`,
`dsqluid=${dsqlUserId};samesite=strict;path=/;HttpOnly=true`,
`datasquirel_social_id=${user.social_id};samesite=strict;path=/`
]);
}
return httpResponse;
}
// users/get-token.ts
init_decrypt();
function getToken({
request,
encryptionKey,
encryptionSalt,
database,
useLocal,
cookieString
}) {
try {
const cookies = parseCookies({ request, cookieString });
const keynames = getAuthCookieNames();
const authKeyName = keynames.keyCookieName;
const csrfName = keynames.csrfCookieName;
const key = cookies[authKeyName];
const csrf = cookies[csrfName];
let userPayload = decrypt({
encryptedString: key,
encryptionKey,
encryptionSalt
});
if (!userPayload) {
return { key: undefined, csrf: undefined };
}
let userObject = JSON.parse(userPayload);
if (!userObject.csrf_k) {
return { key: undefined, csrf: undefined };
}
return { key, csrf };
} catch (error) {
return {
key: undefined,
csrf: undefined
};
}
}
// users/validate-token.ts
init_decrypt();
function validateToken({
token,
encryptionKey,
encryptionSalt
}) {
try {
const key = token;
let userPayload = decrypt({
encryptedString: key,
encryptionKey,
encryptionSalt
});
if (!userPayload) {
return null;
}
let userObject = JSON.parse(userPayload);
if (!userObject.csrf_k) {
return null;
}
return userObject;
} catch (error) {
return null;
}
}
// client/media/imageInputFileToBase64.ts
async function imageInputFileToBase64({
imageInputFile,
maxWidth,
imagePreviewNode
}) {
try {
let imageName = imageInputFile.name.replace(/\..*/, "");
let imageDataBase64;
let imageSize;
let canvas = document.createElement("canvas");
const MIME_TYPE = imageInputFile.type;
const QUALITY = 0.95;
const MAX_WIDTH = maxWidth ? maxWidth : null;
const file = imageInputFile;
const blobURL = URL.createObjectURL(file);
const img = new Image;
img.src = blobURL;
imageDataBase64 = await new Promise((res, rej) => {
img.onerror = function() {
URL.revokeObjectURL(this.src);
console.log("Cannot load image");
};
img.onload = function(e) {
const imgEl = e.target;
URL.revokeObjectURL(imgEl.src);
if (MAX_WIDTH) {
const scaleSize = MAX_WIDTH / img.naturalWidth;
canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH;
canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize;
} else {
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
}
const ctx = canvas.getContext("2d");
ctx?.drawImage(img, 0, 0, canvas.width, canvas.height);
const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY);
if (imagePreviewNode) {
imagePreviewNode.src = srcEncoded;
}
res(srcEncoded);
};
});
imageSize = await new Promise((res, rej) => {
canvas.toBlob((blob) => {
res(blob?.size);
}, MIME_TYPE, QUALITY);
});
return {
imageBase64: imageDataBase64?.replace(/.*?base64,/, ""),
imageBase64Full: imageDataBase64,
imageName,
imageSize
};
} catch (error) {
console.log("Image Processing Error! =>", error.message);
return {
imageBase64: undefined,
imageBase64Full: undefined,
imageName: undefined,
imageSize: undefined
};
}
}
// client/media/imageInputToBase64.ts
async function imageInputToBase64({
imageInput,
maxWidth,
mimeType
}) {
try {
let imagePreviewNode = document.querySelector(`[data-imagepreview='image']`);
let imageName = imageInput.files?.[0].name.replace(/\..*/, "");
let imageDataBase64;
const MIME_TYPE = mimeType ? mimeType : "image/jpeg";
const QUALITY = 0.95;
const MAX_WIDTH = maxWidth ? maxWidth : null;
const file = imageInput.files?.[0];
const blobURL = file ? URL.createObjectURL(file) : undefined;
const img = new Image;
if (blobURL) {
img.src = blobURL;
imageDataBase64 = await new Promise((res, rej) => {
img.onerror = function() {
URL.revokeObjectURL(this.src);
window.alert("Cannot load image!");
};
img.onload = function(e) {
const imgEl = e.target;
URL.revokeObjectURL(imgEl.src);
const canvas = document.createElement("canvas");
if (MAX_WIDTH) {
const scaleSize = MAX_WIDTH / img.naturalWidth;
canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH;
canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize;
} else {
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
}
const ctx = canvas.getContext("2d");
ctx?.drawImage(img, 0, 0, canvas.width, canvas.height);
const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY);
if (imagePreviewNode) {
document.querySelectorAll(`[data-imagepreview='image']`).forEach((_img) => {
const _imgEl = _img;
_imgEl.src = srcEncoded;
});
}
res(srcEncoded);
};
});
return {
imageBase64: imageDataBase64?.replace(/.*?base64,/, ""),
imageBase64Full: imageDataBase64,
imageName
};
} else {
return {};
}
} catch (error) {
console.log("Image Processing Error! =>", error.message);
return {};
}
}
// client/media/inputFileToBase64.ts
async function inputFileToBase64({
inputFile,
allowedRegex
}) {
const allowedTypesRegex = allowedRegex ? allowedRegex : /image\/*|\/pdf/;
if (!inputFile?.type?.match(allowedTypesRegex)) {
window.alert(`We currently don't support ${inputFile.type} file types. Support is coming soon. For now we support only images and PDFs.`);
return {
fileName: inputFile.name
};
}
try {
let fileName = inputFile.name.replace(/\..*/, "");
const fileData = await new Promise((resolve, reject) => {
var reader = new FileReader;
reader.readAsDataURL(inputFile);
reader.onload = function() {
resolve(reader.result?.toString());
};
reader.onerror = function(error) {
console.log("Error: ", error.message);
};
});
return {
fileBase64: fileData?.replace(/.*?base64,/, ""),
fileBase64Full: fileData,
fileName,
fileSize: inputFile.size,
fileType: inputFile.type
};
} catch (error) {
console.log("File Processing Error! =>", error.message);
return {
fileName: inputFile.name
};
}
}
// client/auth/google/getAccessToken.ts
var interval;
async function getAccessToken(params) {
params.setLoading?.(true);
const response = await new Promise((resolve, reject) => {
interval = setInterval(() => {
let google = window.google;
if (google) {
window.clearInterval(interval);
resolve(googleLogin({ ...params, google }));
}
}, 500);
});
params.setLoading?.(false);
return response;
}
function googleLogin({
google,
clientId,
setLoading,
triggerPrompt
}) {
setTimeout(() => {
setLoading?.(false);
}, 3000);
return new Promise((resolve, reject) => {
function handleCredentialResponse(response) {
resolve(response.access_token);
}
const googleAuth2 = google.accounts.oauth2.initTokenClient({
client_id: clientId,
scope: "email profile",
callback: handleCredentialResponse
});
googleAuth2.requestAccessToken();
if (triggerPrompt) {
google.accounts.id.prompt(triggerGooglePromptCallback);
}
function triggerGooglePromptCallback(notification) {
console.log(notification);
}
});
}
// client/auth/github/getAccessToken.ts
function getAccessToken2({
clientId,
redirectUrl,
setLoading,
scopes
}) {
if (setLoading)
setLoading(true);
const scopeString = scopes ? scopes.join("%20") : "read:user";
const fetchUrl = `https://github.com/login/oauth/authorize?client_id=${clientId}&scope=${scopeString}&redirect_uri=${redirectUrl}`;
window.location.assign(fetchUrl);
}
// client/utils/parseClientCookies.ts
function parseClientCookies_default() {
const cookieString = document.cookie;
if (!cookieString || typeof cookieString !== "string") {
return null;
}
const cookieSplitArray = cookieString.split(";");
let cookieObject = {};
cookieSplitArray.forEach((keyValueString) => {
const [key, value] = keyValueString.split("=");
if (key && typeof key == "string") {
cookieObject[key.replace(/^ +| +$/, "")] = value && typeof value == "string" ? value.replace(/^ +| +$/, "") : null;
}
});
return cookieObject;
}
// client/auth/logout.ts
async function logout(params) {
try {
const localUser = localStorage.getItem("user");
let targetUser;
try {
targetUser = JSON.parse(localUser || "");
} catch (error) {
console.log(error);
}
if (!targetUser) {
return false;
}
const cookies = parseClientCookies_default();
const socialId = cookies?.datasquirel_social_id && typeof cookies.datasquirel_social_id == "string" && !cookies.datasquirel_social_id.match(/^null$/i) ? cookies.datasquirel_social_id : null;
localStorage.setItem("user", "{}");
localStorage.removeItem("csrf");
document.cookie = `datasquirel_social_id=null;samesite=strict;path=/`;
const response = await new Promise((resolve, reject) => {
if (socialId && !socialId?.match(/^null$/i)) {
const googleClientId = params?.googleClientId;
if (googleClientId) {
const googleScript = document.createElement("script");
googleScript.src = "https://accounts.google.com/gsi/client";
googleScript.className = "social-script-tag";
document.body.appendChild(googleScript);
googleScript.onload = function(e) {
const google = window.google;
if (google) {
google.accounts.id.initialize({
client_id: googleClientId
});
google.accounts.id.revoke(socialId, (done) => {
console.log(done.error);
resolve(true);
});
}
};
} else {
resolve(true);
}
} else {
resolve(true);
}
});
return response;
} catch (error) {
return false;
}
}
// client/fetch/index.ts
var import_lodash3 = __toESM(require_lodash(), 1);
async function fetchApi(url, options, csrf, localStorageCSRFKey) {
let data;
const csrfValue = localStorage.getItem(localStorageCSRFKey || "csrf");
let finalHeaders = {
"Content-Type": "application/json"
};
if (csrf && csrfValue) {
finalHeaders[`'${csrfValue.replace(/\"/g, "")}'`] = "true";
}
if (typeof options === "string") {
try {
let fetchData;
switch (options) {
case "post":
fetchData = await fetch(url, {
method: options,
headers: finalHeaders
});
data = fetchData.json();
break;
default:
fetchData = await fetch(url);
data = fetchData.json();
break;
}
} catch (error) {
console.log("FetchAPI error #1:", error.message);
data = null;
}
} else if (typeof options === "object") {
try {
let fetchData;
if (options.body && typeof options.body === "object") {
let oldOptionsBody = import_lodash3.default.cloneDeep(options.body);
options.body = JSON.stringify(oldOptionsBody);
}
if (options.headers) {
options.headers = import_lodash3.default.merge(options.headers, finalHeaders);
const finalOptions = { ...options };
fetchData = await fetch(url, finalOptions);
} else {
const finalOptions = {
...options,
headers: finalHeaders
};
fetchData = await fetch(url, finalOptions);
}
data = fetchData.json();
} catch (error) {
console.log("FetchAPI error #2:", error.message);
data = null;
}
} else {
try {
let fetchData = await fetch(url);
data = await fetchData.json();
} catch (error) {
console.log("FetchAPI error #3:", error.message);
data = null;
}
}
return data;
}
// client/index.ts
init_ejson();
// package-shared/utils/numberfy.ts
function numberfy(num, decimals) {
try {
const numberfiedNum = Number(num);
if (typeof numberfiedNum !== "number")
return 0;
if (isNaN(numberfiedNum))
return 0;
if (decimals)
return Number(numberfiedNum.toFixed(decimals));
return Math.round(numberfiedNum);
} catch (error) {
console.log(`Numberfy ERROR: ${error.message}`);
return 0;
}
}
// package-shared/utils/slugify.ts
function slugify(str) {
try {
return String(str).trim().toLowerCase().replace(/ {2,}/g, " ").replace(/ /g, "-").replace(/[^a-z0-9]/g, "-").replace(/-{2,}/g, "-").replace(/^-/, "").replace(/-$/, "");
} catch (error) {
console.log(`Slugify ERROR: ${error.message}`);
return "";
}
}
// client/index.ts
var media = {
imageInputToBase64,
imageInputFileToBase64,
inputFileToBase64
};
var auth = {
google: {
getAccessToken
},
github: {
getAccessToken: getAccessToken2
},
logout
};
var utils = {
serializeQuery,
serializeCookies,
EJSON: ejson_default,
numberfy,
slugify
};
var fetch2 = {
fetchApi,
clientFetch: fetchApi
};
var datasquirelClient = { media, auth, fetch: fetch2, utils };
var client_default = datasquirelClient;
// package-shared/functions/dsql/sql/sql-generator.ts
function sqlGenerator({ tableName, genObject }) {
if (!genObject)
return;
const finalQuery = genObject.query ? genObject.query : undefined;
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;
const sqlSearhValues = [];
function genSqlSrchStr({
queryObj,
join,
field
}) {
const finalFieldName = (() => {
if (queryObj?.tableName) {
return `${queryObj.tableName}.${field}`;
}
if (join) {
return `${tableName}.${field}`;
}
return field;
})();
let str = `${finalFieldName}=?`;
if (typeof queryObj.value == "string" || typeof queryObj.value == "number") {
const valueParsed = String(queryObj.value);
if (queryObj.equality == "LIKE") {
str = `LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`;
} else if (queryObj.equality == "NOT EQUAL") {
str = `${finalFieldName} != ?`;
sqlSearhValues.push(valueParsed);
} else {
sqlSearhValues.push(valueParsed);
}
} else if (Array.isArray(queryObj.value)) {
const strArray = [];
queryObj.value.forEach((val) => {
const valueParsed = val;
if (queryObj.equality == "LIKE") {
strArray.push(`LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`);
} else if (queryObj.equality == "NOT EQUAL") {
strArray.push(`${finalFieldName} != ?`);
sqlSearhValues.push(valueParsed);
} else {
strArray.push(`${finalFieldName} = ?`);
sqlSearhValues.push(valueParsed);
}
});
str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")";
}
return str;
}
const sqlSearhString = queryKeys?.map((field) => {
const queryObj = finalQuery?.[field];
if (!queryObj)
return;
if (queryObj.__query) {
const subQueryGroup = queryObj.__query;
const subSearchKeys = Object.keys(subQueryGroup);
const subSearchString = subSearchKeys.map((_field) => {
const newSubQueryObj = subQueryGroup?.[_field];
return genSqlSrchStr({
queryObj: newSubQueryObj,
field: _field,
join: genObject.join
});
});
console.log("queryObj.operator", queryObj.operator);
return "(" + subSearchString.join(` ${queryObj.operator || "AND"} `) + ")";
}
return genSqlSrchStr({ queryObj, field, join: genObject.join });
});
function generateJoinStr(mtch, join) {
return `${typeof mtch.source == "object" ? mtch.source.tableName : tableName}.${typeof mtch.source == "object" ? mtch.source.fieldName : mtch.source}=${(() => {
if (mtch.targetLiteral) {
return `'${mtch.targetLiteral}'`;
}
if (join.alias) {
return `${typeof mtch.target == "object" ? mtch.target.tableName : join.alias}.${typeof mtch.target == "object" ? mtch.target.fieldName : mtch.target}`;
}
return `${typeof mtch.target == "object" ? mtch.target.tableName : join.tableName}.${typeof mtch.target == "object" ? mtch.target.fieldName : mtch.target}`;
})()}`;
}
let queryString = (() => {
let str = "SELECT";
if (genObject.selectFields?.[0]) {
if (genObject.join) {
str += ` ${genObject.selectFields?.map((fld) => `${tableName}.${fld}`).join(",")}`;
} else {
str += ` ${genObject.selectFields?.join(",")}`;
}
} else {
if (genObject.join) {
str += ` ${tableName}.*`;
} else {
str += " *";
}
}
if (genObject.join) {
const existingJoinTableNames = [tableName];
str += "," + genObject.join.map((joinObj) => {
const joinTableName = joinObj.alias ? joinObj.alias : joinObj.tableName;
if (existingJoinTableNames.includes(joinTableName))
return null;
existingJoinTableNames.push(joinTableName);
if (joinObj.selectFields) {
return joinObj.selectFields.map((selectField) => {
if (typeof selectField == "string") {
return `${joinTableName}.${selectField}`;
} else if (typeof selectField == "object") {
let aliasSelectField = selectField.count ? `COUNT(${joinTableName}.${selectField.field})` : `${joinTableName}.${selectField.field}`;
if (selectField.alias)
aliasSelectField += ` AS ${selectField.alias}`;
return aliasSelectField;
}
}).join(",");
} else {
return `${joinTableName}.*`;
}
}).filter((_4) => Boolean(_4)).join(",");
}
str += ` FROM ${tableName}`;
if (genObject.join) {
str += " " + genObject.join.map((join) => {
return join.joinType + " " + (join.alias ? join.tableName + " " + join.alias : join.tableName) + " ON " + (() => {
if (Array.isArray(join.match)) {
return "(" + join.match.map((mtch) => generateJoinStr(mtch, join)).join(join.operator ? ` ${join.operator} ` : " AND ") + ")";
} else if (typeof join.match == "object") {
return generateJoinStr(join.match, join);
}
})();
}).join(" ");
}
return str;
})();
if (sqlSearhString?.[0] && sqlSearhString.find((str) => str)) {
const stringOperator = genObject?.searchOperator || "AND";
queryString += ` WHERE ${sqlSearhString.join(` ${stringOperator} `)} `;
}
if (genObject.order)
queryString += ` ORDER BY ${genObject.join ? `${tableName}.${genObject.order.field}` : genObject.order.field} ${genObject.order.strategy}`;
if (genObject.limit)
queryString += ` LIMIT ${genObject.limit}`;
if (genObject.offset)
queryString += ` OFFSET ${genObject.offset}`;
return {
string: queryString,
values: sqlSearhValues
};
}
// package-shared/functions/dsql/sql/sql-insert-generator.ts
function sqlInsertGenerator({
tableName,
data
}) {
try {
if (Array.isArray(data) && data?.[0]) {
let insertKeys = [];
data.forEach((dt) => {
const kys = Object.keys(dt);
kys.forEach((ky) => {
if (!insertKeys.includes(ky)) {
insertKeys.push(ky);
}
});
});
let queryBatches = [];
let queryValues = [];
data.forEach((item) => {
queryBatches.push(`(${insertKeys.map((ky) => {
queryValues.push(item[ky]?.toString()?.match(/./) ? item[ky] : null);
return "?";
}).join(",")})`);
});
let query = `INSERT INTO ${tableName} (${insertKeys.join(",")}) VALUES ${queryBatches.join(",")}`;
return {
query,
values: queryValues
};
} else {
return;
}
} catch (error) {
console.log(`SQL insert gen ERROR: ${error.message}`);
return;
}
}
// package-shared/functions/dsql/sql/sql-delete-generator.ts
function sqlDeleteGenerator({
tableName,
data
}) {
try {
let queryStr = `DELETE FROM ${tableName}`;
let deleteBatch = [];
let queryArr = [];
Object.keys(data).forEach((ky) => {
deleteBatch.push(`${ky}=?`);
queryArr.push(data[ky]);
});
queryStr += ` WHERE ${deleteBatch.join(" AND ")}`;
return {
query: queryStr,
values: queryArr
};
} catch (error) {
console.log(`SQL delete gen ERROR: ${error.message}`);
return;
}
}
// package-shared/functions/backend/httpRequest.ts
import http3 from "node:http";
import https4 from "node:https";
import querystring from "querystring";
function httpRequest(params) {
return new Promise((resolve, reject) => {
const isUrlEncodedFormBody = params.urlEncodedFormBody;
const reqPayloadString = params.body ? isUrlEncodedFormBody ? querystring.stringify(params.body) : JSON.stringify(params.body).replace(/\n|\r|\n\r/gm, "") : undefined;
const reqQueryString = params.query ? serializeQuery(params.query) : undefined;
const paramScheme = params.scheme;
const finalScheme = paramScheme == "http" ? http3 : https4;
const finalPath = params.path ? params.path + (reqQueryString ? reqQueryString : "") : undefined;
delete params.body;
delete params.scheme;
delete params.query;
delete params.urlEncodedFormBody;
const requestOptions = {
...params,
headers: {
"Content-Type": isUrlEncodedFormBody ? "application/x-www-form-urlencoded" : "application/json",
"Content-Length": reqPayloadString ? Buffer.from(reqPayloadString).length : undefined,
...params.headers
},
port: paramScheme == "https" ? 443 : params.port,
path: finalPath
};
const httpsRequest2 = finalScheme.request(requestOptions, (response) => {
var str = "";
response.on("data", function(chunk) {
str += chunk;
});
response.on("end", function() {
const data = (() => {
try {
const jsonObj = JSON.parse(str);
return jsonObj;
} catch (error) {
return;
}
})();
resolve({
status: response.statusCode || 404,
data,
str,
requestedPath: finalPath
});
});
response.on("error", (err) => {
resolve({
status: response.statusCode || 404,
str,
error: err.message,
requestedPath: finalPath
});
});
});
if (reqPayloadString) {
httpsRequest2.write(reqPayloadString);
}
httpsRequest2.on("error", (error) => {
console.log("HTTPS request ERROR =>", error);
});
httpsRequest2.end();
});
}
// index.ts
var user = {
createUser: addUser,
deleteUser: (init_delete_user(), __toCommonJS(exports_delete_user)),
loginUser,
sendEmailCode,
logoutUser,
userAuth,
reAuthUser: reauthUser,
updateUser,
getUser,
getToken,
validateToken,
validateTempEmailCode: (init_validate_temp_email_code(), __toCommonJS(exports_validate_temp_email_code)),
social: {
loginWithGoogle: googleAuth,
loginWithGithub: githubAuth
}
};
var media2 = {
uploadImage,
uploadFile: uploadImage2,
deleteFile
};
var sql = {
sqlGenerator,
sqlInsertGenerator,
sqlDeleteGenerator,
trim: trimSql
};
var datasquirel = {
get,
post,
media: media2,
user,
getSchema,
client: client_default,
sql,
utils: {
crypto: {
encrypt: (init_encrypt(), __toCommonJS(exports_encrypt)),
decrypt: (init_decrypt(), __toCommonJS(exports_decrypt)),
hash: (init_hashPassword(), __toCommonJS(exports_hashPassword))
},
parseCookies,
httpRequest
}
};
var datasquirel_default = datasquirel;
export {
datasquirel_default as default
};