• jquery源码


    (function (global, factory) {
    “use strict”;
    if (typeof module === “object” && typeof module.exports === “object”) {
    module.exports = global.document
    ? factory(global, true)
    : function (w) {
    if (!w.document) {
    throw new Error(“jQuery requires a window with a document”);
    }
    return factory(w);
    };
    } else {
    factory(global);
    }
    })(typeof window !== “undefined” ? window : this, function (window, noGlobal) {
    var arr = [];
    var getProto = Object.getPrototypeOf;
    var slice = arr.slice;
    var flat = arr.flat
    ? function (array) {
    return arr.flat.call(array);
    }
    : function (array) {
    return arr.concat.apply([], array);
    };
    var push = arr.push;
    var indexOf = arr.indexOf;
    var class2type = {};
    var toString = class2type.toString;
    var hasOwn = class2type.hasOwnProperty;
    var fnToString = hasOwn.toString;
    var ObjectFunctionString = fnToString.call(Object);
    var support = {};
    var isFunction = function isFunction(obj) {
    return (
    typeof obj === “function” &&
    typeof obj.nodeType !== “number” &&
    typeof obj.item !== “function”
    );
    };
    var isWindow = function isWindow(obj) {
    return obj != null && obj === obj.window;
    };
    var document = window.document;
    var preservedScriptAttributes = {
    type: true,
    src: true,
    nonce: true,
    noModule: true,
    };
    function DOMEval(code, node, doc) {
    doc = doc || document;
    var i,
    val,
    script = doc.createElement(“script”);
    script.text = code;
    if (node) {
    for (i in preservedScriptAttributes) {
    val = node[i] || (node.getAttribute && node.getAttribute(i));
    if (val) {
    script.setAttribute(i, val);
    }
    }
    }
    doc.head.appendChild(script).parentNode.removeChild(script);
    }
    function toType(obj) {
    if (obj == null) {
    return obj + “”;
    }
    return typeof obj === “object” || typeof obj === “function”
    ? class2type[toString.call(obj)] || “object”
    : typeof obj;
    }
    var version = “3.6.0”,
    jQuery = function (selector, context) {
    return new jQuery.fn.init(selector, context);
    };
    jQuery.fn = jQuery.prototype = {
    jquery: version,
    constructor: jQuery,
    length: 0,
    toArray: function () {
    return slice.call(this);
    },
    get: function (num) {
    if (num == null) {
    return slice.call(this);
    }
    return num < 0 ? this[num + this.length] : this[num];
    },
    pushStack: function (elems) {
    var ret = jQuery.merge(this.constructor(), elems);
    ret.prevObject = this;
    return ret;
    },
    each: function (callback) {
    return jQuery.each(this, callback);
    },
    map: function (callback) {
    return this.pushStack(
    jQuery.map(this, function (elem, i) {
    return callback.call(elem, i, elem);
    })
    );
    },
    slice: function () {
    return this.pushStack(slice.apply(this, arguments));
    },
    first: function () {
    return this.eq(0);
    },
    last: function () {
    return this.eq(-1);
    },
    even: function () {
    return this.pushStack(
    jQuery.grep(this, function (_elem, i) {
    return (i + 1) % 2;
    })
    );
    },
    odd: function () {
    return this.pushStack(
    jQuery.grep(this, function (_elem, i) {
    return i % 2;
    })
    );
    },
    eq: function (i) {
    var len = this.length,
    j = +i + (i < 0 ? len : 0);
    return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
    },
    end: function () {
    return this.prevObject || this.constructor();
    },
    push: push,
    sort: arr.sort,
    splice: arr.splice,
    };
    jQuery.extend = jQuery.fn.extend = function () {
    var options,
    name,
    src,
    copy,
    copyIsArray,
    clone,
    target = arguments[0] || {},
    i = 1,
    length = arguments.length,
    deep = false;
    if (typeof target === “boolean”) {
    deep = target;
    target = arguments[i] || {};
    i++;
    }
    if (typeof target !== “object” && !isFunction(target)) {
    target = {};
    }
    if (i === length) {
    target = this;
    i–;
    }
    for (; i < length; i++) {
    if ((options = arguments[i]) != null) {
    for (name in options) {
    copy = options[name];
    if (name === “proto” || target === copy) {
    continue;
    }
    if (
    deep &&
    copy &&
    (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))
    ) {
    src = target[name];
    if (copyIsArray && !Array.isArray(src)) {
    clone = [];
    } else if (!copyIsArray && !jQuery.isPlainObject(src)) {
    clone = {};
    } else {
    clone = src;
    }
    copyIsArray = false;
    target[name] = jQuery.extend(deep, clone, copy);
    } else if (copy !== undefined) {
    target[name] = copy;
    }
    }
    }
    }
    return target;
    };
    jQuery.extend({
    expando: “jQuery” + (version + Math.random()).replace(/\D/g, “”),
    isReady: true,
    error: function (msg) {
    throw new Error(msg);
    },
    noop: function () {},
    isPlainObject: function (obj) {
    var proto, Ctor;
    if (!obj || toString.call(obj) !== “[object Object]”) {
    return false;
    }
    proto = getProto(obj);
    if (!proto) {
    return true;
    }
    Ctor = hasOwn.call(proto, “constructor”) && proto.constructor;
    return (
    typeof Ctor === “function” &&
    fnToString.call(Ctor) === ObjectFunctionString
    );
    },
    isEmptyObject: function (obj) {
    var name;
    for (name in obj) {
    return false;
    }
    return true;
    },
    globalEval: function (code, options, doc) {
    DOMEval(code, { nonce: options && options.nonce }, doc);
    },
    each: function (obj, callback) {
    var length,
    i = 0;
    if (isArrayLike(obj)) {
    length = obj.length;
    for (; i < length; i++) {
    if (callback.call(obj[i], i, obj[i]) === false) {
    break;
    }
    }
    } else {
    for (i in obj) {
    if (callback.call(obj[i], i, obj[i]) === false) {
    break;
    }
    }
    }
    return obj;
    },
    makeArray: function (arr, results) {
    var ret = results || [];
    if (arr != null) {
    if (isArrayLike(Object(arr))) {
    jQuery.merge(ret, typeof arr === “string” ? [arr] : arr);
    } else {
    push.call(ret, arr);
    }
    }
    return ret;
    },
    inArray: function (elem, arr, i) {
    return arr == null ? -1 : indexOf.call(arr, elem, i);
    },
    merge: function (first, second) {
    var len = +second.length,
    j = 0,
    i = first.length;
    for (; j < len; j++) {
    first[i++] = second[j];
    }
    first.length = i;
    return first;
    },
    grep: function (elems, callback, invert) {
    var callbackInverse,
    matches = [],
    i = 0,
    length = elems.length,
    callbackExpect = !invert;
    for (; i < length; i++) {
    callbackInverse = !callback(elems[i], i);
    if (callbackInverse !== callbackExpect) {
    matches.push(elems[i]);
    }
    }
    return matches;
    },
    map: function (elems, callback, arg) {
    var length,
    value,
    i = 0,
    ret = [];
    if (isArrayLike(elems)) {
    length = elems.length;
    for (; i < length; i++) {
    value = callback(elems[i], i, arg);
    if (value != null) {
    ret.push(value);
    }
    }
    } else {
    for (i in elems) {
    value = callback(elems[i], i, arg);
    if (value != null) {
    ret.push(value);
    }
    }
    }
    return flat(ret);
    },
    guid: 1,
    support: support,
    });
    if (typeof Symbol === “function”) {
    jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
    }
    jQuery.each(
    “Boolean Number String Function Array Date RegExp Object Error Symbol”.split(
    " "
    ),
    function (_i, name) {
    class2type[“[object " + name + “]”] = name.toLowerCase();
    }
    );
    function isArrayLike(obj) {
    var length = !!obj && “length” in obj && obj.length,
    type = toType(obj);
    if (isFunction(obj) || isWindow(obj)) {
    return false;
    }
    return (
    type === “array” ||
    length === 0 ||
    (typeof length === “number” && length > 0 && length - 1 in obj)
    );
    }
    (function () {
    console.log(isArrayLike(arguments));
    })();
    var Sizzle = (function (window) {
    var i,
    support,
    Expr,
    getText,
    isXML,
    tokenize,
    compile,
    select,
    outermostContext,
    sortInput,
    hasDuplicate,
    setDocument,
    document,
    docElem,
    documentIsHTML,
    rbuggyQSA,
    rbuggyMatches,
    matches,
    contains,
    expando = “sizzle” + 1 * new Date(),
    preferredDoc = window.document,
    dirruns = 0,
    done = 0,
    classCache = createCache(),
    tokenCache = createCache(),
    compilerCache = createCache(),
    nonnativeSelectorCache = createCache(),
    sortOrder = function (a, b) {
    if (a === b) {
    hasDuplicate = true;
    }
    return 0;
    },
    hasOwn = {}.hasOwnProperty,
    arr = [],
    pop = arr.pop,
    pushNative = arr.push,
    push = arr.push,
    slice = arr.slice,
    indexOf = function (list, elem) {
    var i = 0,
    len = list.length;
    for (; i < len; i++) {
    if (list[i] === elem) {
    return i;
    }
    }
    return -1;
    },
    booleans =
    “checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|” +
    “ismap|loop|multiple|open|readonly|required|scoped”,
    whitespace = “[\x20\t\r\n\f]”,
    identifier =
    “(?:\\[\da-fA-F]{1,6}” +
    whitespace +
    “?|\\[\r\n\f]|[\w-]|[\0-\x7f])+”,
    attributes =
    “\[” +
    whitespace +
    (" +
    identifier +
    “)(?:” +
    whitespace +
    "
    ([^KaTeX parse error: Got function '\\' with no arguments as superscript at position 59: …?:'((?:\\\\.|[^\̲\̲\\'])*)'|\"((?:…“,
    “g”
    ),
    rcomma = new RegExp(”^" + whitespace + "
    ,” + whitespace + “"),
    rcombinators = new RegExp(
    “^” + whitespace + "
    ([>+~]|” + whitespace + “)” + whitespace + “"
    ),
    rdescend = new RegExp(whitespace + “|>”),
    rpseudo = new RegExp(pseudos),
    ridentifier = new RegExp(“^” + identifier + “KaTeX parse error: Expected group after '^' at position 49: …D: new RegExp("^̲#(" + identifie…”, “i”),
    needsContext: new RegExp(
    “^” +
    whitespace +
    "
    [>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\(” +
    whitespace +
    ((?:-\d)?\d)” +
    whitespace +
    \)|)(?=[^-]|KaTeX parse error: Expected 'EOF', got '}' at position 36: … ), }̲, rhtml =…/i,
    rinputs = /^(?:input|select|textarea|button)KaTeX parse error: Undefined control sequence: \d at position 24: … rheader = /^h\̲d̲/i,
    rnative = /[{]+{\s
    [native \w/,
    rquickExpr = /^(?:#([\w-]+)|(\w+)|.([\w-]+))KaTeX parse error: Invalid size: '\\da-fA-F' at position 72: …( "\\\\[̲\̲\̲d̲a̲-̲f̲A̲-̲F̲]̲{1,6}" + whites…|[^\0-\x1f\x7f-\uFFFF\w-]/g,
    fcssescape = function (ch, asCodePoint) {
    if (asCodePoint) {
    if (ch === “\0”) {
    return “\uFFFD”;
    }
    return (
    ch.slice(0, -1) +
    “\” +
    ch.charCodeAt(ch.length - 1).toString(16) +
    " "
    );
    }
    return “\” + ch;
    },
    unloadHandler = function () {
    setDocument();
    },
    inDisabledFieldset = addCombinator(
    function (elem) {
    return (
    elem.disabled === true && elem.nodeName.toLowerCase() === “fieldset”
    );
    },
    { dir: “parentNode”, next: “legend” }
    );
    try {
    push.apply(
    (arr = slice.call(preferredDoc.childNodes)),
    preferredDoc.childNodes
    );
    arr[preferredDoc.childNodes.length].nodeType;
    } catch (e) {
    push = {
    apply: arr.length
    ? function (target, els) {
    pushNative.apply(target, slice.call(els));
    }
    : function (target, els) {
    var j = target.length,
    i = 0;
    while ((target[j++] = els[i++])) {}
    target.length = j - 1;
    },
    };
    }
    function Sizzle(selector, context, results, seed) {
    var m,
    i,
    elem,
    nid,
    match,
    groups,
    newSelector,
    newContext = context && context.ownerDocument,
    nodeType = context ? context.nodeType : 9;
    results = results || [];
    if (
    typeof selector !== “string” ||
    !selector ||
    (nodeType !== 1 && nodeType !== 9 && nodeType !== 11)
    ) {
    return results;
    }
    if (!seed) {
    setDocument(context);
    context = context || document;
    if (documentIsHTML) {
    if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
    if ((m = match[1])) {
    if (nodeType === 9) {
    if ((elem = context.getElementById(m))) {
    if (elem.id === m) {
    results.push(elem);
    return results;
    }
    } else {
    return results;
    }
    } else {
    if (
    newContext &&
    (elem = newContext.getElementById(m)) &&
    contains(context, elem) &&
    elem.id === m
    ) {
    results.push(elem);
    return results;
    }
    }
    } else if (match[2]) {
    push.apply(results, context.getElementsByTagName(selector));
    return results;
    } else if (
    (m = match[3]) &&
    support.getElementsByClassName &&
    context.getElementsByClassName
    ) {
    push.apply(results, context.getElementsByClassName(m));
    return results;
    }
    }
    if (
    support.qsa &&
    !nonnativeSelectorCache[selector + " “] &&
    (!rbuggyQSA || !rbuggyQSA.test(selector)) &&
    (nodeType !== 1 || context.nodeName.toLowerCase() !== “object”)
    ) {
    newSelector = selector;
    newContext = context;
    if (
    nodeType === 1 &&
    (rdescend.test(selector) || rcombinators.test(selector))
    ) {
    newContext =
    (rsibling.test(selector) && testContext(context.parentNode)) ||
    context;
    if (newContext !== context || !support.scope) {
    if ((nid = context.getAttribute(“id”))) {
    nid = nid.replace(rcssescape, fcssescape);
    } else {
    context.setAttribute(“id”, (nid = expando));
    }
    }
    groups = tokenize(selector);
    i = groups.length;
    while (i–) {
    groups[i] =
    (nid ? “#” + nid : “:scope”) + " " + toSelector(groups[i]);
    }
    newSelector = groups.join(”,”);
    }
    try {
    push.apply(results, newContext.querySelectorAll(newSelector));
    return results;
    } catch (qsaError) {
    nonnativeSelectorCache(selector, true);
    } finally {
    if (nid === expando) {
    context.removeAttribute(“id”);
    }
    }
    }
    }
    }
    return select(selector.replace(rtrim, “KaTeX parse error: Expected 'EOF', got '}' at position 35: …ts, seed); }̲ function c…]=” + whitespace + “(?:‘’|“”)“);
    }
    if (!el.querySelectorAll(”[selected]“).length) {
    rbuggyQSA.push(”\[" + whitespace + "
    (?:value|” + booleans + “)”);
    }
    if (!el.querySelectorAll(”[id~=" + expando + “-]”).length) {
    rbuggyQSA.push(“~=”);
    }
    input = document.createElement(“input”);
    input.setAttribute(“name”, “”);
    el.appendChild(input);
    if (!el.querySelectorAll(“[name=‘’]”).length) {
    rbuggyQSA.push(
    “\[” +
    whitespace +
    name" +
    whitespace +
    "
    =” +
    whitespace +
    (?:‘’|“”)"
    );
    }
    if (!el.querySelectorAll(“:checked”).length) {
    rbuggyQSA.push(“:checked”);
    }
    if (!el.querySelectorAll(“a#” + expando + "+
    ”).length) {
    rbuggyQSA.push(“.#.+[+~]”);
    }
    el.querySelectorAll(“\\f”);
    rbuggyQSA.push(“[\r\n\f]”);
    });
    assert(function (el) {
    el.innerHTML =
    ” +
    “”;
    var input = document.createElement(“input”);
    input.setAttribute(“type”, “hidden”);
    el.appendChild(input).setAttribute(“name”, “D”);
    if (el.querySelectorAll(“[name=d]”).length) {
    rbuggyQSA.push(“name” + whitespace + “[^KaTeX parse error: Expected 'EOF', got '}' at position 21: …="); }̲ if (…)”
    )) &&
    classCache(className, function (elem) {
    return pattern.test(
    (typeof elem.className === “string” && elem.className) ||
    (typeof elem.getAttribute !== “undefined” &&
    elem.getAttribute(“class”)) ||
    “”
    );
    }))
    );
    },
    ATTR: function (name, operator, check) {
    return function (elem) {
    var result = Sizzle.attr(elem, name);
    if (result == null) {
    return operator === “!=”;
    }
    if (!operator) {
    return true;
    }
    result += “”;
    return operator === “=”
    ? result === check
    : operator === “!=”
    ? result !== check
    : operator === “^=”
    ? check && result.indexOf(check) === 0
    : operator === “="
    ? check && result.indexOf(check) > -1
    : operator === “$=”
    ? check && result.slice(-check.length) === check
    : operator === “~=”
    ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) >
    -1
    : operator === “|=”
    ? result === check ||
    result.slice(0, check.length + 1) === check + “-”
    : false;
    };
    },
    CHILD: function (type, what, _argument, first, last) {
    var simple = type.slice(0, 3) !== “nth”,
    forward = type.slice(-4) !== “last”,
    ofType = what === “of-type”;
    return first === 1 && last === 0
    ? function (elem) {
    return !!elem.parentNode;
    }
    : function (elem, _context, xml) {
    var cache,
    uniqueCache,
    outerCache,
    node,
    nodeIndex,
    start,
    dir = simple !== forward ? “nextSibling” : “previousSibling”,
    parent = elem.parentNode,
    name = ofType && elem.nodeName.toLowerCase(),
    useCache = !xml && !ofType,
    diff = false;
    if (parent) {
    if (simple) {
    while (dir) {
    node = elem;
    while ((node = node[dir])) {
    if (
    ofType
    ? node.nodeName.toLowerCase() === name
    : node.nodeType === 1
    ) {
    return false;
    }
    }
    start = dir = type === “only” && !start && “nextSibling”;
    }
    return true;
    }
    start = [forward ? parent.firstChild : parent.lastChild];
    if (forward && useCache) {
    node = parent;
    outerCache = node[expando] || (node[expando] = {});
    uniqueCache =
    outerCache[node.uniqueID] ||
    (outerCache[node.uniqueID] = {});
    cache = uniqueCache[type] || [];
    nodeIndex = cache[0] === dirruns && cache[1];
    diff = nodeIndex && cache[2];
    node = nodeIndex && parent.childNodes[nodeIndex];
    while (
    (node =
    (++nodeIndex && node && node[dir]) ||
    (diff = nodeIndex = 0) ||
    start.pop())
    ) {
    if (node.nodeType === 1 && ++diff && node === elem) {
    uniqueCache[type] = [dirruns, nodeIndex, diff];
    break;
    }
    }
    } else {
    if (useCache) {
    node = elem;
    outerCache = node[expando] || (node[expando] = {});
    uniqueCache =
    outerCache[node.uniqueID] ||
    (outerCache[node.uniqueID] = {});
    cache = uniqueCache[type] || [];
    nodeIndex = cache[0] === dirruns && cache[1];
    diff = nodeIndex;
    }
    if (diff === false) {
    while (
    (node =
    (++nodeIndex && node && node[dir]) ||
    (diff = nodeIndex = 0) ||
    start.pop())
    ) {
    if (
    (ofType
    ? node.nodeName.toLowerCase() === name
    : node.nodeType === 1) &&
    ++diff
    ) {
    if (useCache) {
    outerCache = node[expando] || (node[expando] = {});
    uniqueCache =
    outerCache[node.uniqueID] ||
    (outerCache[node.uniqueID] = {});
    uniqueCache[type] = [dirruns, diff];
    }
    if (node === elem) {
    break;
    }
    }
    }
    }
    }
    diff -= last;
    return (
    diff === first || (diff % first === 0 && diff / first >= 0)
    );
    }
    };
    },
    PSEUDO: function (pseudo, argument) {
    var args,
    fn =
    Expr.pseudos[pseudo] ||
    Expr.setFilters[pseudo.toLowerCase()] ||
    Sizzle.error("unsupported pseudo: " + pseudo);
    if (fn[expando]) {
    return fn(argument);
    }
    if (fn.length > 1) {
    args = [pseudo, pseudo, “”, argument];
    return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())
    ? markFunction(function (seed, matches) {
    var idx,
    matched = fn(seed, argument),
    i = matched.length;
    while (i–) {
    idx = indexOf(seed, matched[i]);
    seed[idx] = !(matches[idx] = matched[i]);
    }
    })
    : function (elem) {
    return fn(elem, 0, args);
    };
    }
    return fn;
    },
    },
    pseudos: {
    not: markFunction(function (selector) {
    var input = [],
    results = [],
    matcher = compile(selector.replace(rtrim, “$1”));
    return matcher[expando]
    ? markFunction(function (seed, matches, _context, xml) {
    var elem,
    unmatched = matcher(seed, null, xml, []),
    i = seed.length;
    while (i–) {
    if ((elem = unmatched[i])) {
    seed[i] = !(matches[i] = elem);
    }
    }
    })
    : function (elem, _context, xml) {
    input[0] = elem;
    matcher(input, null, xml, results);
    input[0] = null;
    return !results.pop();
    };
    }),
    has: markFunction(function (selector) {
    return function (elem) {
    return Sizzle(selector, elem).length > 0;
    };
    }),
    contains: markFunction(function (text) {
    text = text.replace(runescape, funescape);
    return function (elem) {
    return (elem.textContent || getText(elem)).indexOf(text) > -1;
    };
    }),
    lang: markFunction(function (lang) {
    if (!ridentifier.test(lang || “”)) {
    Sizzle.error("unsupported lang: " + lang);
    }
    lang = lang.replace(runescape, funescape).toLowerCase();
    return function (elem) {
    var elemLang;
    do {
    if (
    (elemLang = documentIsHTML
    ? elem.lang
    : elem.getAttribute(“xml:lang”) || elem.getAttribute(“lang”))
    ) {
    elemLang = elemLang.toLowerCase();
    return elemLang === lang || elemLang.indexOf(lang + “-”) === 0;
    }
    } while ((elem = elem.parentNode) && elem.nodeType === 1);
    return false;
    };
    }),
    target: function (elem) {
    var hash = window.location && window.location.hash;
    return hash && hash.slice(1) === elem.id;
    },
    root: function (elem) {
    return elem === docElem;
    },
    focus: function (elem) {
    return (
    elem === document.activeElement &&
    (!document.hasFocus || document.hasFocus()) &&
    !!(elem.type || elem.href || ~elem.tabIndex)
    );
    },
    enabled: createDisabledPseudo(false),
    disabled: createDisabledPseudo(true),
    checked: function (elem) {
    var nodeName = elem.nodeName.toLowerCase();
    return (
    (nodeName === “input” && !!elem.checked) ||
    (nodeName === “option” && !!elem.selected)
    );
    },
    selected: function (elem) {
    if (elem.parentNode) {
    elem.parentNode.selectedIndex;
    }
    return elem.selected === true;
    },
    empty: function (elem) {
    for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
    if (elem.nodeType < 6) {
    return false;
    }
    }
    return true;
    },
    parent: function (elem) {
    return !Expr.pseudos"empty";
    },
    header: function (elem) {
    return rheader.test(elem.nodeName);
    },
    input: function (elem) {
    return rinputs.test(elem.nodeName);
    },
    button: function (elem) {
    var name = elem.nodeName.toLowerCase();
    return (
    (name === “input” && elem.type === “button”) || name === “button”
    );
    },
    text: function (elem) {
    var attr;
    return (
    elem.nodeName.toLowerCase() === “input” &&
    elem.type === “text” &&
    ((attr = elem.getAttribute(“type”)) == null ||
    attr.toLowerCase() === “text”)
    );
    },
    first: createPositionalPseudo(function () {
    return [0];
    }),
    last: createPositionalPseudo(function (_matchIndexes, length) {
    return [length - 1];
    }),
    eq: createPositionalPseudo(function (_matchIndexes, length, argument) {
    return [argument < 0 ? argument + length : argument];
    }),
    even: createPositionalPseudo(function (matchIndexes, length) {
    var i = 0;
    for (; i < length; i += 2) {
    matchIndexes.push(i);
    }
    return matchIndexes;
    }),
    odd: createPositionalPseudo(function (matchIndexes, length) {
    var i = 1;
    for (; i < length; i += 2) {
    matchIndexes.push(i);
    }
    return matchIndexes;
    }),
    lt: createPositionalPseudo(function (matchIndexes, length, argument) {
    var i =
    argument < 0
    ? argument + length
    : argument > length
    ? length
    : argument;
    for (; --i >= 0; ) {
    matchIndexes.push(i);
    }
    return matchIndexes;
    }),
    gt: createPositionalPseudo(function (matchIndexes, length, argument) {
    var i = argument < 0 ? argument + length : argument;
    for (; ++i < length; ) {
    matchIndexes.push(i);
    }
    return matchIndexes;
    }),
    },
    };
    Expr.pseudos[“nth”] = Expr.pseudos[“eq”];
    for (i in {
    radio: true,
    checkbox: true,
    file: true,
    password: true,
    image: true,
    }) {
    Expr.pseudos[i] = createInputPseudo(i);
    }
    for (i in { submit: true, reset: true }) {
    Expr.pseudos[i] = createButtonPseudo(i);
    }
    function setFilters() {}
    setFilters.prototype = Expr.filters = Expr.pseudos;
    Expr.setFilters = new setFilters();
    tokenize = Sizzle.tokenize = function (selector, parseOnly) {
    var matched,
    match,
    tokens,
    type,
    soFar,
    groups,
    preFilters,
    cached = tokenCache[selector + " "];
    if (cached) {
    return parseOnly ? 0 : cached.slice(0);
    }
    soFar = selector;
    groups = [];
    preFilters = Expr.preFilter;
    while (soFar) {
    if (!matched || (match = rcomma.exec(soFar))) {
    if (match) {
    soFar = soFar.slice(match[0].length) || soFar;
    }
    groups.push((tokens = []));
    }
    matched = false;
    if ((match = rcombinators.exec(soFar))) {
    matched = match.shift();
    tokens.push({
    value: matched,
    type: match[0].replace(rtrim, " "),
    });
    soFar = soFar.slice(matched.length);
    }
    for (type in Expr.filter) {
    if (
    (match = matchExpr[type].exec(soFar)) &&
    (!preFilters[type] || (match = preFilterstype))
    ) {
    matched = match.shift();
    tokens.push({
    value: matched,
    type: type,
    matches: match,
    });
    soFar = soFar.slice(matched.length);
    }
    }
    if (!matched) {
    break;
    }
    }
    return parseOnly
    ? soFar.length
    : soFar
    ? Sizzle.error(selector)
    : tokenCache(selector, groups).slice(0);
    };
    function toSelector(tokens) {
    var i = 0,
    len = tokens.length,
    selector = “”;
    for (; i < len; i++) {
    selector += tokens[i].value;
    }
    return selector;
    }
    function addCombinator(matcher, combinator, base) {
    var dir = combinator.dir,
    skip = combinator.next,
    key = skip || dir,
    checkNonElements = base && key === “parentNode”,
    doneName = done++;
    return combinator.first
    ? function (elem, context, xml) {
    while ((elem = elem[dir])) {
    if (elem.nodeType === 1 || checkNonElements) {
    return matcher(elem, context, xml);
    }
    }
    return false;
    }
    : function (elem, context, xml) {
    var oldCache,
    uniqueCache,
    outerCache,
    newCache = [dirruns, doneName];
    if (xml) {
    while ((elem = elem[dir])) {
    if (elem.nodeType === 1 || checkNonElements) {
    if (matcher(elem, context, xml)) {
    return true;
    }
    }
    }
    } else {
    while ((elem = elem[dir])) {
    if (elem.nodeType === 1 || checkNonElements) {
    outerCache = elem[expando] || (elem[expando] = {});
    uniqueCache =
    outerCache[elem.uniqueID] ||
    (outerCache[elem.uniqueID] = {});
    if (skip && skip === elem.nodeName.toLowerCase()) {
    elem = elem[dir] || elem;
    } else if (
    (oldCache = uniqueCache[key]) &&
    oldCache[0] === dirruns &&
    oldCache[1] === doneName
    ) {
    return (newCache[2] = oldCache[2]);
    } else {
    uniqueCache[key] = newCache;
    if ((newCache[2] = matcher(elem, context, xml))) {
    return true;
    }
    }
    }
    }
    }
    return false;
    };
    }
    function elementMatcher(matchers) {
    return matchers.length > 1
    ? function (elem, context, xml) {
    var i = matchers.length;
    while (i–) {
    if (!matchers[i](elem, context, xml)) {
    return false;
    }
    }
    return true;
    }
    : matchers[0];
    }
    function multipleContexts(selector, contexts, results) {
    var i = 0,
    len = contexts.length;
    for (; i < len; i++) {
    Sizzle(selector, contexts[i], results);
    }
    return results;
    }
    function condense(unmatched, map, filter, context, xml) {
    var elem,
    newUnmatched = [],
    i = 0,
    len = unmatched.length,
    mapped = map != null;
    for (; i < len; i++) {
    if ((elem = unmatched[i])) {
    if (!filter || filter(elem, context, xml)) {
    newUnmatched.push(elem);
    if (mapped) {
    map.push(i);
    }
    }
    }
    }
    return newUnmatched;
    }
    function setMatcher(
    preFilter,
    selector,
    matcher,
    postFilter,
    postFinder,
    postSelector
    ) {
    if (postFilter && !postFilter[expando]) {
    postFilter = setMatcher(postFilter);
    }
    if (postFinder && !postFinder[expando]) {
    postFinder = setMatcher(postFinder, postSelector);
    }
    return markFunction(function (seed, results, context, xml) {
    var temp,
    i,
    elem,
    preMap = [],
    postMap = [],
    preexisting = results.length,
    elems =
    seed ||
    multipleContexts(
    selector || "
    ”,
    context.nodeType ? [context] : context,
    []
    ),
    matcherIn =
    preFilter && (seed || !selector)
    ? condense(elems, preMap, preFilter, context, xml)
    : elems,
    matcherOut = matcher
    ? postFinder || (seed ? preFilter : preexisting || postFilter)
    ? []
    : results
    : matcherIn;
    if (matcher) {
    matcher(matcherIn, matcherOut, context, xml);
    }
    if (postFilter) {
    temp = condense(matcherOut, postMap);
    postFilter(temp, [], context, xml);
    i = temp.length;
    while (i–) {
    if ((elem = temp[i])) {
    matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
    }
    }
    }
    if (seed) {
    if (postFinder || preFilter) {
    if (postFinder) {
    temp = [];
    i = matcherOut.length;
    while (i–) {
    if ((elem = matcherOut[i])) {
    temp.push((matcherIn[i] = elem));
    }
    }
    postFinder(null, (matcherOut = []), temp, xml);
    }
    i = matcherOut.length;
    while (i–) {
    if (
    (elem = matcherOut[i]) &&
    (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1
    ) {
    seed[temp] = !(results[temp] = elem);
    }
    }
    }
    } else {
    matcherOut = condense(
    matcherOut === results
    ? matcherOut.splice(preexisting, matcherOut.length)
    : matcherOut
    );
    if (postFinder) {
    postFinder(null, results, matcherOut, xml);
    } else {
    push.apply(results, matcherOut);
    }
    }
    });
    }
    function matcherFromTokens(tokens) {
    var checkContext,
    matcher,
    j,
    len = tokens.length,
    leadingRelative = Expr.relative[tokens[0].type],
    implicitRelative = leadingRelative || Expr.relative[" “],
    i = leadingRelative ? 1 : 0,
    matchContext = addCombinator(
    function (elem) {
    return elem === checkContext;
    },
    implicitRelative,
    true
    ),
    matchAnyContext = addCombinator(
    function (elem) {
    return indexOf(checkContext, elem) > -1;
    },
    implicitRelative,
    true
    ),
    matchers = [
    function (elem, context, xml) {
    var ret =
    (!leadingRelative && (xml || context !== outermostContext)) ||
    ((checkContext = context).nodeType
    ? matchContext(elem, context, xml)
    : matchAnyContext(elem, context, xml));
    checkContext = null;
    return ret;
    },
    ];
    for (; i < len; i++) {
    if ((matcher = Expr.relative[tokens[i].type])) {
    matchers = [addCombinator(elementMatcher(matchers), matcher)];
    } else {
    matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);
    if (matcher[expando]) {
    j = ++i;
    for (; j < len; j++) {
    if (Expr.relative[tokens[j].type]) {
    break;
    }
    }
    return setMatcher(
    i > 1 && elementMatcher(matchers),
    i > 1 &&
    toSelector(
    tokens
    .slice(0, i - 1)
    .concat({ value: tokens[i - 2].type === " " ? “" : “” })
    ).replace(rtrim, "KaTeX parse error: Expected 'EOF', got '&' at position 49: … i < j &̲& matcherFromTo…/i;
    function winnow(elements, qualifier, not) {
    if (isFunction(qualifier)) {
    return jQuery.grep(elements, function (elem, i) {
    return !!qualifier.call(elem, i, elem) !== not;
    });
    }
    if (qualifier.nodeType) {
    return jQuery.grep(elements, function (elem) {
    return (elem === qualifier) !== not;
    });
    }
    if (typeof qualifier !== “string”) {
    return jQuery.grep(elements, function (elem) {
    return indexOf.call(qualifier, elem) > -1 !== not;
    });
    }
    return jQuery.filter(qualifier, elements, not);
    }
    jQuery.filter = function (expr, elems, not) {
    var elem = elems[0];
    if (not) {
    expr = “:not(” + expr + “)”;
    }
    if (elems.length === 1 && elem.nodeType === 1) {
    return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];
    }
    return jQuery.find.matches(
    expr,
    jQuery.grep(elems, function (elem) {
    return elem.nodeType === 1;
    })
    );
    };
    jQuery.fn.extend({
    find: function (selector) {
    var i,
    ret,
    len = this.length,
    self = this;
    if (typeof selector !== “string”) {
    return this.pushStack(
    jQuery(selector).filter(function () {
    for (i = 0; i < len; i++) {
    if (jQuery.contains(self[i], this)) {
    return true;
    }
    }
    })
    );
    }
    ret = this.pushStack([]);
    for (i = 0; i < len; i++) {
    jQuery.find(selector, self[i], ret);
    }
    return len > 1 ? jQuery.uniqueSort(ret) : ret;
    },
    filter: function (selector) {
    return this.pushStack(winnow(this, selector || [], false));
    },
    not: function (selector) {
    return this.pushStack(winnow(this, selector || [], true));
    },
    is: function (selector) {
    return !!winnow(
    this,
    typeof selector === “string” && rneedsContext.test(selector)
    ? jQuery(selector)
    : selector || [],
    false
    ).length;
    },
    });
    var rootjQuery,
    rquickExpr = /(?:\s*(<[\w\W]+>)[>]
    |#([\w-]+))KaTeX parse error: Expected '}', got '&' at position 263: …tor[0] === "<" &̲& sel…/;
    jQuery.Deferred.exceptionHook = function (error, stack) {
    if (
    window.console &&
    window.console.warn &&
    error &&
    rerrorNames.test(error.name)
    ) {
    window.console.warn(
    “jQuery.Deferred exception: " + error.message,
    error.stack,
    stack
    );
    }
    };
    jQuery.readyException = function (error) {
    window.setTimeout(function () {
    throw error;
    });
    };
    var readyList = jQuery.Deferred();
    jQuery.fn.ready = function (fn) {
    readyList.then(fn).catch(function (error) {
    jQuery.readyException(error);
    });
    return this;
    };
    jQuery.extend({
    isReady: false,
    readyWait: 1,
    ready: function (wait) {
    if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
    return;
    }
    jQuery.isReady = true;
    if (wait !== true && --jQuery.readyWait > 0) {
    return;
    }
    readyList.resolveWith(document, [jQuery]);
    },
    });
    jQuery.ready.then = readyList.then;
    function completed() {
    document.removeEventListener(“DOMContentLoaded”, completed);
    window.removeEventListener(“load”, completed);
    jQuery.ready();
    }
    if (
    document.readyState === “complete” ||
    (document.readyState !== “loading” && !document.documentElement.doScroll)
    ) {
    window.setTimeout(jQuery.ready);
    } else {
    document.addEventListener(“DOMContentLoaded”, completed);
    window.addEventListener(“load”, completed);
    }
    var access = function (elems, fn, key, value, chainable, emptyGet, raw) {
    var i = 0,
    len = elems.length,
    bulk = key == null;
    if (toType(key) === “object”) {
    chainable = true;
    for (i in key) {
    access(elems, fn, i, key[i], true, emptyGet, raw);
    }
    } else if (value !== undefined) {
    chainable = true;
    if (!isFunction(value)) {
    raw = true;
    }
    if (bulk) {
    if (raw) {
    fn.call(elems, value);
    fn = null;
    } else {
    bulk = fn;
    fn = function (elem, _key, value) {
    return bulk.call(jQuery(elem), value);
    };
    }
    }
    if (fn) {
    for (; i < len; i++) {
    fn(
    elems[i],
    key,
    raw ? value : value.call(elems[i], i, fn(elems[i], key))
    );
    }
    }
    }
    if (chainable) {
    return elems;
    }
    if (bulk) {
    return fn.call(elems);
    }
    return len ? fn(elems[0], key) : emptyGet;
    };
    var rmsPrefix = /^-ms-/,
    rdashAlpha = /-([a-z])/g;
    function fcamelCase(_all, letter) {
    return letter.toUpperCase();
    }
    function camelCase(string) {
    return string.replace(rmsPrefix, “ms-”).replace(rdashAlpha, fcamelCase);
    }
    var acceptData = function (owner) {
    return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
    };
    function Data() {
    this.expando = jQuery.expando + Data.uid++;
    }
    Data.uid = 1;
    Data.prototype = {
    cache: function (owner) {
    var value = owner[this.expando];
    if (!value) {
    value = {};
    if (acceptData(owner)) {
    if (owner.nodeType) {
    owner[this.expando] = value;
    } else {
    Object.defineProperty(owner, this.expando, {
    value: value,
    configurable: true,
    });
    }
    }
    }
    return value;
    },
    set: function (owner, data, value) {
    var prop,
    cache = this.cache(owner);
    if (typeof data === “string”) {
    cache[camelCase(data)] = value;
    } else {
    for (prop in data) {
    cache[camelCase(prop)] = data[prop];
    }
    }
    return cache;
    },
    get: function (owner, key) {
    return key === undefined
    ? this.cache(owner)
    : owner[this.expando] && owner[this.expando][camelCase(key)];
    },
    access: function (owner, key, value) {
    if (
    key === undefined ||
    (key && typeof key === “string” && value === undefined)
    ) {
    return this.get(owner, key);
    }
    this.set(owner, key, value);
    return value !== undefined ? value : key;
    },
    remove: function (owner, key) {
    var i,
    cache = owner[this.expando];
    if (cache === undefined) {
    return;
    }
    if (key !== undefined) {
    if (Array.isArray(key)) {
    key = key.map(camelCase);
    } else {
    key = camelCase(key);
    key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
    }
    i = key.length;
    while (i–) {
    delete cache[key[i]];
    }
    }
    if (key === undefined || jQuery.isEmptyObject(cache)) {
    if (owner.nodeType) {
    owner[this.expando] = undefined;
    } else {
    delete owner[this.expando];
    }
    }
    },
    hasData: function (owner) {
    var cache = owner[this.expando];
    return cache !== undefined && !jQuery.isEmptyObject(cache);
    },
    };
    var dataPriv = new Data();
    var dataUser = new Data();
    var rbrace = /^(?:{[\w\W]}|[[\w\W]])KaTeX parse error: Expected '}', got '&' at position 440: … === undefined &̲& elem.nodeType…&”).toLowerCase();
    data = elem.getAttribute(name);
    if (typeof data === “string”) {
    try {
    data = getData(data);
    } catch (e) {}
    dataUser.set(elem, key, data);
    } else {
    data = undefined;
    }
    }
    return data;
    }
    jQuery.extend({
    hasData: function (elem) {
    return dataUser.hasData(elem) || dataPriv.hasData(elem);
    },
    data: function (elem, name, data) {
    return dataUser.access(elem, name, data);
    },
    removeData: function (elem, name) {
    dataUser.remove(elem, name);
    },
    _data: function (elem, name, data) {
    return dataPriv.access(elem, name, data);
    },
    _removeData: function (elem, name) {
    dataPriv.remove(elem, name);
    },
    });
    jQuery.fn.extend({
    data: function (key, value) {
    var i,
    name,
    data,
    elem = this[0],
    attrs = elem && elem.attributes;
    if (key === undefined) {
    if (this.length) {
    data = dataUser.get(elem);
    if (elem.nodeType === 1 && !dataPriv.get(elem, “hasDataAttrs”)) {
    i = attrs.length;
    while (i–) {
    if (attrs[i]) {
    name = attrs[i].name;
    if (name.indexOf(“data-”) === 0) {
    name = camelCase(name.slice(5));
    dataAttr(elem, name, data[name]);
    }
    }
    }
    dataPriv.set(elem, “hasDataAttrs”, true);
    }
    }
    return data;
    }
    if (typeof key === “object”) {
    return this.each(function () {
    dataUser.set(this, key);
    });
    }
    return access(
    this,
    function (value) {
    var data;
    if (elem && value === undefined) {
    data = dataUser.get(elem, key);
    if (data !== undefined) {
    return data;
    }
    data = dataAttr(elem, key);
    if (data !== undefined) {
    return data;
    }
    return;
    }
    this.each(function () {
    dataUser.set(this, key, value);
    });
    },
    null,
    value,
    arguments.length > 1,
    null,
    true
    );
    },
    removeData: function (key) {
    return this.each(function () {
    dataUser.remove(this, key);
    });
    },
    });
    jQuery.extend({
    queue: function (elem, type, data) {
    var queue;
    if (elem) {
    type = (type || “fx”) + “queue”;
    queue = dataPriv.get(elem, type);
    if (data) {
    if (!queue || Array.isArray(data)) {
    queue = dataPriv.access(elem, type, jQuery.makeArray(data));
    } else {
    queue.push(data);
    }
    }
    return queue || [];
    }
    },
    dequeue: function (elem, type) {
    type = type || “fx”;
    var queue = jQuery.queue(elem, type),
    startLength = queue.length,
    fn = queue.shift(),
    hooks = jQuery._queueHooks(elem, type),
    next = function () {
    jQuery.dequeue(elem, type);
    };
    if (fn === “inprogress”) {
    fn = queue.shift();
    startLength–;
    }
    if (fn) {
    if (type === “fx”) {
    queue.unshift(“inprogress”);
    }
    delete hooks.stop;
    fn.call(elem, next, hooks);
    }
    if (!startLength && hooks) {
    hooks.empty.fire();
    }
    },
    _queueHooks: function (elem, type) {
    var key = type + “queueHooks”;
    return (
    dataPriv.get(elem, key) ||
    dataPriv.access(elem, key, {
    empty: jQuery.Callbacks(“once memory”).add(function () {
    dataPriv.remove(elem, [type + “queue”, key]);
    }),
    })
    );
    },
    });
    jQuery.fn.extend({
    queue: function (type, data) {
    var setter = 2;
    if (typeof type !== “string”) {
    data = type;
    type = “fx”;
    setter–;
    }
    if (arguments.length < setter) {
    return jQuery.queue(this[0], type);
    }
    return data === undefined
    ? this
    : this.each(function () {
    var queue = jQuery.queue(this, type, data);
    jQuery._queueHooks(this, type);
    if (type === “fx” && queue[0] !== “inprogress”) {
    jQuery.dequeue(this, type);
    }
    });
    },
    dequeue: function (type) {
    return this.each(function () {
    jQuery.dequeue(this, type);
    });
    },
    clearQueue: function (type) {
    return this.queue(type || “fx”, []);
    },
    promise: function (type, obj) {
    var tmp,
    count = 1,
    defer = jQuery.Deferred(),
    elements = this,
    i = this.length,
    resolve = function () {
    if (!–count) {
    defer.resolveWith(elements, [elements]);
    }
    };
    if (typeof type !== “string”) {
    obj = type;
    type = undefined;
    }
    type = type || “fx”;
    while (i–) {
    tmp = dataPriv.get(elements[i], type + “queueHooks”);
    if (tmp && tmp.empty) {
    count++;
    tmp.empty.add(resolve);
    }
    }
    resolve();
    return defer.promise(obj);
    },
    });
    var pnum = /[±]?(?:\d*.|)\d+(?:[eE][±]?\d+|)/.source;
    var rcssNum = new RegExp(”^(?😦[±])=|)(” + pnum + “)([a-z%])KaTeX parse error: Expected '}', got '&' at position 624: …display === "" &̲& isAtt…/i;
    var rtagName = /<([a-z][^/\0>\x20\t\r\n\f]
    )/i;
    var rscriptType = /^ ∣ m o d u l e |^module module|/(?:java|ecma)script/i;
    (function () {
    var fragment = document.createDocumentFragment(),
    div = fragment.appendChild(document.createElement(“div”)),
    input = document.createElement(“input”);
    input.setAttribute(“type”, “radio”);
    input.setAttribute(“checked”, “checked”);
    input.setAttribute(“name”, “t”);
    div.appendChild(input);
    support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
    div.innerHTML = “x”;
    support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
    div.innerHTML = “”;
    support.option = !!div.lastChild;
    })();
    var wrapMap = {
    thead: [1, “

    ”, “
    ”],
    col: [2, “”, “
    ”],
    tr: [2, “”, “
    ”],
    td: [3, “”, “
    ”],
    _default: [0, “”, “”],
    };
    wrapMap.tbody =
    wrapMap.tfoot =
    wrapMap.colgroup =
    wrapMap.caption =
    wrapMap.thead;
    wrapMap.th = wrapMap.td;
    if (!support.option) {
    wrapMap.optgroup = wrapMap.option = [
    1,
    “”,
    “”,
    ];
    }
    function getAll(context, tag) {
    var ret;
    if (typeof context.getElementsByTagName !== “undefined”) {
    ret = context.getElementsByTagName(tag || “ ");
    } else if (typeof context.querySelectorAll !== “undefined”) {
    ret = context.querySelectorAll(tag || "
    ”);
    } else {
    ret = [];
    }
    if (tag === undefined || (tag && nodeName(context, tag))) {
    return jQuery.merge([context], ret);
    }
    return ret;
    }
    function setGlobalEval(elems, refElements) {
    var i = 0,
    l = elems.length;
    for (; i < l; i++) {
    dataPriv.set(
    elems[i],
    “globalEval”,
    !refElements || dataPriv.get(refElements[i], “globalEval”)
    );
    }
    }
    var rhtml = /<|&#?\w+;/;
    function buildFragment(elems, context, scripts, selection, ignored) {
    var elem,
    tmp,
    tag,
    wrap,
    attached,
    j,
    fragment = context.createDocumentFragment(),
    nodes = [],
    i = 0,
    l = elems.length;
    for (; i < l; i++) {
    elem = elems[i];
    if (elem || elem === 0) {
    if (toType(elem) === “object”) {
    jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
    } else if (!rhtml.test(elem)) {
    nodes.push(context.createTextNode(elem));
    } else {
    tmp = tmp || fragment.appendChild(context.createElement(“div”));
    tag = (rtagName.exec(elem) || [”“, “”])[1].toLowerCase();
    wrap = wrapMap[tag] || wrapMap. default;
    tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
    j = wrap[0];
    while (j–) {
    tmp = tmp.lastChild;
    }
    jQuery.merge(nodes, tmp.childNodes);
    tmp = fragment.firstChild;
    tmp.textContent = “”;
    }
    }
    }
    fragment.textContent = “”;
    i = 0;
    while ((elem = nodes[i++])) {
    if (selection && jQuery.inArray(elem, selection) > -1) {
    if (ignored) {
    ignored.push(elem);
    }
    continue;
    }
    attached = isAttached(elem);
    tmp = getAll(fragment.appendChild(elem), “script”);
    if (attached) {
    setGlobalEval(tmp);
    }
    if (scripts) {
    j = 0;
    while ((elem = tmp[j++])) {
    if (rscriptType.test(elem.type || “”)) {
    scripts.push(elem);
    }
    }
    }
    }
    return fragment;
    }
    var rtypenamespace = /([.])(?:.(.+)|)/;
    function returnTrue() {
    return true;
    }
    function returnFalse() {
    return false;
    }
    function expectSync(elem, type) {
    return (elem === safeActiveElement()) === (type === “focus”);
    }
    function safeActiveElement() {
    try {
    return document.activeElement;
    } catch (err) {}
    }
    function on(elem, types, selector, data, fn, one) {
    var origFn, type;
    if (typeof types === “object”) {
    if (typeof selector !== “string”) {
    data = data || selector;
    selector = undefined;
    }
    for (type in types) {
    on(elem, type, selector, data, types[type], one);
    }
    return elem;
    }
    if (data == null && fn == null) {
    fn = selector;
    data = selector = undefined;
    } else if (fn == null) {
    if (typeof selector === “string”) {
    fn = data;
    data = undefined;
    } else {
    fn = data;
    data = selector;
    selector = undefined;
    }
    }
    if (fn === false) {
    fn = returnFalse;
    } else if (!fn) {
    return elem;
    }
    if (one === 1) {
    origFn = fn;
    fn = function (event) {
    jQuery().off(event);
    return origFn.apply(this, arguments);
    };
    fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
    }
    return elem.each(function () {
    jQuery.event.add(this, types, fn, data, selector);
    });
    }
    jQuery.event = {
    global: {},
    add: function (elem, types, handler, data, selector) {
    var handleObjIn,
    eventHandle,
    tmp,
    events,
    t,
    handleObj,
    special,
    handlers,
    type,
    namespaces,
    origType,
    elemData = dataPriv.get(elem);
    if (!acceptData(elem)) {
    return;
    }
    if (handler.handler) {
    handleObjIn = handler;
    handler = handleObjIn.handler;
    selector = handleObjIn.selector;
    }
    if (selector) {
    jQuery.find.matchesSelector(documentElement, selector);
    }
    if (!handler.guid) {
    handler.guid = jQuery.guid++;
    }
    if (!(events = elemData.events)) {
    events = elemData.events = Object.create(null);
    }
    if (!(eventHandle = elemData.handle)) {
    eventHandle = elemData.handle = function (e) {
    return typeof jQuery !== “undefined” &&
    jQuery.event.triggered !== e.type
    ? jQuery.event.dispatch.apply(elem, arguments)
    : undefined;
    };
    }
    types = (types || “”).match(rnothtmlwhite) || [“”];
    t = types.length;
    while (t–) {
    tmp = rtypenamespace.exec(types[t]) || [];
    type = origType = tmp[1];
    namespaces = (tmp[2] || “”).split(“.”).sort();
    if (!type) {
    continue;
    }
    special = jQuery.event.special[type] || {};
    type = (selector ? special.delegateType : special.bindType) || type;
    special = jQuery.event.special[type] || {};
    handleObj = jQuery.extend(
    {
    type: type,
    origType: origType,
    data: data,
    handler: handler,
    guid: handler.guid,
    selector: selector,
    needsContext:
    selector && jQuery.expr.match.needsContext.test(selector),
    namespace: namespaces.join(“.”),
    },
    handleObjIn
    );
    if (!(handlers = events[type])) {
    handlers = events[type] = [];
    handlers.delegateCount = 0;
    if (
    !special.setup ||
    special.setup.call(elem, data, namespaces, eventHandle) === false
    ) {
    if (elem.addEventListener) {
    elem.addEventListener(type, eventHandle);
    }
    }
    }
    if (special.add) {
    special.add.call(elem, handleObj);
    if (!handleObj.handler.guid) {
    handleObj.handler.guid = handler.guid;
    }
    }
    if (selector) {
    handlers.splice(handlers.delegateCount++, 0, handleObj);
    } else {
    handlers.push(handleObj);
    }
    jQuery.event.global[type] = true;
    }
    },
    remove: function (elem, types, handler, selector, mappedTypes) {
    var j,
    origCount,
    tmp,
    events,
    t,
    handleObj,
    special,
    handlers,
    type,
    namespaces,
    origType,
    elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
    if (!elemData || !(events = elemData.events)) {
    return;
    }
    types = (types || “”).match(rnothtmlwhite) || [“”];
    t = types.length;
    while (t–) {
    tmp = rtypenamespace.exec(types[t]) || [];
    type = origType = tmp[1];
    namespaces = (tmp[2] || “”).split(“.”).sort();
    if (!type) {
    for (type in events) {
    jQuery.event.remove(elem, type + types[t], handler, selector, true);
    }
    continue;
    }
    special = jQuery.event.special[type] || {};
    type = (selector ? special.delegateType : special.bindType) || type;
    handlers = events[type] || [];
    tmp =
    tmp[2] &&
    new RegExp(“(^|\.)” + namespaces.join("\.(?:.
    \.|)“) + “(\.|KaTeX parse error: Expected '}', got '&' at position 180: …eObj.origType) &̲& (…/g;
    function manipulationTarget(elem, content) {
    if (
    nodeName(elem, “table”) &&
    nodeName(content.nodeType !== 11 ? content : content.firstChild, “tr”)
    ) {
    return jQuery(elem).children(“tbody”)[0] || elem;
    }
    return elem;
    }
    function disableScript(elem) {
    elem.type = (elem.getAttribute(“type”) !== null) + “/” + elem.type;
    return elem;
    }
    function restoreScript(elem) {
    if ((elem.type || “”).slice(0, 5) === “true/”) {
    elem.type = elem.type.slice(5);
    } else {
    elem.removeAttribute(“type”);
    }
    return elem;
    }
    function cloneCopyEvent(src, dest) {
    var i, l, type, pdataOld, udataOld, udataCur, events;
    if (dest.nodeType !== 1) {
    return;
    }
    if (dataPriv.hasData(src)) {
    pdataOld = dataPriv.get(src);
    events = pdataOld.events;
    if (events) {
    dataPriv.remove(dest, “handle events”);
    for (type in events) {
    for (i = 0, l = events[type].length; i < l; i++) {
    jQuery.event.add(dest, type, events[type][i]);
    }
    }
    }
    }
    if (dataUser.hasData(src)) {
    udataOld = dataUser.access(src);
    udataCur = jQuery.extend({}, udataOld);
    dataUser.set(dest, udataCur);
    }
    }
    function fixInput(src, dest) {
    var nodeName = dest.nodeName.toLowerCase();
    if (nodeName === “input” && rcheckableType.test(src.type)) {
    dest.checked = src.checked;
    } else if (nodeName === “input” || nodeName === “textarea”) {
    dest.defaultValue = src.defaultValue;
    }
    }
    function domManip(collection, args, callback, ignored) {
    args = flat(args);
    var fragment,
    first,
    scripts,
    hasScripts,
    node,
    doc,
    i = 0,
    l = collection.length,
    iNoClone = l - 1,
    value = args[0],
    valueIsFunction = isFunction(value);
    if (
    valueIsFunction ||
    (l > 1 &&
    typeof value === “string” &&
    !support.checkClone &&
    rchecked.test(value))
    ) {
    return collection.each(function (index) {
    var self = collection.eq(index);
    if (valueIsFunction) {
    args[0] = value.call(this, index, self.html());
    }
    domManip(self, args, callback, ignored);
    });
    }
    if (l) {
    fragment = buildFragment(
    args,
    collection[0].ownerDocument,
    false,
    collection,
    ignored
    );
    first = fragment.firstChild;
    if (fragment.childNodes.length === 1) {
    fragment = first;
    }
    if (first || ignored) {
    scripts = jQuery.map(getAll(fragment, “script”), disableScript);
    hasScripts = scripts.length;
    for (; i < l; i++) {
    node = fragment;
    if (i !== iNoClone) {
    node = jQuery.clone(node, true, true);
    if (hasScripts) {
    jQuery.merge(scripts, getAll(node, “script”));
    }
    }
    callback.call(collection[i], node, i);
    }
    if (hasScripts) {
    doc = scripts[scripts.length - 1].ownerDocument;
    jQuery.map(scripts, restoreScript);
    for (i = 0; i < hasScripts; i++) {
    node = scripts[i];
    if (
    rscriptType.test(node.type || “”) &&
    !dataPriv.access(node, “globalEval”) &&
    jQuery.contains(doc, node)
    ) {
    if (node.src && (node.type || “”).toLowerCase() !== “module”) {
    if (jQuery.evalUrl && !node.noModule) {
    jQuery.evalUrl(
    node.src,
    {
    nonce: node.nonce || node.getAttribute(“nonce”),
    },
    doc
    );
    }
    } else {
    DOMEval(node.textContent.replace(rcleanScript, “”), node, doc);
    }
    }
    }
    }
    }
    }
    return collection;
    }
    function remove(elem, selector, keepData) {
    var node,
    nodes = selector ? jQuery.filter(selector, elem) : elem,
    i = 0;
    for (; (node = nodes[i]) != null; i++) {
    if (!keepData && node.nodeType === 1) {
    jQuery.cleanData(getAll(node));
    }
    if (node.parentNode) {
    if (keepData && isAttached(node)) {
    setGlobalEval(getAll(node, “script”));
    }
    node.parentNode.removeChild(node);
    }
    }
    return elem;
    }
    jQuery.extend({
    htmlPrefilter: function (html) {
    return html;
    },
    clone: function (elem, dataAndEvents, deepDataAndEvents) {
    var i,
    l,
    srcElements,
    destElements,
    clone = elem.cloneNode(true),
    inPage = isAttached(elem);
    if (
    !support.noCloneChecked &&
    (elem.nodeType === 1 || elem.nodeType === 11) &&
    !jQuery.isXMLDoc(elem)
    ) {
    destElements = getAll(clone);
    srcElements = getAll(elem);
    for (i = 0, l = srcElements.length; i < l; i++) {
    fixInput(srcElements[i], destElements[i]);
    }
    }
    if (dataAndEvents) {
    if (deepDataAndEvents) {
    srcElements = srcElements || getAll(elem);
    destElements = destElements || getAll(clone);
    for (i = 0, l = srcElements.length; i < l; i++) {
    cloneCopyEvent(srcElements[i], destElements[i]);
    }
    } else {
    cloneCopyEvent(elem, clone);
    }
    }
    destElements = getAll(clone, “script”);
    if (destElements.length > 0) {
    setGlobalEval(destElements, !inPage && getAll(elem, “script”));
    }
    return clone;
    },
    cleanData: function (elems) {
    var data,
    elem,
    type,
    special = jQuery.event.special,
    i = 0;
    for (; (elem = elems[i]) !== undefined; i++) {
    if (acceptData(elem)) {
    if ((data = elem[dataPriv.expando])) {
    if (data.events) {
    for (type in data.events) {
    if (special[type]) {
    jQuery.event.remove(elem, type);
    } else {
    jQuery.removeEvent(elem, type, data.handle);
    }
    }
    }
    elem[dataPriv.expando] = undefined;
    }
    if (elem[dataUser.expando]) {
    elem[dataUser.expando] = undefined;
    }
    }
    }
    },
    });
    jQuery.fn.extend({
    detach: function (selector) {
    return remove(this, selector, true);
    },
    remove: function (selector) {
    return remove(this, selector);
    },
    text: function (value) {
    return access(
    this,
    function (value) {
    return value === undefined
    ? jQuery.text(this)
    : this.empty().each(function () {
    if (
    this.nodeType === 1 ||
    this.nodeType === 11 ||
    this.nodeType === 9
    ) {
    this.textContent = value;
    }
    });
    },
    null,
    value,
    arguments.length
    );
    },
    append: function () {
    return domManip(this, arguments, function (elem) {
    if (
    this.nodeType === 1 ||
    this.nodeType === 11 ||
    this.nodeType === 9
    ) {
    var target = manipulationTarget(this, elem);
    target.appendChild(elem);
    }
    });
    },
    prepend: function () {
    return domManip(this, arguments, function (elem) {
    if (
    this.nodeType === 1 ||
    this.nodeType === 11 ||
    this.nodeType === 9
    ) {
    var target = manipulationTarget(this, elem);
    target.insertBefore(elem, target.firstChild);
    }
    });
    },
    before: function () {
    return domManip(this, arguments, function (elem) {
    if (this.parentNode) {
    this.parentNode.insertBefore(elem, this);
    }
    });
    },
    after: function () {
    return domManip(this, arguments, function (elem) {
    if (this.parentNode) {
    this.parentNode.insertBefore(elem, this.nextSibling);
    }
    });
    },
    empty: function () {
    var elem,
    i = 0;
    for (; (elem = this[i]) != null; i++) {
    if (elem.nodeType === 1) {
    jQuery.cleanData(getAll(elem, false));
    elem.textContent = “”;
    }
    }
    return this;
    },
    clone: function (dataAndEvents, deepDataAndEvents) {
    dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
    deepDataAndEvents =
    deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
    return this.map(function () {
    return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
    });
    },
    html: function (value) {
    return access(
    this,
    function (value) {
    var elem = this[0] || {},
    i = 0,
    l = this.length;
    if (value === undefined && elem.nodeType === 1) {
    return elem.innerHTML;
    }
    if (
    typeof value === “string” &&
    !rnoInnerhtml.test(value) &&
    !wrapMap[(rtagName.exec(value) || [“”, “”])[1].toLowerCase()]
    ) {
    value = jQuery.htmlPrefilter(value);
    try {
    for (; i < l; i++) {
    elem = this[i] || {};
    if (elem.nodeType === 1) {
    jQuery.cleanData(getAll(elem, false));
    elem.innerHTML = value;
    }
    }
    elem = 0;
    } catch (e) {}
    }
    if (elem) {
    this.empty().append(value);
    }
    },
    null,
    value,
    arguments.length
    );
    },
    replaceWith: function () {
    var ignored = [];
    return domManip(
    this,
    arguments,
    function (elem) {
    var parent = this.parentNode;
    if (jQuery.inArray(this, ignored) < 0) {
    jQuery.cleanData(getAll(this));
    if (parent) {
    parent.replaceChild(elem, this);
    }
    }
    },
    ignored
    );
    },
    });
    jQuery.each(
    {
    appendTo: “append”,
    prependTo: “prepend”,
    insertBefore: “before”,
    insertAfter: “after”,
    replaceAll: “replaceWith”,
    },
    function (name, original) {
    jQuery.fn[name] = function (selector) {
    var elems,
    ret = [],
    insert = jQuery(selector),
    last = insert.length - 1,
    i = 0;
    for (; i <= last; i++) {
    elems = i === last ? this : this.clone(true);
    jQuery(insert[i])original;
    push.apply(ret, elems.get());
    }
    return this.pushStack(ret);
    };
    }
    );
    var rnumnonpx = new RegExp(“^(” + pnum + “)(?!px)[a-z%]+KaTeX parse error: Expected '}', got '&' at position 4058: …if (ret === "" &̲& !isAttached(e…/,
    rrun = /queueHooksKaTeX parse error: Expected '}', got '&' at position 86: …dden === false &̲& window.reques…/i,
    rclickable = /^(?:a|area)KaTeX parse error: Expected '}', got '&' at position 693: … hooks &̲& "se…/,
    stopPropagationCallback = function (e) {
    e.stopPropagation();
    };
    jQuery.extend(jQuery.event, {
    trigger: function (event, data, elem, onlyHandlers) {
    var i,
    cur,
    tmp,
    bubbleType,
    ontype,
    handle,
    special,
    lastElement,
    eventPath = [elem || document],
    type = hasOwn.call(event, “type”) ? event.type : event,
    namespaces = hasOwn.call(event, “namespace”)
    ? event.namespace.split(”.“)
    : [];
    cur = lastElement = tmp = elem = elem || document;
    if (elem.nodeType === 3 || elem.nodeType === 8) {
    return;
    }
    if (rfocusMorph.test(type + jQuery.event.triggered)) {
    return;
    }
    if (type.indexOf(”.“) > -1) {
    namespaces = type.split(”.“);
    type = namespaces.shift();
    namespaces.sort();
    }
    ontype = type.indexOf(”:“) < 0 && “on” + type;
    event = event[jQuery.expando]
    ? event
    : new jQuery.Event(type, typeof event === “object” && event);
    event.isTrigger = onlyHandlers ? 2 : 3;
    event.namespace = namespaces.join(”.“);
    event.rnamespace = event.namespace
    ? new RegExp(”(^|\.)" + namespaces.join(“\.(?:.*\.|)”) + "(\.|KaTeX parse error: Expected 'EOF', got '&' at position 271: … !onlyHandlers &̲& speci…/,
    rCRLF = /\r?\n/g,
    rsubmitterTypes = /^(?:submit|button|image|reset|file)KaTeX parse error: Expected '}', got '&' at position 371: …v === "object" &̲& v != null ? i…/,
    rantiCache = /([?&])
    =[^&]/,
    rheaders = /^(.
    ?):[ \t]([^\r\n]) / g m , r l o c a l P r o t o c o l = / ( ? : a b o u t ∣ a p p ∣ a p p − s t o r a g e ∣ . + − e x t e n s i o n ∣ f i l e ∣ r e s ∣ w i d g e t ) : /gm, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget): /gm,rlocalProtocol=/(?:aboutappappstorage∣.+extensionfilereswidget):/,
    rnoContent = /^(?:GET|HEAD)$/,
    rprotocol = /^///,
    prefilters = {},
    transports = {},
    allTypes = “/“.concat(””),
    originAnchor = document.createElement(“a”);
    originAnchor.href = location.href;
    function addToPrefiltersOrTransports(structure) {
    return function (dataTypeExpression, func) {
    if (typeof dataTypeExpression !== “string”) {
    func = dataTypeExpression;
    dataTypeExpression = “";
    }
    var dataType,
    i = 0,
    dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
    if (isFunction(func)) {
    while ((dataType = dataTypes[i++])) {
    if (dataType[0] === “+”) {
    dataType = dataType.slice(1) || "
    ”;
    (structure[dataType] = structure[dataType] || []).unshift(func);
    } else {
    (structure[dataType] = structure[dataType] || []).push(func);
    }
    }
    }
    };
    }
    function inspectPrefiltersOrTransports(
    structure,
    options,
    originalOptions,
    jqXHR
    ) {
    var inspected = {},
    seekingTransport = structure === transports;
    function inspect(dataType) {
    var selected;
    inspected[dataType] = true;
    jQuery.each(structure[dataType] || [], function (
    , prefilterOrFactory) {
    var dataTypeOrTransport = prefilterOrFactory(
    options,
    originalOptions,
    jqXHR
    );
    if (
    typeof dataTypeOrTransport === “string” &&
    !seekingTransport &&
    !inspected[dataTypeOrTransport]
    ) {
    options.dataTypes.unshift(dataTypeOrTransport);
    inspect(dataTypeOrTransport);
    return false;
    } else if (seekingTransport) {
    return !(selected = dataTypeOrTransport);
    }
    });
    return selected;
    }
    return inspect(options.dataTypes[0]) || (!inspected[”“] && inspect(””));
    }
    function ajaxExtend(target, src) {
    var key,
    deep,
    flatOptions = jQuery.ajaxSettings.flatOptions || {};
    for (key in src) {
    if (src[key] !== undefined) {
    (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
    }
    }
    if (deep) {
    jQuery.extend(true, target, deep);
    }
    return target;
    }
    function ajaxHandleResponses(s, jqXHR, responses) {
    var ct,
    type,
    finalDataType,
    firstDataType,
    contents = s.contents,
    dataTypes = s.dataTypes;
    while (dataTypes[0] === “") {
    dataTypes.shift();
    if (ct === undefined) {
    ct = s.mimeType || jqXHR.getResponseHeader(“Content-Type”);
    }
    }
    if (ct) {
    for (type in contents) {
    if (contents[type] && contents[type].test(ct)) {
    dataTypes.unshift(type);
    break;
    }
    }
    }
    if (dataTypes[0] in responses) {
    finalDataType = dataTypes[0];
    } else {
    for (type in responses) {
    if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
    finalDataType = type;
    break;
    }
    if (!firstDataType) {
    firstDataType = type;
    }
    }
    finalDataType = finalDataType || firstDataType;
    }
    if (finalDataType) {
    if (finalDataType !== dataTypes[0]) {
    dataTypes.unshift(finalDataType);
    }
    return responses[finalDataType];
    }
    }
    function ajaxConvert(s, response, jqXHR, isSuccess) {
    var conv2,
    current,
    conv,
    tmp,
    prev,
    converters = {},
    dataTypes = s.dataTypes.slice();
    if (dataTypes[1]) {
    for (conv in s.converters) {
    converters[conv.toLowerCase()] = s.converters[conv];
    }
    }
    current = dataTypes.shift();
    while (current) {
    if (s.responseFields[current]) {
    jqXHR[s.responseFields[current]] = response;
    }
    if (!prev && isSuccess && s.dataFilter) {
    response = s.dataFilter(response, s.dataType);
    }
    prev = current;
    current = dataTypes.shift();
    if (current) {
    if (current === "
    ”) {
    current = prev;
    } else if (prev !== “" && prev !== current) {
    conv = converters[prev + " " + current] || converters["
    " + current];
    if (!conv) {
    for (conv2 in converters) {
    tmp = conv2.split(” “);
    if (tmp[1] === current) {
    conv =
    converters[prev + " " + tmp[0]] || converters[”* " + tmp[0]];
    if (conv) {
    if (conv === true) {
    conv = converters[conv2];
    } else if (converters[conv2] !== true) {
    current = tmp[0];
    dataTypes.unshift(tmp[1]);
    }
    break;
    }
    }
    }
    }
    if (conv !== true) {
    if (conv && s.throws) {
    response = conv(response);
    } else {
    try {
    response = conv(response);
    } catch (e) {
    return {
    state: “parsererror”,
    error: conv
    ? e
    : "No conversion from " + prev + " to " + current,
    };
    }
    }
    }
    }
    }
    }
    return { state: “success”, data: response };
    }
    jQuery.extend({
    active: 0,
    lastModified: {},
    etag: {},
    ajaxSettings: {
    url: location.href,
    type: “GET”,
    isLocal: rlocalProtocol.test(location.protocol),
    global: true,
    processData: true,
    async: true,
    contentType: “application/x-www-form-urlencoded; charset=UTF-8”,
    accepts: {
    ": allTypes,
    text: “text/plain”,
    html: “text/html”,
    xml: “application/xml, text/xml”,
    json: “application/json, text/javascript”,
    },
    contents: {
    xml: /\bxml\b/,
    html: /\bhtml/,
    json: /\bjson\b/,
    },
    responseFields: {
    xml: “responseXML”,
    text: “responseText”,
    json: “responseJSON”,
    },
    converters: {
    "
    text”: String,
    “text html”: true,
    “text json”: JSON.parse,
    “text xml”: jQuery.parseXML,
    },
    flatOptions: {
    url: true,
    context: true,
    },
    },
    ajaxSetup: function (target, settings) {
    return settings
    ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings)
    : ajaxExtend(jQuery.ajaxSettings, target);
    },
    ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
    ajaxTransport: addToPrefiltersOrTransports(transports),
    ajax: function (url, options) {
    if (typeof url === “object”) {
    options = url;
    url = undefined;
    }
    options = options || {};
    var transport,
    cacheURL,
    responseHeadersString,
    responseHeaders,
    timeoutTimer,
    urlAnchor,
    completed,
    fireGlobals,
    i,
    uncached,
    s = jQuery.ajaxSetup({}, options),
    callbackContext = s.context || s,
    globalEventContext =
    s.context && (callbackContext.nodeType || callbackContext.jquery)
    ? jQuery(callbackContext)
    : jQuery.event,
    deferred = jQuery.Deferred(),
    completeDeferred = jQuery.Callbacks(“once memory”),
    statusCode = s.statusCode || {},
    requestHeaders = {},
    requestHeadersNames = {},
    strAbort = “canceled”,
    jqXHR = {
    readyState: 0,
    getResponseHeader: function (key) {
    var match;
    if (completed) {
    if (!responseHeaders) {
    responseHeaders = {};
    while ((match = rheaders.exec(responseHeadersString))) {
    responseHeaders[match[1].toLowerCase() + " "] = (
    responseHeaders[match[1].toLowerCase() + " "] || []
    ).concat(match[2]);
    }
    }
    match = responseHeaders[key.toLowerCase() + " “];
    }
    return match == null ? null : match.join(”, ");
    },
    getAllResponseHeaders: function () {
    return completed ? responseHeadersString : null;
    },
    setRequestHeader: function (name, value) {
    if (completed == null) {
    name = requestHeadersNames[name.toLowerCase()] =
    requestHeadersNames[name.toLowerCase()] || name;
    requestHeaders[name] = value;
    }
    return this;
    },
    overrideMimeType: function (type) {
    if (completed == null) {
    s.mimeType = type;
    }
    return this;
    },
    statusCode: function (map) {
    var code;
    if (map) {
    if (completed) {
    jqXHR.always(map[jqXHR.status]);
    } else {
    for (code in map) {
    statusCode[code] = [statusCode[code], map[code]];
    }
    }
    }
    return this;
    },
    abort: function (statusText) {
    var finalText = statusText || strAbort;
    if (transport) {
    transport.abort(finalText);
    }
    done(0, finalText);
    return this;
    },
    };
    deferred.promise(jqXHR);
    s.url = ((url || s.url || location.href) + “”).replace(
    rprotocol,
    location.protocol + “//”
    );
    s.type = options.method || options.type || s.method || s.type;
    s.dataTypes = (s.dataType || “*”).toLowerCase().match(rnothtmlwhite) || [
    “”,
    ];
    if (s.crossDomain == null) {
    urlAnchor = document.createElement(“a”);
    try {
    urlAnchor.href = s.url;
    urlAnchor.href = urlAnchor.href;
    s.crossDomain =
    originAnchor.protocol + “//” + originAnchor.host !==
    urlAnchor.protocol + “//” + urlAnchor.host;
    } catch (e) {
    s.crossDomain = true;
    }
    }
    if (s.data && s.processData && typeof s.data !== “string”) {
    s.data = jQuery.param(s.data, s.traditional);
    }
    inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
    if (completed) {
    return jqXHR;
    }
    fireGlobals = jQuery.event && s.global;
    if (fireGlobals && jQuery.active++ === 0) {
    jQuery.event.trigger(“ajaxStart”);
    }
    s.type = s.type.toUpperCase();
    s.hasContent = !rnoContent.test(s.type);
    cacheURL = s.url.replace(rhash, “”);
    if (!s.hasContent) {
    uncached = s.url.slice(cacheURL.length);
    if (s.data && (s.processData || typeof s.data === “string”)) {
    cacheURL += (rquery.test(cacheURL) ? “&” : “?”) + s.data;
    delete s.data;
    }
    if (s.cache === false) {
    cacheURL = cacheURL.replace(rantiCache, "KaTeX parse error: Expected 'EOF', got '&' at position 65: …t(cacheURL) ? "&̲" : "?") + …)|??/;
    jQuery.ajaxSetup({
    jsonp: “callback”,
    jsonpCallback: function () {
    var callback = oldCallbacks.pop() || jQuery.expando + "
    ” + nonce.guid++;
    this[callback] = true;
    return callback;
    },
    });
    jQuery.ajaxPrefilter(“json jsonp”, function (s, originalSettings, jqXHR) {
    var callbackName,
    overwritten,
    responseContainer,
    jsonProp =
    s.jsonp !== false &&
    (rjsonp.test(s.url)
    ? “url”
    : typeof s.data === “string” &&
    (s.contentType || “”).indexOf(
    “application/x-www-form-urlencoded”
    ) === 0 &&
    rjsonp.test(s.data) &&
    “data”);
    if (jsonProp || s.dataTypes[0] === “jsonp”) {
    callbackName = s.jsonpCallback = isFunction(s.jsonpCallback)
    ? s.jsonpCallback()
    : s.jsonpCallback;
    if (jsonProp) {
    s[jsonProp] = s[jsonProp].replace(rjsonp, " KaTeX parse error: Expected 'EOF', got '}' at position 27: …ckName); }̲ else if (s.jso…/g;
    jQuery.proxy = function (fn, context) {
    var tmp, args, proxy;
    if (typeof context === “string”) {
    tmp = fn[context];
    context = fn;
    fn = tmp;
    }
    if (!isFunction(fn)) {
    return undefined;
    }
    args = slice.call(arguments, 2);
    proxy = function () {
    return fn.apply(context || this, args.concat(slice.call(arguments)));
    };
    proxy.guid = fn.guid = fn.guid || jQuery.guid++;
    return proxy;
    };
    jQuery.holdReady = function (hold) {
    if (hold) {
    jQuery.readyWait++;
    } else {
    jQuery.ready(true);
    }
    };
    jQuery.isArray = Array.isArray;
    jQuery.parseJSON = JSON.parse;
    jQuery.nodeName = nodeName;
    jQuery.isFunction = isFunction;
    jQuery.isWindow = isWindow;
    jQuery.camelCase = camelCase;
    jQuery.type = toType;
    jQuery.now = Date.now;
    jQuery.isNumeric = function (obj) {
    var type = jQuery.type(obj);
    return (
    (type === “number” || type === “string”) && !isNaN(obj - parseFloat(obj))
    );
    };
    jQuery.trim = function (text) {
    return text == null ? “” : (text + “”).replace(rtrim, “”);
    };
    if (typeof define === “function” && define.amd) {
    define(“jquery”, [], function () {
    return jQuery;
    });
    }
    var _jQuery = window.jQuery,
    _$ = window. KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (window. === jQuery) {
    window.$ = _ KaTeX parse error: Expected 'EOF', got '}' at position 7: ; }̲ if (deep &… = jQuery;
    }
    return jQuery;
    });

  • 相关阅读:
    ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动
    @Autoweird和@Resourse的区别 java定义Bean的方式
    网络代理技术:保护隐私与增强网络安全
    基于MATLAB的图片文字提取和识别——算法复现
    一键自动化博客发布工具,用过的人都说好(oschina篇)
    crt中输入任何命令都不可以成功
    鸿蒙HarmonyOS实战-ArkUI组件(Video)
    C++与C的区别终于说清楚了!
    ES6解构赋值的使用说明
    【CS224N 论文精读】Efficient Estimation of Word Representations in Vector Space(2013)
  • 原文地址:https://blog.csdn.net/formylovetm/article/details/126600333