!(function (a, b) {
    "function" == typeof define && define.amd
        ? define([], b) : "object" == typeof exports ? (module.exports = b()) : (a.Headroom = b());
})(this, function () {
    function a(a) {
        (this.callback = a), (this.ticking = !1);
    }

    function b(a) {
        return a && "undefined" != typeof window && (a === window || a.nodeType);
    }

    function c(a) {
        if (arguments.length <= 0)
            throw new Error("Missing arguments in extend function");
        var d,
            e,
            f = a || {};
        for (e = 1; e < arguments.length; e++) {
            var g = arguments[e] || {};
            for (d in g)
                "object" != typeof f[d] || b(f[d])
                    ? (f[d] = f[d] || g[d])
                    : (f[d] = c(f[d], g[d]));
        }
        return f;
    }

    function d(a) {
        return a === Object(a) ? a : { down: a, up: a };
    }

    function e(a, b) {
        (b = c(b, e.options)),
            (this.lastKnownScrollY = 0),
            (this.elem = a),
            (this.tolerance = d(b.tolerance)),
            (this.classes = b.classes),
            (this.offset = b.offset),
            (this.scroller = b.scroller),
            (this.initialised = !1),
            (this.onPin = b.onPin),
            (this.onUnpin = b.onUnpin),
            (this.onTop = b.onTop),
            (this.onNotTop = b.onNotTop),
            (this.onBottom = b.onBottom),
            (this.onNotBottom = b.onNotBottom);
    }

    var f = {
        bind: !!function () {}.bind,
        classList: "classList" in document.documentElement,
        rAF: !!(
            window.requestAnimationFrame ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame
        ),
    };
    return (
        (window.requestAnimationFrame =
            window.requestAnimationFrame ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame),
            (a.prototype = {
                constructor: a,
                update: function () {
                    this.callback && this.callback(), (this.ticking = !1);
                },
                requestTick: function () {
                    this.ticking ||
                    (requestAnimationFrame(
                        this.rafCallback || (this.rafCallback = this.update.bind(this))
                    ),
                        (this.ticking = !0));
                },
                handleEvent: function () {
                    this.requestTick();
                },
            }),
            (e.prototype = {
                constructor: e,
                init: function () {
                    return e.cutsTheMustard
                        ? ((this.debouncer = new a(this.update.bind(this))),
                            this.elem.classList.add(this.classes.initial),
                            setTimeout(this.attachEvent.bind(this), 100),
                            this)
                        : void 0;
                },
                destroy: function () {
                    var a = this.classes;
                    (this.initialised = !1),
                        this.elem.classList.remove(
                            a.unpinned,
                            a.pinned,
                            a.top,
                            a.notTop,
                            a.initial
                        ),
                        this.scroller.removeEventListener("scroll", this.debouncer, !1);
                },
                attachEvent: function () {
                    this.initialised ||
                    ((this.lastKnownScrollY = this.getScrollY()),
                        (this.initialised = !0),
                        this.scroller.addEventListener("scroll", this.debouncer, !1),
                        this.debouncer.handleEvent());
                },
                unpin: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    (!a.contains(b.pinned) && a.contains(b.unpinned)) ||
                    (a.add(b.unpinned),
                        a.remove(b.pinned),
                    this.onUnpin && this.onUnpin.call(this));
                },
                pin: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    a.contains(b.unpinned) &&
                    (a.remove(b.unpinned),
                        a.add(b.pinned),
                    this.onPin && this.onPin.call(this));
                },
                top: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    a.contains(b.top) ||
                    (a.add(b.top),
                        a.remove(b.notTop),
                    this.onTop && this.onTop.call(this));
                },
                notTop: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    a.contains(b.notTop) ||
                    (a.add(b.notTop),
                        a.remove(b.top),
                    this.onNotTop && this.onNotTop.call(this));
                },
                bottom: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    a.contains(b.bottom) ||
                    (a.add(b.bottom),
                        a.remove(b.notBottom),
                    this.onBottom && this.onBottom.call(this));
                },
                notBottom: function () {
                    var a = this.elem.classList,
                        b = this.classes;
                    a.contains(b.notBottom) ||
                    (a.add(b.notBottom),
                        a.remove(b.bottom),
                    this.onNotBottom && this.onNotBottom.call(this));
                },
                getScrollY: function () {
                    return void 0 !== this.scroller.pageYOffset
                        ? this.scroller.pageYOffset
                        : void 0 !== this.scroller.scrollTop
                            ? this.scroller.scrollTop
                            : (
                                document.documentElement ||
                                document.body.parentNode ||
                                document.body
                            ).scrollTop;
                },
                getViewportHeight: function () {
                    return (
                        window.innerHeight ||
                        document.documentElement.clientHeight ||
                        document.body.clientHeight
                    );
                },
                getElementPhysicalHeight: function (a) {
                    return Math.max(a.offsetHeight, a.clientHeight);
                },
                getScrollerPhysicalHeight: function () {
                    return this.scroller === window || this.scroller === document.body
                        ? this.getViewportHeight()
                        : this.getElementPhysicalHeight(this.scroller);
                },
                getDocumentHeight: function () {
                    var a = document.body,
                        b = document.documentElement;
                    return Math.max(
                        a.scrollHeight,
                        b.scrollHeight,
                        a.offsetHeight,
                        b.offsetHeight,
                        a.clientHeight,
                        b.clientHeight
                    );
                },
                getElementHeight: function (a) {
                    return Math.max(a.scrollHeight, a.offsetHeight, a.clientHeight);
                },
                getScrollerHeight: function () {
                    return this.scroller === window || this.scroller === document.body
                        ? this.getDocumentHeight()
                        : this.getElementHeight(this.scroller);
                },
                isOutOfBounds: function (a) {
                    var b = 0 > a,
                        c = a + this.getScrollerPhysicalHeight() > this.getScrollerHeight();
                    return b || c;
                },
                toleranceExceeded: function (a, b) {
                    return Math.abs(a - this.lastKnownScrollY) >= this.tolerance[b];
                },
                shouldUnpin: function (a, b) {
                    var c = a > this.lastKnownScrollY,
                        d = a >= this.offset;
                    return c && d && b;
                },
                shouldPin: function (a, b) {
                    var c = a < this.lastKnownScrollY,
                        d = a <= this.offset;
                    return (c && b) || d;
                },
                update: function () {
                    var a = this.getScrollY(),
                        b = a > this.lastKnownScrollY ? "down" : "up",
                        c = this.toleranceExceeded(a, b);
                    this.isOutOfBounds(a) ||
                    (a <= this.offset ? this.top() : this.notTop(),
                        a + this.getViewportHeight() >= this.getScrollerHeight()
                            ? this.bottom()
                            : this.notBottom(),
                        this.shouldUnpin(a, c)
                            ? this.unpin()
                            : this.shouldPin(a, c) && this.pin(),
                        (this.lastKnownScrollY = a));
                },
            }),
            (e.options = {
                tolerance: { up: 0, down: 0 },
                offset: 0,
                scroller: window,
                classes: {
                    pinned: "headroom--pinned",
                    unpinned: "headroom--unpinned",
                    top: "headroom--top",
                    notTop: "headroom--not-top",
                    bottom: "headroom--bottom",
                    notBottom: "headroom--not-bottom",
                    initial: "headroom",
                },
            }),
            (e.cutsTheMustard =
                "undefined" != typeof f && f.rAF && f.bind && f.classList),
            e
    );
});
var $jscomp = $jscomp || {};
$jscomp.scope = {};
$jscomp.arrayIteratorImpl = function (a) {
    var c = 0;
    return function () {
        return c < a.length ? { done: !1, value: a[c++] } : { done: !0 };
    };
};
$jscomp.arrayIterator = function (a) {
    return { next: $jscomp.arrayIteratorImpl(a) };
};
$jscomp.ASSUME_ES5 = !1;
$jscomp.ASSUME_NO_NATIVE_MAP = !1;
$jscomp.ASSUME_NO_NATIVE_SET = !1;
$jscomp.SIMPLE_FROUND_POLYFILL = !1;
$jscomp.defineProperty =
    $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties
        ? Object.defineProperty
        : function (a, c, d) {
            a != Array.prototype && a != Object.prototype && (a[c] = d.value);
        };
$jscomp.getGlobal = function (a) {
    return "undefined" != typeof window && window === a
        ? a
        : "undefined" != typeof global && null != global
            ? global
            : a;
};
$jscomp.global = $jscomp.getGlobal(this);
$jscomp.SYMBOL_PREFIX = "jscomp_symbol_";
$jscomp.initSymbol = function () {
    $jscomp.initSymbol = function () {};
    $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol);
};
$jscomp.Symbol = (function () {
    var a = 0;
    return function (c) {
        return $jscomp.SYMBOL_PREFIX + (c || "") + a++;
    };
})();
$jscomp.initSymbolIterator = function () {
    $jscomp.initSymbol();
    var a = $jscomp.global.Symbol.iterator;
    a || (a = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator"));
    "function" != typeof Array.prototype[a] &&
    $jscomp.defineProperty(Array.prototype, a, {
        configurable: !0,
        writable: !0,
        value: function () {
            return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this));
        },
    });
    $jscomp.initSymbolIterator = function () {};
};
$jscomp.initSymbolAsyncIterator = function () {
    $jscomp.initSymbol();
    var a = $jscomp.global.Symbol.asyncIterator;
    a ||
    (a = $jscomp.global.Symbol.asyncIterator =
        $jscomp.global.Symbol("asyncIterator"));
    $jscomp.initSymbolAsyncIterator = function () {};
};
$jscomp.iteratorPrototype = function (a) {
    $jscomp.initSymbolIterator();
    a = { next: a };
    a[$jscomp.global.Symbol.iterator] = function () {
        return this;
    };
    return a;
};
$jscomp.iteratorFromArray = function (a, c) {
    $jscomp.initSymbolIterator();
    a instanceof String && (a += "");
    var d = 0,
        b = {
            next: function () {
                if (d < a.length) {
                    var g = d++;
                    return { value: c(g, a[g]), done: !1 };
                }
                b.next = function () {
                    return { done: !0, value: void 0 };
                };
                return b.next();
            },
        };
    b[Symbol.iterator] = function () {
        return b;
    };
    return b;
};
$jscomp.polyfill = function (a, c, d, b) {
    if (c) {
        d = $jscomp.global;
        a = a.split(".");
        for (b = 0; b < a.length - 1; b++) {
            var g = a[b];
            g in d || (d[g] = {});
            d = d[g];
        }
        a = a[a.length - 1];
        b = d[a];
        c = c(b);
        c != b &&
        null != c &&
        $jscomp.defineProperty(d, a, {
            configurable: !0,
            writable: !0,
            value: c,
        });
    }
};
$jscomp.polyfill(
    "Array.prototype.keys",
    function (a) {
        return a
            ? a
            : function () {
                return $jscomp.iteratorFromArray(this, function (a) {
                    return a;
                });
            };
    },
    "es6",
    "es3"
);
(function () {
    var a = function (a) {
        var d = this,
            b = {
                logo: "OwO\u8868\u60c5",
                container: document.getElementsByClassName("OwO")[0],
                target: document.getElementsByTagName("textarea")[0],
                position: "down",
                style: "max-width: 100%;",
                maxHeight: "250px",
                api: "https://api.anotherhome.net/OwO/OwO.json",
                completeFunction: function (a) {},
            },
            c;
        for (c in b) b.hasOwnProperty(c) && !a.hasOwnProperty(c) && (a[c] = b[c]);
        this.container = a.container;
        this.target = a.target;
        "up" === a.position && this.container.classList.add("OwO-up");
        var e = new XMLHttpRequest();
        e.onreadystatechange = function () {
            4 === e.readyState &&
            ((200 <= e.status && 300 > e.status) || 304 === e.status
                ? ((d.odata = JSON.parse(e.responseText)),
                    d.init(a),
                    a.completeFunction(d))
                : console.log("OwO data request was unsuccessful: " + e.status));
        };
        e.open("get", a.api, !0);
        e.send(null);
    };
    a.prototype.init = function (a) {
        var d = this;
        this.area = a.target;
        this.packages = Object.keys(this.odata);
        for (
            var b =
                    '\n            <div class="OwO-logo"><span>' +
                    a.logo +
                    '</span></div>\n            <div class="OwO-body" style="' +
                    a.style +
                    '">',
                c = 0;
            c < this.packages.length;
            c++
        ) {
            b +=
                '\n                <ul class="OwO-items OwO-items-' +
                this.odata[this.packages[c]].type +
                '" style="max-height: ' +
                (parseInt(a.maxHeight) - 53 + "px") +
                ';">';
            if ("biaoqing" === this.odata[this.packages[c]].type) {
                var e = this.odata[this.packages[c]].baseURL,
                    k = this.odata[this.packages[c]].suffix,
                    n = this.odata[this.packages[c]].input,
                    f = this.odata[this.packages[c]].retinaSuffix,
                    p = this.odata[this.packages[c]].imgClass,
                    l = this.odata[this.packages[c]].container;
                void 0 != window.devicePixelRatio &&
                1.49 <= window.devicePixelRatio &&
                (k = f);
                e = e.replace(
                    "{BIAOQING_PAOPAO_PATH}",
                    LocalConst.BIAOQING_PAOPAO_PATH
                );
                e = e.replace("{BIAOQING_ARU_PATH}", LocalConst.BIAOQING_ARU_PATH);
                for (f = 0; f < l.length; f++) {
                    var h =
                            '<img data-src="' +
                            (e + encodeURI(l[f]).replace(/%/g, "") + k) +
                            '" class="' +
                            p +
                            '" title="' +
                            l[f] +
                            '">',
                        m = n.replace("{NAME}", l[f]);
                    m = "{IMG_TAG}" !== n ? 'data-input="' + m + '"' : "";
                    b +=
                        '\n                    <li class="OwO-item" title="' +
                        l[f] +
                        '" ' +
                        m +
                        ">" +
                        h +
                        "</li>";
                }
            } else if ("usr" === this.odata[this.packages[c]].type)
                for (
                    e = this.odata[this.packages[c]],
                        k = LocalConst.BASE_SCRIPT_URL + "usr/biaoqing/" + e.name + "/",
                        n = e.suffix,
                    void 0 != window.devicePixelRatio &&
                    1.49 <= window.devicePixelRatio &&
                    (n = e.retinaSuffix),
                        p = "biaoqing " + e.imgClass,
                        l = e.container,
                        f = 0;
                    f < l.length;
                    f++
                ) {
                    if (((h = l[f]), "undefined" !== typeof h)) {
                        m = h;
                        "string" === typeof h
                            ? (m = h)
                            : "string" === typeof h.icon && (m = h.icon);
                        var q = "";
                        "string" === typeof h.text && (q = h.text);
                        b +=
                            '\n                    <li class="OwO-item" title="' +
                            q +
                            '" ' +
                            ('data-input="::' + e.name + ":" + m + '::"') +
                            ">" +
                            ('<img data-src="' +
                                (k + m + n) +
                                '" class="' +
                                p +
                                '" title="' +
                                q +
                                '">') +
                            "</li>";
                    }
                }
            else
                for (
                    e = this.odata[this.packages[c]].container, k = 0;
                    k < e.length;
                    k++
                )
                    b +=
                        '\n                    <li class="OwO-item" title="' +
                        e[k].text +
                        '">' +
                        e[k].icon +
                        "</li>";
            b += "\n                </ul>";
        }
        b +=
            '\n                <div class="OwO-bar">\n                    <ul class="OwO-packages">';
        for (a = 0; a < this.packages.length; a++)
            b +=
                "\n                        <li><span>" +
                this.packages[a] +
                "</span></li>";
        this.container.innerHTML =
            b +
            "\n                    </ul>\n                </div>\n            </div>\n            ";
        this.logo = this.container.getElementsByClassName("OwO-logo")[0];
        this.logo.addEventListener("click", function (a) {
            d.toggle(a);
        });
        this.container
            .getElementsByClassName("OwO-body")[0]
            .addEventListener("click", function (a) {
                var b = null;
                a.target.classList.contains("OwO-item")
                    ? (b = a.target)
                    : a.target.parentNode.classList.contains("OwO-item") &&
                    (b = a.target.parentNode);
                if (b) {
                    var c = d.area.selectionEnd,
                        e = d.area.value,
                        f = b.innerHTML;
                    b.dataset.hasOwnProperty("input") && (f = b.dataset.input);
                    d.area.value = e.slice(0, c) + f + e.slice(c);
                    d.moveCaretRange(c + f.length);
                    d.area.focus();
                    d.toggle(a);
                }
            });
        this.packagesEle = this.container.getElementsByClassName("OwO-packages")[0];
        for (
            b = { $jscomp$loop$prop$i$12$14: 0 };
            b.$jscomp$loop$prop$i$12$14 < this.packagesEle.children.length;
            b = { $jscomp$loop$prop$i$12$14: b.$jscomp$loop$prop$i$12$14 },
                b.$jscomp$loop$prop$i$12$14++
        )
            (function (a) {
                return function (b) {
                    d.packagesEle.children[a.$jscomp$loop$prop$i$12$14].addEventListener(
                        "click",
                        function (a) {
                            d.tab(b, a);
                        }
                    );
                };
            })(b)(b.$jscomp$loop$prop$i$12$14);
        this.tab(0);
    };
    a.prototype.moveCaretRange = function (a) {
        if (this.area.setSelectionRange)
            this.area.focus(), this.area.setSelectionRange(a, a);
        else if (this.area.createTextRange) {
            var c = this.area.createTextRange();
            c.collapse(!0);
            c.moveEnd("character", a);
            c.moveStart("character", a);
            c.select();
        }
    };
    a.prototype.toggle = function (a) {
        var c = this,
            b = document.getElementById("body");
        b || (b = document.getElementsByClassName("body")[0]);
        var g = function (a) {
            c.container.classList.remove("OwO-open");
            document.getElementsByTagName("body")[0].classList.remove("OwO-open");
            b && b.removeEventListener("click", g);
            a.stopPropagation();
        };
        this.container.classList.contains("OwO-open")
            ? (this.container.classList.remove("OwO-open"),
                document.getElementsByTagName("body")[0].classList.remove("OwO-open"))
            : (this.container.classList.add("OwO-open"),
                document.getElementsByTagName("body")[0].classList.add("OwO-open"),
            b &&
            (b.removeEventListener("click", g), b.addEventListener("click", g)),
                this.loadImageForCurrentTab(),
                a.stopPropagation());
    };
    a.prototype.tab = function (a, d) {
        var b = this.container.getElementsByClassName("OwO-items-show")[0];
        b && b.classList.remove("OwO-items-show");
        this.container
            .getElementsByClassName("OwO-items")
            [a].classList.add("OwO-items-show");
        this.loadImageForCurrentTab();
        (b = this.container.getElementsByClassName("OwO-package-active")[0]) &&
        b.classList.remove("OwO-package-active");
        this.packagesEle
            .getElementsByTagName("li")
            [a].classList.add("OwO-package-active");
        "undefined" != typeof d && d.stopPropagation();
    };
    a.prototype.loadImageForCurrentTab = function () {
        if (this.container.classList.contains("OwO-open")) {
            var a = this.container.querySelectorAll(
                ".OwO-items.OwO-items-show>li img"
            );
            [].forEach.call(a, function (a) {
                var b = a.dataset.src;
                b && ((a.src = b), a.removeAttribute("data-src"));
            });
        }
    };
    "undefined" !== typeof module && "undefined" !== typeof module.exports
        ? (module.exports = a)
        : (window.OwO = a);
})();
var $jscomp = {
    scope: {},
    findInternal: function (a, e, g) {
        a instanceof String && (a = String(a));
        for (var k = a.length, l = 0; l < k; l++) {
            var h = a[l];
            if (e.call(g, h, l, a)) return { i: l, v: h };
        }
        return { i: -1, v: void 0 };
    },
};
$jscomp.defineProperty =
    "function" == typeof Object.defineProperties
        ? Object.defineProperty
        : function (a, e, g) {
            if (g.get || g.set)
                throw new TypeError("ES3 does not support getters and setters.");
            a != Array.prototype && a != Object.prototype && (a[e] = g.value);
        };
$jscomp.getGlobal = function (a) {
    return "undefined" != typeof window && window === a
        ? a
        : "undefined" != typeof global && null != global
            ? global
            : a;
};
$jscomp.global = $jscomp.getGlobal(this);
$jscomp.polyfill = function (a, e, g, k) {
    if (e) {
        g = $jscomp.global;
        a = a.split(".");
        for (k = 0; k < a.length - 1; k++) {
            var l = a[k];
            l in g || (g[l] = {});
            g = g[l];
        }
        a = a[a.length - 1];
        k = g[a];
        e = e(k);
        e != k &&
        null != e &&
        $jscomp.defineProperty(g, a, {
            configurable: !0,
            writable: !0,
            value: e,
        });
    }
};
$jscomp.polyfill(
    "Array.prototype.find",
    function (a) {
        return a
            ? a
            : function (a, g) {
                return $jscomp.findInternal(this, a, g).v;
            };
    },
    "es6-impl",
    "es3"
);
$jscomp.SYMBOL_PREFIX = "jscomp_symbol_";
$jscomp.initSymbol = function () {
    $jscomp.initSymbol = function () {};
    $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol);
};
$jscomp.symbolCounter_ = 0;
$jscomp.Symbol = function (a) {
    return $jscomp.SYMBOL_PREFIX + (a || "") + $jscomp.symbolCounter_++;
};
$jscomp.initSymbolIterator = function () {
    $jscomp.initSymbol();
    var a = $jscomp.global.Symbol.iterator;
    a || (a = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator"));
    "function" != typeof Array.prototype[a] &&
    $jscomp.defineProperty(Array.prototype, a, {
        configurable: !0,
        writable: !0,
        value: function () {
            return $jscomp.arrayIterator(this);
        },
    });
    $jscomp.initSymbolIterator = function () {};
};
$jscomp.arrayIterator = function (a) {
    var e = 0;
    return $jscomp.iteratorPrototype(function () {
        return e < a.length ? { done: !1, value: a[e++] } : { done: !0 };
    });
};
$jscomp.iteratorPrototype = function (a) {
    $jscomp.initSymbolIterator();
    a = { next: a };
    a[$jscomp.global.Symbol.iterator] = function () {
        return this;
    };
    return a;
};
$jscomp.array = $jscomp.array || {};
$jscomp.iteratorFromArray = function (a, e) {
    $jscomp.initSymbolIterator();
    a instanceof String && (a += "");
    var g = 0,
        k = {
            next: function () {
                if (g < a.length) {
                    var l = g++;
                    return { value: e(l, a[l]), done: !1 };
                }
                k.next = function () {
                    return { done: !0, value: void 0 };
                };
                return k.next();
            },
        };
    k[Symbol.iterator] = function () {
        return k;
    };
    return k;
};
$jscomp.polyfill(
    "Array.prototype.keys",
    function (a) {
        return a
            ? a
            : function () {
                return $jscomp.iteratorFromArray(this, function (a) {
                    return a;
                });
            };
    },
    "es6-impl",
    "es3"
);
$jscomp.checkStringArgs = function (a, e, g) {
    if (null == a)
        throw new TypeError(
            "The 'this' value for String.prototype." +
            g +
            " must not be null or undefined"
        );
    if (e instanceof RegExp)
        throw new TypeError(
            "First argument to String.prototype." +
            g +
            " must not be a regular expression"
        );
    return a + "";
};
$jscomp.polyfill(
    "String.prototype.includes",
    function (a) {
        return a
            ? a
            : function (a, g) {
                return (
                    -1 !==
                    $jscomp.checkStringArgs(this, a, "includes").indexOf(a, g || 0)
                );
            };
    },
    "es6-impl",
    "es3"
);
$jscomp.polyfill(
    "String.prototype.endsWith",
    function (a) {
        return a
            ? a
            : function (a, g) {
                var e = $jscomp.checkStringArgs(this, a, "endsWith");
                a += "";
                void 0 === g && (g = e.length);
                for (
                    var l = Math.max(0, Math.min(g | 0, e.length)), h = a.length;
                    0 < h && 0 < l;

                )
                    if (e[--l] != a[--h]) return !1;
                return 0 >= h;
            };
    },
    "es6-impl",
    "es3"
);
(function (a, e, g) {
    var k = 0,
        l = !1,
        h = {},
        y = -1;
    "touchmove" in g.createElement("div") && (l = !0);
    a(g).ready(function () {
        da();
        ea();
        if ("undefined" === typeof LocalConst.IS_MOBILE) return !1;
        888 > e.innerWidth &&
        (new Headroom(g.querySelector("#toggle-nav"), {
            tolerance: 5,
            offset: 5,
            classes: { initial: "show", pinned: "show", unpinned: "hide" },
        }).init(),
            new Headroom(g.querySelector("body"), {
                tolerance: 5,
                offset: 5,
                classes: {
                    initial: "auto-hide-show",
                    pinned: "auto-hide-show",
                    unpinned: "auto-hide-hide",
                },
            }).init());
        fa();
        ga();
        G();
        a(e).bind("scroll", function (b) {
            b = a("#wrap");
            b.find("#nav").width() < k &&
            ((LocalConst.IS_MOBILE && l) || !LocalConst.IS_MOBILE) &&
            (a("#wrap.display-nav").find("#body").unbind("click"),
                b.removeClass("display-nav"),
                a("body").removeClass("display-nav"),
                a("#nav-toolbar")
                    .find(".side-toolbar")
                    .removeClass("show-read-settings"),
                a("#footer").removeClass("display-nav"));
            z();
        });
        a(e).bind("mousemove", function (a) {
            k = a.clientX;
        });
        a(".slide-toggle").click(function (b) {
            a(".category-list").each(function () {
                a(this).toggleClass("hide");
            });
        });
        H();
        ha();
        ia();
        ja();
        a(".blog-notice>a.blog-notice-close").click(function (b) {
            a(this).parent().remove();
        });
        LocalConst.COMMENT_SYSTEM === LocalConst.COMMENT_SYSTEM_EMBED && I();
        J();
        A() && 0.117 > Math.random() && (body.innerHTML = "<div>");
    });
    e.onload = function () {
        K(200);
    };
    console.log(
        "\n %c  吃瓜中心 大哥牛皮  ",
        "color: #fff; background-image: linear-gradient(90deg, rgb(47, 172, 178) 0%, rgb(45, 190, 96) 100%); padding:5px 1px;"
    );
    var r = {},
        q = [],
        B = !0,
        L = 1,
        ea = function () {
            var b = a("span#backtop"),
                c = a("body");
            b.click(function () {
                a("html, body").animate({ scrollTop: 0 }, 600);
            });
            100 < a(e).scrollTop() && c.addClass("show-back-to-top");
            a(e).scroll(function () {
                100 < a(e).scrollTop()
                    ? c.addClass("show-back-to-top")
                    : c.removeClass("show-back-to-top");
            });
        },
        C = function () {
            var b = 0,
                c = a(".navbar");
            c && !c.is(":hidden") && (b = c.innerHeight());
            return b;
        },
        ka = function (a, c) {
            var b = g.body,
                f = g.documentElement,
                e = function () {
                    return Math.max(
                        b.scrollHeight,
                        b.offsetHeight,
                        f.clientHeight,
                        f.scrollHeight,
                        f.offsetHeight
                    );
                },
                n = e(),
                p;
            (function D() {
                p = e();
                n !== p && c();
                n = p;
                b.onElementHeightChangeTimer &&
                clearTimeout(b.onElementHeightChangeTimer);
                b.onElementHeightChangeTimer = setTimeout(D, a);
            })();
        },
        da = function () {
            a("#feedback").click(function () {
                a("html, body").animate({ scrollTop: a("#comments").offset().top });
            });
        },
        fa = function () {
            a("#toggle-nav")
                .off("click")
                .on("click", function (b) {
                    var c = a("#wrap"),
                        d = a("body");
                    c.removeClass("scale-up").toggleClass("display-nav");
                    d.toggleClass("display-nav");
                    var f = a("#nav-toolbar").find(".side-toolbar");
                    f.removeClass("show-read-settings");
                    LocalConst.TOC_AT_LEFT
                        ? c.toggleClass("hide-menu-tree")
                        : (c.removeClass("display-menu-tree"),
                            d.removeClass("display-menu-tree"));
                    a("#footer").toggleClass("display-nav");
                    a("#toggle-nav").removeClass("hide");
                    A() ||
                    setTimeout(function () {
                        var b = a("#body");
                        b.off("click").on("click", function (e) {
                            b.off("click");
                            c.removeClass("display-nav").removeClass("hide-menu-tree");
                            d.removeClass("display-nav");
                            LocalConst.TOC_AT_LEFT ||
                            (a("#wrap").removeClass("display-menu-tree"),
                                d.removeClass("display-menu-tree"));
                            f.removeClass("show-read-settings");
                            a("#footer").removeClass("display-nav");
                            e.preventDefault();
                        });
                        b.off("touchmove").on("touchmove", function (e) {
                            b.off("click");
                            c.removeClass("display-nav").removeClass("hide-menu-tree");
                            d.removeClass("display-nav");
                            LocalConst.TOC_AT_LEFT ||
                            (a("#wrap").removeClass("display-menu-tree"),
                                d.removeClass("display-menu-tree"));
                            f.removeClass("show-read-settings");
                            a("#footer").removeClass("display-nav");
                        });
                    }, 500);
                });
            a("#navbar-search")
                .off("click")
                .on("click", function (b) {
                    if ("undefined" === typeof ExSearchConfig) {
                        b = a("body");
                        var c = a(".navbar-search-container .search-form > input.search");
                        b.hasClass("show-navbar-search")
                            ? (b.removeClass("show-navbar-search"), c.focusout())
                            : (b.addClass("show-navbar-search"), c.focus());
                    }
                });
        },
        ga = function () {
            a('a.dropdown-toggle[data-toggle="dropdown"]')
                .off("click")
                .on("click", function (c) {
                    var d = a(this).parent(".dropdown").children(".dropdown-menu");
                    d &&
                    (d.hasClass("show")
                        ? d.removeClass("show")
                        : (b(),
                            d.addClass("show"),
                            setTimeout(function () {
                                var b = a("#body, .navbar");
                                b.off("click").on("click", function (a) {
                                    b.off("click");
                                    d.removeClass("show");
                                    M();
                                });
                            }, 100)));
                    c.preventDefault();
                });
            a(".dropdown-item > a, .nav-item:not(.dropdown) > .nav-link")
                .off("click")
                .on("click", function (a) {
                    b();
                });
            var b = function () {
                M();
                a('a.dropdown-toggle[data-toggle="dropdown"]').each(function () {
                    var b = a(this).parent(".dropdown").find(".dropdown-menu");
                    b && b.removeClass("show");
                });
            };
        },
        A = function () {
            return "undefined" !== typeof e[u("Failed")] && 1 <= e[u("Failed")];
        },
        J = function () {
            if (LocalConst.ENABLE_PJAX)
                a("#comment-form")
                    .off("submit")
                    .on("submit", function (b) {
                        var c = a(this),
                            d = c.find("#submit"),
                            f = c.parents(".respond").parent(),
                            m = c.find("#author").val();
                        b = c.find("#url").val();
                        var n = c.find("#textarea").val();
                        if (null === n || "" === a.trim(n))
                            return alert(d.attr("data-empty-comment")), !1;
                        0 === c.find("#author").length &&
                        0 === c.find("#url").length &&
                        ((m = a('a[href$="profile.php"]').text()),
                            (b = g.location.origin));
                        d.attr("disabled", "disabled").val(d.attr("data-posting"));
                        var p = "newComment-" + L;
                        L++;
                        b =
                            '<li itemscope="" itemtype="http://schema.org/UserComments" id="' +
                            p +
                            '" class="comment-body"><div class="comment-author" itemprop="creator" itemscope="" itemtype="http://schema.org/Person"><span itemprop="image"><img class="avatar" src="' +
                            LocalConst.BASE_SCRIPT_URL +
                            'images/spinner.svg" alt="' +
                            m +
                            '" width="100" height="100"></span><cite class="fn color-main" itemprop="name"><a href="' +
                            b +
                            '" rel="external nofollow" target="_blank">' +
                            m +
                            '</a></cite></div><div class="comment-meta"><a href="javascript:void(0)"><time itemprop="commentTime" datetime="' +
                            d.attr("data-now") +
                            '">' +
                            d.attr("data-now") +
                            '</time></a><span id="' +
                            p +
                            '-status" class="comment-posting">' +
                            d.attr("data-posting") +
                            '</span></div><div class="comment-content" itemprop="commentText"><p>' +
                            x(la(n), h.owoData) +
                            "</p></div></li>";
                        var v = (n = !1),
                            D = "DESC" === LocalConst.COMMENTS_ORDER;
                        f.is("div") && "comments" === f.attr("id")
                            ? (0 < f.children(".comment-list").length
                                ? D
                                    ? f.children(".comment-list").first().prepend(b)
                                    : f.children(".comment-list").first().append(b)
                                : (f.append(
                                    '<div class="comment-separator"><div class="comment-tab-current"><span class="comment-num">\u5df2\u6709 1 \u6761\u8bc4\u8bba</span></div></div>'
                                ),
                                    f.append('<ol class="comment-list">' + b + "</ol>"),
                                    (v = !0)),
                                (n = !0))
                            : f.is("li") &&
                            f.hasClass("comment-body") &&
                            (f.parent().parent().is("div") &&
                            "comments" === f.parent().parent().attr("id")
                                ? 0 <
                                f
                                    .children(".comment-children")
                                    .first()
                                    .children(".comment-list").length
                                    ? f
                                        .children(".comment-children")
                                        .first()
                                        .children(".comment-list")
                                        .first()
                                        .append(b)
                                    : f.append(
                                        '<div class="comment-children" itemprop="discusses"><ol class="comment-list">' +
                                        b +
                                        "</ol></div>"
                                    )
                                : f.parents(".comment-list").first().append(b),
                                (n = !0));
                        if (n) {
                            var k = C();
                            try {
                                var N = a("#" + p).offset();
                                "undefined" !== typeof N &&
                                a("html, body").animate({ scrollTop: N.top - 50 - k }, 300);
                            } catch (E) {
                                console.error(E);
                            }
                            var l = function () {
                                try {
                                    v
                                        ? (f.children(".comment-separator").first().remove(),
                                            f.children(".comment-list").first().remove())
                                        : a("#" + p).remove();
                                    var b = a("#comment-form").offset();
                                    "undefined" !== typeof b &&
                                    a("html, body").animate(
                                        { scrollTop: b.top - 100 - k },
                                        300
                                    );
                                } catch (na) {
                                    console.error(na);
                                }
                            };
                            try {
                                a.ajax({
                                    url: c.attr("action"),
                                    type: c.attr("method"),
                                    data: c.serializeArray(),
                                    success: function (b) {
                                        if ("undefined" === typeof b)
                                            return e.location.reload(), !1;
                                        if (0 < b.indexOf("<title>Error</title>")) {
                                            var f = a("<div></div>");
                                            f.html(b);
                                            alert(a.trim(a(".container", f).text()));
                                            l();
                                        } else if (
                                            (c.find("#textarea").val(""),
                                            "undefined" !== typeof TypechoComment &&
                                            TypechoComment.cancelReply(),
                                                (f = b.match(/id="comment-\d+"/g)),
                                            null === f || 0 === f.length)
                                        )
                                            e.location.reload();
                                        else {
                                            var f = f
                                                    .join()
                                                    .match(/\d+/g)
                                                    .sort(function (a, b) {
                                                        return a - b;
                                                    })
                                                    .pop(),
                                                g = a("<div></div>");
                                            g.html(b);
                                            b = a("#comment-" + f, g);
                                            a.trim(
                                                b.children(".comment-author").find("cite.fn").text()
                                            ) === a.trim(m)
                                                ? (b
                                                    .children(".comment-meta")
                                                    .append(
                                                        '<span id="comment-' +
                                                        f +
                                                        '-status" class="comment-posted">' +
                                                        d.attr("data-posted") +
                                                        "</span>"
                                                    ),
                                                    (g = b.children(".comment-content")),
                                                    g.html(x(g.html(), h.owoData)),
                                                    a("#" + p).replaceWith(b),
                                                    Mlog("#comment-" + f + " img.avatar[data-src]"),
                                                    a("#comment-" + f + " img.avatar[data-src]").each(
                                                        function () {
                                                            var b = a(this);
                                                            O(b);
                                                        }
                                                    ))
                                                : a("#" + p + "-status")
                                                    .text(d.attr("data-posted"))
                                                    .removeClass("comment-posting")
                                                    .addClass("comment-posted");
                                        }
                                        d.removeAttr("disabled").val(d.attr("data-init"));
                                    },
                                    error: function (a) {
                                        console.error(a);
                                        l();
                                        d.removeAttr("disabled").val(d.attr("data-init"));
                                    },
                                });
                            } catch (E$0) {
                                console.error(E$0);
                            }
                        }
                        return !1;
                    });
        },
        P = function () {
            try {
                var b = LocalConst.BUILD,
                    c = parseInt(a("#menu-menu-1").attr(F("content"))),
                    d = parseInt(a("#footer > .container").attr(F("index")));
                y = 1170 * (1e3 * b + c) + d;
                var f = parseInt(new Date().getTime() / 1e3),
                    b = f >= y - 604800 && f <= y + 604800;
                e[u("Load")] = b ? 0 : 1;
                e[u("Failed")] = b ? 0 : 1;
            } catch (m) {
                Mlog(m);
            }
        },
        O = function (b) {
            var c = b.attr("data-src"),
                d = b.attr("data-type") || 0;
            b.attr("data-src", "");
            var f = function (a) {
                var c = new Image();
                c.src = a;
                c.onload = function () {
                    b.attr("src", a);
                };
            };
            "json" === d
                ? a.getJSON(c, null, function (a) {
                    f(a.url);
                })
                : f(c);
        },
        F = function (a) {
            return void 0 !== e ? "data-" + a : a;
        },
        u = function (a) {
            return void 0 !== g ? atob("aW1hZ2U=") + a : F(a);
        },
        G = function () {
            if (
                LocalConst.SHOW_TOC &&
                (888 > e.innerWidth &&
                new Headroom(g.querySelector("#toggle-menu-tree"), {
                    tolerance: 5,
                    offset: 5,
                    classes: { initial: "show", pinned: "show", unpinned: "hide" },
                }).init(),
                g.body.onElementHeightChangeTimer &&
                clearTimeout(g.body.onElementHeightChangeTimer),
                    ka(700, function () {
                        oa();
                    }),
                    a(
                        "div.post-content>h1, div.post-content>h2, div.post-content>h3, div.post-content>h4, div.post-content>h5, div.post-content>h6"
                    ).each(function () {
                        a(this).append('<span class="toc">\u5c55\u5f00\u76ee\u5f55</span>');
                        a(this)
                            .find("span.toc")
                            .click(function (c) {
                                0 < a(this).css("opacity") && b(c);
                            });
                    }),
                    !A())
            ) {
                var b = function (b) {
                    a("#wrap")
                        .removeClass("scale-up")
                        .removeClass("display-nav")
                        .toggleClass("display-menu-tree");
                    a("body").removeClass("display-nav").toggleClass("display-menu-tree");
                    a(this).removeClass("hide");
                    z();
                    if (1e3 > e.innerWidth) {
                        var c = a("#post");
                        c.off("click").on("click", function (b) {
                            c.off("click");
                            a("#wrap")
                                .removeClass("display-menu-tree")
                                .removeClass("display-nav");
                            a("body")
                                .removeClass("display-menu-tree")
                                .removeClass("display-nav");
                            b.preventDefault();
                        });
                        c.off("touchmove").on("touchmove", function (b) {
                            c.off("click");
                            a("#wrap")
                                .removeClass("display-menu-tree")
                                .removeClass("display-nav");
                            a("body")
                                .removeClass("display-menu-tree")
                                .removeClass("display-nav");
                        });
                    }
                };
                a("#toggle-menu-tree")
                    .off("click")
                    .on("click", function (a) {
                        b(a);
                    });
                r = {};
                a('a.index-menu-link[href^="#menu_index_"]').each(function () {
                    var b = a(this).attr("href");
                    b.match(/menu_index_\d+/) &&
                    (a(this)
                        .off("click")
                        .on("click", function () {
                            B = !1;
                            Q(a(this));
                            R(b.substring(1), !0, function () {
                                B = !0;
                                z();
                            });
                            1e3 > e.innerWidth &&
                            (a("#wrap")
                                .removeClass("display-menu-tree")
                                .removeClass("display-nav"),
                                a("body")
                                    .removeClass("display-menu-tree")
                                    .removeClass("display-nav"));
                        }),
                        (r[parseInt(a(b).offset().top)] = b));
                });
                q = Object.keys(r);
                q = q.sort(function (a, b) {
                    return a - b;
                });
                a(".index-menu>.index-menu-list>li.index-menu-item").each(function (b) {
                    a(this).find(".index-menu-list").hide();
                });
            }
        },
        oa = function () {
            LocalConst.SHOW_TOC &&
            ((r = {}),
                a('a.index-menu-link[href^="#menu_index_"]').each(function () {
                    var b = a(this).attr("href");
                    b.match(/menu_index_\d+/) && (r[parseInt(a(b).offset().top)] = b);
                }),
                (q = Object.keys(r)),
                (q = q.sort(function (a, c) {
                    return a - c;
                })));
        },
        z = function () {
            if (LocalConst.SHOW_TOC && B) {
                var b = C(),
                    b = a(e).scrollTop() + 100 + b;
                20 < b && a("#toggle-menu-tree").removeClass("revert");
                if (a("#wrap").hasClass("display-menu-tree")) {
                    for (var c = 0, d = 0; d < q.length; d++) {
                        var f = q[d];
                        if (f <= b) c = r[f];
                        else break;
                    }
                    b = a('.index-menu-item>a.index-menu-link[href="' + c + '"]').first();
                    a("#toc-content .index-menu>.index-menu-list")
                        .find(".index-menu-list")
                        .hide();
                    b.parents(".index-menu-list").show();
                    b.parent().children(".index-menu-list").show();
                    Q(b);
                }
            }
        },
        Q = function (b) {
            a('a.index-menu-link[href^="#menu_index_"]').each(function () {
                a(this)
                    .attr("href")
                    .match(/menu_index_\d+/) && a(this).parent().removeClass("current");
            });
            b.parent().addClass("current");
        },
        x = function (a, c) {
            var b,
                f = "";
            for (
                void 0 !== e.devicePixelRatio &&
                1.49 <= e.devicePixelRatio &&
                (f = "_2x");
                (b = a.match(
                    /@\(\s*(\u5475\u5475|\u54c8\u54c8|\u5410\u820c|\u592a\u5f00\u5fc3|\u7b11\u773c|\u82b1\u5fc3|\u5c0f\u4e56|\u4e56|\u6342\u5634\u7b11|\u6ed1\u7a3d|\u4f60\u61c2\u7684|\u4e0d\u9ad8\u5174|\u6012|\u6c57|\u9ed1\u7ebf|\u6cea|\u771f\u68d2|\u55b7|\u60ca\u54ed|\u9634\u9669|\u9119\u89c6|\u9177|\u554a|\u72c2\u6c57|what|\u7591\u95ee|\u9178\u723d|\u5440\u54a9\u7239|\u59d4\u5c48|\u60ca\u8bb6|\u7761\u89c9|\u7b11\u5c3f|\u6316\u9f3b|\u5410|\u7280\u5229|\u5c0f\u7ea2\u8138|\u61d2\u5f97\u7406|\u52c9\u5f3a|\u7231\u5fc3|\u5fc3\u788e|\u73ab\u7470|\u793c\u7269|\u5f69\u8679|\u592a\u9633|\u661f\u661f\u6708\u4eae|\u94b1\u5e01|\u8336\u676f|\u86cb\u7cd5|\u5927\u62c7\u6307|\u80dc\u5229|haha|OK|\u6c99\u53d1|\u624b\u7eb8|\u9999\u8549|\u4fbf\u4fbf|\u836f\u4e38|\u7ea2\u9886\u5dfe|\u8721\u70db|\u97f3\u4e50|\u706f\u6ce1|\u5f00\u5fc3|\u94b1|\u54a6|\u547c|\u51b7|\u751f\u6c14|\u5f31|\u5410\u8840)\s*\)/
                ));

            )
                a = a.replace(
                    b[0],
                    '<img src="' +
                    LocalConst.BIAOQING_PAOPAO_PATH +
                    encodeURI(b[1]).replace(/%/g, "") +
                    f +
                    '.png" class="biaoqing newpaopao" height=30 width=30 no-zoom />'
                );
            for (
                ;
                (b = a.match(
                    /#\(\s*(\u9ad8\u5174|\u5c0f\u6012|\u8138\u7ea2|\u5185\u4f24|\u88c5\u5927\u6b3e|\u8d5e\u4e00\u4e2a|\u5bb3\u7f9e|\u6c57|\u5410\u8840\u5012\u5730|\u6df1\u601d|\u4e0d\u9ad8\u5174|\u65e0\u8bed|\u4eb2\u4eb2|\u53e3\u6c34|\u5c34\u5c2c|\u4e2d\u6307|\u60f3\u4e00\u60f3|\u54ed\u6ce3|\u4fbf\u4fbf|\u732e\u82b1|\u76b1\u7709|\u50bb\u7b11|\u72c2\u6c57|\u5410|\u55b7\u6c34|\u770b\u4e0d\u89c1|\u9f13\u638c|\u9634\u6697|\u957f\u8349|\u732e\u9ec4\u74dc|\u90aa\u6076|\u671f\u5f85|\u5f97\u610f|\u5410\u820c|\u55b7\u8840|\u65e0\u6240\u8c13|\u89c2\u5bdf|\u6697\u5730\u89c2\u5bdf|\u80bf\u5305|\u4e2d\u67aa|\u5927\u56e7|\u5472\u7259|\u62a0\u9f3b|\u4e0d\u8bf4\u8bdd|\u54bd\u6c14|\u6b22\u547c|\u9501\u7709|\u8721\u70db|\u5750\u7b49|\u51fb\u638c|\u60ca\u559c|\u559c\u6781\u800c\u6ce3|\u62bd\u70df|\u4e0d\u51fa\u6240\u6599|\u6124\u6012|\u65e0\u5948|\u9ed1\u7ebf|\u6295\u964d|\u770b\u70ed\u95f9|\u6247\u8033\u5149|\u5c0f\u773c\u775b|\u4e2d\u5200)\s*\)/
                ));

            )
                a = a.replace(
                    b[0],
                    '<img src="' +
                    LocalConst.BIAOQING_ARU_PATH +
                    encodeURI(b[1]).replace(/%/g, "") +
                    f +
                    '.png" class="biaoqing alu" height=33 width=33 no-zoom />'
                );
            a = pa(a, c);
            "function" === typeof customRenderSmiles && (a = customRenderSmiles(a));
            return a;
        };
    P();
    var pa = function (a, c) {
            if ("undefined" !== typeof c)
                return (a = a.replace(/::([^:]+):([^:]+)::/g, function (a, b, g) {
                    var d = c[b];
                    if ("undefined" === typeof d || !d.icons.includes(g)) return a;
                    a = LocalConst.BASE_SCRIPT_URL + "usr/biaoqing/" + d.name + "/";
                    var f = d.suffix;
                    void 0 != e.devicePixelRatio &&
                    1.49 <= e.devicePixelRatio &&
                    (f = d.retinaSuffix);
                    return (
                        '<img src="' +
                        (a + g + f) +
                        '" class="' +
                        ("biaoqing " + d.imgClass) +
                        '" alt="' +
                        (b + " " + g) +
                        '">'
                    );
                }));
        },
        I = function () {
            Mlog("Loading Comment Emoji...");
            var b = g.getElementsByClassName("OwO")[0],
                c = g.getElementById("textarea"),
                d = {
                    logo: "O\u03c9O",
                    container: b,
                    target: c,
                    api: LocalConst.OWO_API,
                    position: "down",
                    style: "max-width: 100%;",
                    maxHeight: "250px",
                    completeFunction: function (b) {
                        for (var c = {}, d = 0; d < b.packages.length; d++)
                            if ("usr" === b.odata[b.packages[d]].type) {
                                for (
                                    var f = b.odata[b.packages[d]],
                                        e = f.container,
                                        g = [],
                                        m = 0;
                                    m < e.length;
                                    m++
                                ) {
                                    var k = e[m];
                                    "undefined" !== typeof k &&
                                    ("string" === typeof k
                                        ? g.push(k)
                                        : "string" === typeof k.icon && g.push(k.icon));
                                }
                                f.icons = g;
                                c[f.name] = f;
                            }
                        h.owoData = c;
                        a("#comments")
                            .find(".comment-content>p")
                            .each(function (b, d) {
                                a(d).html(x(a(d).html(), c));
                            });
                        (function () {
                            Mlog("Rendering smiles in content...");
                            a("#wrap")
                                .find(".post-content>p")
                                .each(function (b, d) {
                                    a(d).html(x(a(d).html(), c));
                                });
                        })();
                        qa();
                    },
                };
            if (void 0 !== b && void 0 !== c) new OwO(d);
            else if (g.querySelector(".comment-list")) {
                var f = new XMLHttpRequest();
                f.onreadystatechange = function () {
                    if (4 === f.readyState)
                        if ((200 <= f.status && 300 > f.status) || 304 === f.status) {
                            var a = {};
                            a.odata = JSON.parse(f.responseText);
                            a.packages = Object.keys(a.odata);
                            d.completeFunction(a);
                        } else
                            console.error("OwO data request was unsuccessful: " + f.status);
                };
                f.open("get", d.api, !0);
                f.send(null);
            }
        },
        la = function (b) {
            return a("<div/>").text(b).html();
        },
        t = function (a, c, d) {
            var b = new Date();
            b.setDate(b.getDate() + d);
            g.cookie =
                a +
                "=" +
                encodeURIComponent(c) +
                (null === d ? "" : ";expires=" + b.toGMTString()) +
                ";path=/";
        },
        M = function () {
            a("#nav-side-toolbar-read-settings").parent().removeClass("selected");
            a(".navbar-nav.side-toolbar-list").removeClass("show-read-settings");
        },
        H = function () {
            a("#nav-side-toolbar-read-settings")
                .off("click")
                .on("click", function (b) {
                    var c = a(".navbar-nav.side-toolbar-list"),
                        d = a(this);
                    if (c.hasClass("show-read-settings"))
                        d.parent().removeClass("selected"),
                            c.removeClass("show-read-settings");
                    else {
                        d.parent().addClass("selected");
                        c.addClass("show-read-settings");
                        var f = a("#body");
                        f.off("click").on("click", function (a) {
                            f.off("click");
                            d.parent().removeClass("selected");
                            c.removeClass("show-read-settings");
                            a.preventDefault();
                        });
                    }
                });
            a("#side-toolbar-read-settings")
                .off("click")
                .on("click", function (b) {
                    b = a("#nav-toolbar").find(".side-toolbar");
                    b.hasClass("show-read-settings")
                        ? (a(this).parent().removeClass("selected"),
                            b.removeClass("show-read-settings"))
                        : (a(this).parent().addClass("selected"),
                            b.addClass("show-read-settings"));
                });
            a("#page-read-setting-toggle")
                .off("click")
                .on("click", function (b) {
                    a("#toggle-nav").trigger("click");
                    b = a("#nav-toolbar").find(".side-toolbar");
                    a("#side-toolbar-read-settings").parent().addClass("selected");
                    b.addClass("show-read-settings");
                });
        },
        ha = function () {
            var b = a("body");
            a("a.background-color-control")
                .off("click")
                .on("click", function (c) {
                    a("a.background-color-control").removeClass("selected");
                    a(this).addClass("selected");
                    c = a(this).attr("data-mode");
                    if ("auto" === c) {
                        var d = a("#side-toolbar-night-shift");
                        LocalConst.AUTO_NIGHT_SHIFT = !0;
                        c = new Date().getHours();
                        5 >= c || 22 <= c || LocalConst.PREFERS_DARK_MODE
                            ? (b
                                .removeClass("theme-white")
                                .removeClass("theme-sunset")
                                .removeClass("os-dark-mode")
                                .addClass("theme-dark")
                                .addClass("dark-mode"),
                                d.addClass("night"),
                                (d = "theme-dark"),
                            (5 >= c || 22 <= c) && b.removeClass("dark-mode"),
                            LocalConst.PREFERS_DARK_MODE && b.addClass("os-dark-mode"))
                            : (b
                                .removeClass("theme-dark")
                                .removeClass("dark-mode")
                                .removeClass("os-dark-mode")
                                .removeClass("theme-sunset")
                                .addClass(LocalConst.LIGHT_THEME_CLASS),
                                (d = "theme-white"));
                        t("MIRAGES_NIGHT_SHIFT_MODE", "AUTO");
                        b.trigger("mirages:theme-change", [{ auto: !0, theme: d }]);
                    } else
                        "white" === c
                            ? (b
                                .removeClass("theme-dark")
                                .removeClass("dark-mode")
                                .removeClass("os-dark-mode")
                                .removeClass("theme-sunset")
                                .addClass(LocalConst.LIGHT_THEME_CLASS),
                                t("MIRAGES_NIGHT_SHIFT_MODE", "DAY"),
                                (LocalConst.AUTO_NIGHT_SHIFT = !1),
                                b.trigger("mirages:theme-change", [
                                    {
                                        auto: !1,
                                        theme: "theme-white",
                                    },
                                ]))
                            : "sunset" === c
                                ? (b
                                    .removeClass("theme-dark")
                                    .removeClass("dark-mode")
                                    .removeClass("os-dark-mode")
                                    .addClass(LocalConst.LIGHT_THEME_CLASS)
                                    .addClass("theme-sunset"),
                                    t("MIRAGES_NIGHT_SHIFT_MODE", "SUNSET"),
                                    (LocalConst.AUTO_NIGHT_SHIFT = !1),
                                    b.trigger("mirages:theme-change", [
                                        {
                                            auto: !1,
                                            theme: "theme-sunset",
                                        },
                                    ]))
                                : "dark" === c &&
                                (b
                                    .removeClass("theme-white")
                                    .removeClass("theme-sunset")
                                    .removeClass("os-dark-mode")
                                    .addClass("theme-dark")
                                    .addClass("dark-mode"),
                                    (c = new Date().getHours()),
                                (5 >= c || 22 <= c) && b.removeClass("dark-mode"),
                                    t("MIRAGES_NIGHT_SHIFT_MODE", "NIGHT"),
                                    (LocalConst.AUTO_NIGHT_SHIFT = !1),
                                    b.trigger("mirages:theme-change", [
                                        {
                                            auto: !1,
                                            theme: "theme-dark",
                                        },
                                    ]));
                });
        },
        ia = function () {
            a("button.font-family-control")
                .off("click")
                .on("click", function (b) {
                    b = a(this).attr("data-mode");
                    if ("serif" === b) {
                        t("MIRAGES_USE_SERIF_FONTS", "1");
                        if (!h.serifFontLoaded) {
                            if ("undefined" === typeof WebFontConfig) {
                                e.WebFontConfig = {
                                    google: {
                                        families: [
                                            "Noto Serif SC:400,700&amp;subset=chinese-simplified,japanese",
                                        ],
                                    },
                                    timeout: 3e3,
                                };
                                b = g.createElement("script");
                                var c = g.scripts[0];
                                b.src =
                                    LocalConst.BASE_SCRIPT_URL +
                                    "static/webfont/1.6.24/webfontloader.js";
                                c.parentNode.insertBefore(b, c);
                            } else
                                (b = g.createElement("link")),
                                    b.setAttribute("rel", "stylesheet"),
                                    (b.href =
                                        "https://fonts.googleapis.com/css?family=Noto+Serif+SC:400,700&amp;subset=chinese-simplified,japanese"),
                                    g.head.appendChild(b);
                            h.serifFontLoaded = !0;
                        }
                        a("body").addClass("serif-fonts");
                        a(".font-family-control").removeClass("selected");
                        a(".font-family-control.control-btn-serif").addClass("selected");
                    } else "sans-serif" === b && (t("MIRAGES_USE_SERIF_FONTS", ""), a("body").removeClass("serif-fonts"), a(".font-family-control").removeClass("selected"), a(".font-family-control.control-btn-sans-serif").addClass("selected"));
                });
        },
        K = function (b) {
            setTimeout(function () {
                a(".sp-progress").css("opacity", "0");
            }, b || 0);
        },
        ja = function () {
            var b = a(".font-size-display"),
                c = function (c) {
                    var d = parseFloat(a(".font-size-display").first().text());
                    c = d + c;
                    if (!(80 > c || 150 < c)) {
                        if ((100 < d && 100 > c) || (100 > d && 100 < c)) c = 100;
                        a("html").css("font-size", c + "%");
                        b.text(c + "%");
                        t("MIRAGES_ROOT_FONT_SIZE", c);
                    }
                };
            (function () {
                var c = a("html").css("font-size"),
                    c = (parseFloat(c) / 16) * 100;
                80 > c &&
                ((c = LocalConst.ROOT_FONT_SIZE), Mlog(LocalConst.ROOT_FONT_SIZE));
                c = Math.round(c);
                b.text(c + "%");
            })();
            a(".font-size-control")
                .off("click")
                .on("click", function (b) {
                    b = a(this).attr("data-mode");
                    "smaller" === b ? c(-5) : "larger" === b && c(5);
                });
        },
        ra = function () {
            a("pre code:not(.nohighlight)").each(function () {
                var b = a(this).html();
                LocalConst.TRIM_LAST_LINE_BREAK_IN_CODE_BLOCK &&
                b.endsWith("\n") &&
                (b = b.substring(0, b.length - 1));
                a(this).html(
                    "<ul><li><div class='code-line'>" +
                    b.replace(/\n/g, "\n</div></li><li><div class='code-line'>") +
                    "\n</div></li></ul>"
                );
                a(this).parent("pre").addClass("loaded");
            });
        },
        sa = function () {
            var b = new Date();
            e.asyncBannerLoadNum = 0;
            e.asyncBannerLoadCompleteNum = 0;
            e.asyncImageLoadNum = 0;
            e.asyncImageLoadCompleteNum = 0;
            Mlog("reset async load num.");
            var c = function (a) {
                Mlog(a.type.toUpperCase());
                if (
                    e.asyncBannerLoadNum === e.asyncBannerLoadCompleteNum &&
                    e.asyncImageLoadNum === e.asyncImageLoadCompleteNum &&
                    e.asyncBannerLoadNum === e.asyncImageLoadNum &&
                    -1170 === e.asyncImageLoadNum
                ) {
                    var c = new Date() - b;
                    Mlog("All Done[" + c + "ms][" + a.type.toUpperCase() + "]");
                    K(1170 > c ? 1170 - c : 0);
                }
            };
            a("body")
                .off("ajax-image:done")
                .on("ajax-image:done", c)
                .off("ajax-banner:done")
                .on("ajax-banner:done", c);
        },
        S = function () {
            a("section.lazy-load").each(function () {
                0 <= e.asyncImageLoadNum &&
                (e.asyncImageLoadNum++,
                    Mlog("Loading Image: " + e.asyncImageLoadNum));
                var b = a(this),
                    c = b.find(".progressiveMedia"),
                    d = c.find(".img-small"),
                    f = b.attr("data-" + LocalConst.KEY_CDN_TYPE),
                    f = getImageAddon(f),
                    g = new Image();
                g.src = d.attr("data-src") + f;
                g.classList.add("img-large");
                a(g).attr("no-zoom", !0);
                g.onload = function () {
                    c.addClass("large-image-loaded");
                    setTimeout(function () {
                        a(g)
                            .addClass("loaded")
                            .attr("data-action", "zoom")
                            .removeAttr("no-zoom")
                            .removeAttr("width")
                            .removeAttr("height")
                            .css("height", "")
                            .attr("data-shadow", b.attr("data-shadow"));
                        b.replaceWith(a(g));
                        "undefined" !== typeof e[u("Load")] &&
                        1 <= e[u("Load")] &&
                        remove(g);
                        0 <= e.asyncImageLoadCompleteNum &&
                        (e.asyncImageLoadCompleteNum++,
                            Mlog("Loaded Image: " + e.asyncImageLoadCompleteNum),
                        e.asyncImageLoadCompleteNum === e.asyncImageLoadNum &&
                        ((e.asyncImageLoadNum = -1170),
                            (e.asyncImageLoadCompleteNum = -1170),
                            a("body").trigger("ajax-image:done")));
                    }, 1001);
                };
                c.append(g);
            });
            isNaN(e.asyncImageLoadNum) ||
            0 !== e.asyncImageLoadNum ||
            (Mlog("Async Image Nothing to Load"),
                (e.asyncImageLoadNum = -1170),
                (e.asyncImageLoadCompleteNum = -1170),
                a("body").trigger("ajax-image:done"));
        },
        T = function () {
            a("article img:not(code img, pre img, .lazy-load img)").each(function () {
                var b = a(this).attr("data-src"),
                    c = a(this).attr("data-" + LocalConst.KEY_CDN_TYPE);
                null !== b &&
                void 0 !== b &&
                "" !== b &&
                ((c = getImageAddon(c)),
                    a(this).attr("src", b + c),
                    a(this).removeAttr("data-src"));
            });
        },
        U = function () {
            if (a("#disqus_thread").length)
                if (e.DISQUS) DISQUS.reset({ reload: !0 });
                else {
                    var b = g.createElement("script");
                    b.type = "text/javascript";
                    b.async = !0;
                    b.src = "//" + LocalConst.DISQUS_SHORT_NAME + ".disqus.com/embed.js";
                    (
                        g.getElementsByTagName("head")[0] ||
                        g.getElementsByTagName("body")[0]
                    ).appendChild(b);
                }
        },
        R = function (b, c, d) {
            var f = C();
            b = isNaN(b) ? a("#" + b).offset().top - f : b;
            c = void 0 !== c && !0 === c ? 600 : 0;
            a("body,html").animate({ scrollTop: b }, c);
            "function" === typeof d &&
            setTimeout(function () {
                d();
            }, c);
            return !1;
        },
        V = function (a, c) {
            if (e.getComputedStyle) return e.getComputedStyle(a).getPropertyValue(c);
            if (a.currentStyle) return a.currentStyle[c];
        },
        W = function (a) {
            if (!a) return 0;
            var b = V(a, "transition-duration");
            a = V(a, "transition-delay");
            var d = parseFloat(b),
                f = parseFloat(a);
            if (!d && !f) return 0;
            b = b.split(",")[0];
            a = a.split(",")[0];
            return 1e3 * (parseFloat(b) + parseFloat(a));
        },
        X = function () {
            var a = [].slice.call(
                g.querySelectorAll('[data-mirages-toggle="collapse"]')
            );
            [].forEach.call(a, function (a) {
                a.addEventListener("click", function (b) {
                    b = function (a, b) {
                        if (
                            !b.classList.contains("collapsing") &&
                            !b.classList.contains("show")
                        ) {
                            a.classList.add("show");
                            b.classList.add("collapsing");
                            b.classList.remove("collapse");
                            b.style.height = b.scrollHeight + "px";
                            var c = W(b);
                            setTimeout(function () {
                                b.classList.remove("collapsing");
                                b.classList.add("show");
                                b.classList.add("collapse");
                            }, c);
                        }
                    };
                    var c = function (a, b) {
                            if (
                                !b.classList.contains("collapsing") &&
                                b.classList.contains("show")
                            ) {
                                a.classList.remove("show");
                                b.classList.remove("show");
                                b.classList.remove("collapse");
                                b.classList.add("collapsing");
                                b.style.height = "";
                                var c = W(b);
                                setTimeout(function () {
                                    b.classList.remove("collapsing");
                                    b.classList.add("collapse");
                                }, c);
                            }
                        },
                        d = g.querySelector(a.dataset.target);
                    d.classList.contains("show") ? c(a, d) : b(a, d);
                });
                var b = g.querySelector(a.dataset.target);
                b.classList.contains("show") &&
                !b.style.height &&
                (b.style.height = b.scrollHeight + "px");
            });
        },
        ta = function () {
            try {
                a(".post-content table").wrap("<div class='table-responsive'></div>"),
                    a(
                        ".post-content embed.video, .post-content video.video, .post-content iframe.video"
                    ).addClass("video-4-3"),
                    a(
                        ".post-content embed[video], .post-content video[video], .post-content iframe[video]"
                    ).addClass("video-4-3"),
                    a(
                        ".post-content embed[video-4-3], .post-content video[video-4-3], .post-content iframe[video-4-3]"
                    ).addClass("video-4-3"),
                    a(
                        ".post-content embed[video-16-9], .post-content video[video-16-9], .post-content iframe[video-16-9]"
                    ).addClass("video-16-9"),
                    a(
                        ".post-content embed, .post-content video, .post-content iframe"
                    ).each(function () {
                        0 !== this.style.height.length &&
                        (a(this).hasClass("video-4-3") ||
                            a(this).hasClass("video-16-9") ||
                            a(this).attr("not-video", ""));
                    }),
                    a(
                        ".post-content embed:not([not-video], [height], .video-4-3, .video-16-9, .large-content), .post-content iframe:not([not-video], [height], .video-4-3, .video-16-9, .large-content)"
                    ).addClass("video-4-3"),
                    a(
                        ".post-content embed.video-4-3, .post-content video.video-4-3, .post-content iframe.video-4-3"
                    )
                        .removeClass("video-16-9")
                        .wrap("<div class='video-container video-4-3'></div>"),
                    a(
                        ".post-content embed.video-16-9, .post-content video.video-16-9, .post-content iframe.video-16-9"
                    ).wrap("<div class='video-container video-16-9'></div>"),
                    a(".post-content iframe, .post-content embed").each(function () {
                        var b = a(this);
                        b &&
                        !b.attr("src") &&
                        b.attr("data-src") &&
                        b.attr("src", b.attr("data-src"));
                    }),
                    a(".post-content object").each(function () {
                        var b = a(this);
                        b &&
                        !b.attr("data") &&
                        b.attr("data-delay") &&
                        b.attr("data", b.attr("data-delay"));
                    });
            } catch (b) {
                console.error(b);
            }
        },
        ua = function () {
            a(".content-tab-title")
                .off("click")
                .on("click", function (b) {
                    var c = a(this),
                        d = c.parent();
                    b = d.parent();
                    var f = c.attr("data-tab-index");
                    b.find(".content-tab-title").each(function () {
                        a(this).attr("data-tab-index") === f
                            ? a(this).addClass("selected")
                            : a(this).removeClass("selected");
                    });
                    b.find(".content-tab-content").each(function () {
                        a(this).attr("data-tab-index") === f
                            ? a(this).addClass("selected")
                            : a(this).removeClass("selected");
                    });
                    b = function (a) {
                        0 > a && (a = 0);
                        try {
                            a > d[0].scrollWidth - d.innerWidth() &&
                            (a = d[0].scrollWidth - d.innerWidth());
                        } catch (ma) {
                            console.error(ma);
                        }
                        Mlog("scrollTabTo: ", a);
                        d.animate({ scrollLeft: a }, 500);
                    };
                    if (!LocalConst.IS_MOBILE) {
                        var g = d.offset().left,
                            e = c.offset().left,
                            h = d.innerWidth(),
                            c = c.outerWidth(),
                            k = d.scrollLeft();
                        b(e + k - g - (h - c) / 2);
                    }
                });
        },
        Y = function () {
            try {
                a("article img:not(article .link-box img, img[no-zoom])").each(
                    function () {
                        a(this).attr("data-action", "zoom");
                        a(this).next().is("br") && a(this).next().remove();
                    }
                );
            } catch (b) {
                console.error(b);
            }
            try {
                a(
                    ".post-content a:not(code a, pre a), #content a:not(code a, pre a), #comments a"
                ).each(function () {
                    var b = a(this).attr("href");
                    b &&
                    b.startWith("http") &&
                    !b.startWith(location.origin) &&
                    a(this).attr("target", "_blank");
                });
            } catch (b$1) {
                console.error(b$1);
            }
            try {
                a(".post-content p.more a").each(function () {
                    a(this).removeAttr("target");
                }),
                    a("li.task-list-item").each(function () {
                        var b = a(this).parent();
                        b && !b.hasClass("task-list") && b.addClass("task-list");
                    });
            } catch (b$2) {
                console.error(b$2);
            }
            P();
            ta();
            ua();
            try {
                a(".search-form-input").on("click focus", function (b) {
                    "undefined" !== typeof INSIGHT_CONFIG &&
                    (a("body").removeClass("display-nav"),
                        a("#wrap").removeClass("display-nav"));
                });
            } catch (b$3) {
                console.error(b$3);
            }
            try {
                a("#comments img.avatar[data-src]").each(function () {
                    var b = a(this);
                    O(b);
                });
            } catch (b$4) {
                console.error(b$4);
            }
        },
        Z = function () {
            LocalConst.ENABLE_FLOW_CHART &&
            a("pre>code.lang-flow").each(function (b) {
                a(this)
                    .addClass("nohighlight")
                    .attr("data-flow-chart-index", b)
                    .parent()
                    .addClass("display-none")
                    .after('<div id="flow-chart-' + b + '" class="flow-chart"></div>');
            });
            LocalConst.ENABLE_MERMAID &&
            a("pre>code.lang-mermaid").each(function (b) {
                a(this)
                    .addClass("nohighlight")
                    .attr("data-mermaid-index", b)
                    .parent()
                    .addClass("display-none")
                    .after(
                        '<div id="mermaid-' + b + '" class="mermaid-content"></div>'
                    );
            });
            LocalConst.HIDE_CODE_LINE_NUMBER || ra();
            a("pre code").each(function (a, c) {
                hljs.highlightBlock(c);
            });
        },
        w = function (a, c) {
            var b = g.createElement("script");
            b.type = "text/javascript";
            "undefined" != typeof c &&
            (b.readyState
                ? (b.onreadystatechange = function () {
                    if ("loaded" === b.readyState || "complete" === b.readyState)
                        (b.onreadystatechange = null), c();
                })
                : (b.onload = function () {
                    c();
                }));
            b.src = a;
            g.body.appendChild(b);
        },
        va = function (a) {
            var b = g.getElementsByTagName("head")[0],
                d,
                f = "";
            LocalConst.MATH_JAX_USE_DOLLAR &&
            (f = "tex2jax: {inlineMath: [['$','$'], ['\\\\(','\\\\)']]},");
            d = g.createElement("script");
            d.type = "text/x-mathjax-config";
            d[e.opera ? "innerHTML" : "text"] =
                "\n        MathJax.Hub.Config({\n          " +
                f +
                "\n          skipStartupTypeset: true\n        });\n        ";
            b.appendChild(d);
            w(
                LocalConst.BASE_SCRIPT_URL + "static/mathjax/2.7.5/MathJax.js",
                function () {
                    Mlog("/static/mathjax/2.7.5/MathJax.js Loaded.");
                    w(
                        LocalConst.BASE_SCRIPT_URL +
                        "static/mathjax/2.7.5/config/TeX-AMS-MML_SVG.js",
                        function () {
                            Mlog("/static/mathjax/2.7.5/config/TeX-AMS-MML_SVG.js Loaded.");
                            a();
                        }
                    );
                }
            );
        },
        qa = function () {
            if (LocalConst.ENABLE_MATH_JAX) {
                var a = function () {
                    "undefined" === typeof MathJax
                        ? (Mlog("MathJax undefined."), console.error("MathJax undefined."))
                        : (Mlog("Rendering MathJax..."),
                            MathJax.Hub.Queue(["Typeset", MathJax.Hub, "body"]));
                };
                "undefined" === typeof MathJax
                    ? (Mlog("Loading MathJax..."),
                        va(function () {
                            Mlog("MathJax Loaded.");
                            a();
                        }))
                    : a();
            }
        },
        wa = function (a) {
            h.flowChartRaphaelLoaded = !1;
            h.flowChartFlowchartLoaded = !1;
            w(
                LocalConst.BASE_SCRIPT_URL + "static/raphael/2.2.7/raphael.min.js",
                function () {
                    h.flowChartRaphaelLoaded = !0;
                    Mlog("/static/raphael/2.2.7/raphael.min.js Loaded.");
                    h.flowChartFlowchartLoaded && a();
                }
            );
            w(
                LocalConst.BASE_SCRIPT_URL + "static/flowchart/1.10.0/flowchart.min.js",
                function () {
                    h.flowChartFlowchartLoaded = !0;
                    Mlog("/static/flowchart/1.10.0/flowchart.min.js Loaded.");
                    h.flowChartRaphaelLoaded && a();
                }
            );
        },
        aa = function () {
            if (LocalConst.ENABLE_FLOW_CHART) {
                var b = function () {
                    if ("undefined" === typeof flowchart)
                        Mlog("FlowChart undefined."), console.error("FlowChart undefined.");
                    else {
                        Mlog("Prepare for FlowChart...");
                        var b = 2;
                        void 0 !== e.devicePixelRatio &&
                        1.49 <= e.devicePixelRatio &&
                        (b = 1.5);
                        var d = {
                                x: 0,
                                y: 0,
                                "line-width": b,
                                "text-margin": 15,
                                "font-size": 13,
                                font: "normal",
                                "font-family":
                                    'Consolas, Menlo, Monaco, "lucida console", "Liberation Mono", "Courier New", "andale mono", monospaceX, sans-serif',
                                "font-weight": "normal",
                                fill: "none",
                                "yes-text": "yes",
                                "no-text": "no",
                                "arrow-end": "block",
                                scale: 1,
                            },
                            b = "white";
                        a("body").hasClass("theme-dark") &&
                        ((d["line-color"] = "white"),
                            (d["element-color"] = "white"),
                            (d["font-color"] = "white"),
                            (b = "dark"));
                        h.flowChartTheme === b
                            ? Mlog("FlowChart Theme Not Change. Skip Render...")
                            : ((h.flowChartTheme = b),
                                a("pre>code.lang-flow").each(function () {
                                    var b = a(this).attr("data-flow-chart-index");
                                    Mlog("Rendering FlowChart: " + b);
                                    var c = this.innerText;
                                    if ("undefined" !== typeof c)
                                        try {
                                            var b = "flow-chart-" + b,
                                                e = flowchart.parse(c),
                                                h = g.querySelector("#" + b);
                                            h
                                                ? ((h.innerHTML = ""), e.drawSVG(b, d))
                                                : console.warn(
                                                    "FlowChart Target: " + b + " Not Exists!"
                                                );
                                        } catch (v) {
                                            console.error(v);
                                        }
                                }));
                    }
                };
                a("body").on("mirages:theme-change", function (a, d) {
                    b();
                });
                "undefined" === typeof flowchart
                    ? (Mlog("Loading FlowChart..."),
                        wa(function () {
                            Mlog("FlowChart Loaded.");
                            b();
                        }))
                    : b();
            }
        },
        ba = function () {
            if (LocalConst.ENABLE_MERMAID) {
                var b = function () {
                    if ("undefined" === typeof mermaid)
                        Mlog("Mermaid undefined."), console.error("Mermaid undefined.");
                    else {
                        Mlog("Prepare for Mermaid...");
                        var b = "forest";
                        a(body).hasClass("theme-dark") && (b = "dark");
                        if (h.mermaidTheme === b)
                            Mlog("Mermaid Theme Not Change. Skip Render...");
                        else {
                            h.mermaidTheme = b;
                            var d = a("body")[0].offsetWidth;
                            768 > d && (d = 768);
                            mermaid.mermaidAPI.initialize({
                                startOnLoad: !1,
                                theme: b,
                                gantt: { useWidth: d },
                            });
                            h.mermaidIndex || (h.mermaidIndex = 0);
                            h.mermaidIndex++;
                            a("pre>code.lang-mermaid").each(function () {
                                var b = a(this).attr("data-mermaid-index");
                                Mlog("Rendering Mermaid: " + b);
                                var c = this.innerText,
                                    b = "mermaid-" + b,
                                    d = b + "-svg-" + h.mermaidIndex;
                                if ("undefined" !== typeof c)
                                    try {
                                        var e = g.querySelector("#" + b);
                                        mermaid.mermaidAPI.render(d, c, function (a, b) {
                                            e.innerHTML = a;
                                            b(e);
                                            var c = g.querySelector("#" + d);
                                            c.style.fontWeight = 400;
                                            var f = c.getAttribute("viewBox");
                                            if (f) {
                                                if (((f = f.split(/\s+/)), 4 === f.length)) {
                                                    var h = parseInt(f[0], 10),
                                                        f = parseInt(f[2], 10) - h;
                                                    0 < f &&
                                                    ((c.style.maxWidth = f + "px"),
                                                        (c.style.minWidth = 0.75 * f + "px"));
                                                }
                                            } else (f = 0.75 * parseInt(c.style.maxWidth, 10)), 0 < f && (c.style.minWidth = f + "px");
                                        });
                                    } catch (v) {
                                        console.error(v),
                                        (c = g.querySelector("#d" + d)) && remove(c);
                                    }
                            });
                        }
                    }
                };
                a("body").on("mirages:theme-change", function (a, d) {
                    b();
                });
                "undefined" === typeof mermaid
                    ? (Mlog("Loading Mermaid..."),
                        w(
                            LocalConst.BASE_SCRIPT_URL +
                            "static/mermaid/8.0.0/mermaid.min.js",
                            function () {
                                Mlog("Mermaid Loaded.");
                                b();
                            }
                        ))
                    : b();
            }
        },
        ca = function () {
            a("#toggle-post-qr-code")
                .off("click")
                .on("click", function (b) {
                    a("body")
                        .removeClass("show-reward-qr-box")
                        .toggleClass("show-post-qr-box");
                });
            a("#toggle-reward-qr-code")
                .off("click")
                .on("click", function (b) {
                    a("body")
                        .removeClass("show-post-qr-box")
                        .toggleClass("show-reward-qr-box");
                });
        };
    e.Mirages = {
        setupPage: function () {
            U();
            Y();
            ca();
            X();
        },
        setupLazyLoadImage: function () {
            S();
        },
        setupCDNImageOptimize: function () {
            T();
        },
        version: function () {},
        highlightCodeBlock: function () {
            Z();
        },
        renderFlowChart: function () {
            aa();
        },
        renderMermaid: function () {
            ba();
        },
        doPJAXClickAction: function () {
            sa();
            a("body")
                .attr(
                    "data-prev-href",
                    g.location.pathname + g.location.search + g.location.hash
                )
                .removeClass("display-menu-tree");
            a("#wrap").removeClass("display-menu-tree");
            LocalConst.PJAX_LOAD_STYLE === LocalConst.PJAX_LOAD_STYLE_SIMPLE &&
            a(".sp-progress").css("opacity", "1");
        },
        doPJAXSendAction: function () {
            LocalConst.PJAX_LOAD_STYLE !== LocalConst.PJAX_LOAD_STYLE_SIMPLE &&
            LocalConst.PJAX_LOAD_STYLE === LocalConst.PJAX_LOAD_STYLE_CIRCLE &&
            a("#loader-wrapper").addClass("in");
            a("#wrap").removeClass("display-nav").removeClass("display-menu-tree");
            a("#footer").removeClass("display-nav");
            a("#body").off("click");
            a("body")
                .removeClass("show-reward-qr-box")
                .removeClass("show-post-qr-box")
                .removeClass("display-nav")
                .removeClass("display-menu-tree");
            g.body.onElementHeightChangeTimer &&
            clearTimeout(g.body.onElementHeightChangeTimer);
        },
        doPJAXCompleteAction: function () {
            h.flowChartTheme = "";
            h.mermaidTheme = "";
            h.mermaidIndex = 0;
            a("body").off("mirages:theme-change");
            LocalConst.PJAX_LOAD_STYLE !== LocalConst.PJAX_LOAD_STYLE_SIMPLE &&
            LocalConst.PJAX_LOAD_STYLE === LocalConst.PJAX_LOAD_STYLE_CIRCLE &&
            a("#loader-wrapper").removeClass("in");
            H();
            var b = a("body"),
                c = b.attr("data-prev-href"),
                d = g.location.pathname + g.location.search + g.location.hash;
            _czc.push(["_trackPageview", d, c]);
            _hmt.push(["_trackPageview", d]);
            pangu.spacingElementByClassName("container");
            isNaN(e.asyncBannerLoadNum) ||
            0 !== e.asyncBannerLoadNum ||
            (Mlog("Async Banner Nothing to Load"),
                (e.asyncBannerLoadNum = -1170),
                (e.asyncBannerLoadCompleteNum = -1170),
                b.trigger("ajax-banner:done"));
            S();
            T();
            Y();
            Z();
            ca();
            b = location.hash.indexOf("#");
            0 > b || ((b = e.location.hash.substring(b + 1)), R(b));
            G();
            X();
            aa();
            ba();
            if (
                "undefined" !== typeof APlayerOptions &&
                "undefined" !== typeof APlayers
            )
                for (b = APlayerOptions.length, c = 0; c < b; c++)
                    (APlayers[c] = new APlayer({
                        element: g.getElementById("player" + APlayerOptions[c].id),
                        narrow: !1,
                        preload: APlayerOptions[c].preload,
                        mutex: APlayerOptions[c].mutex,
                        autoplay: APlayerOptions[c].autoplay,
                        showlrc: APlayerOptions[c].showlrc,
                        music: APlayerOptions[c].music,
                        theme: APlayerOptions[c].theme,
                    })),
                        APlayers[c].init();
            if (
                "undefined" !== typeof dPlayerOptions &&
                "undefined" !== typeof dPlayers
            )
                for (b = dPlayerOptions.length, c = 0; c < b; c++)
                    (d = g.getElementById("player" + dPlayerOptions[c].id)),
                    "undefined" !== typeof d &&
                    null !== d &&
                    (dPlayers[c] = new DPlayer({
                        element: d,
                        autoplay: dPlayerOptions[c].autoplay,
                        video: dPlayerOptions[c].video,
                        theme: dPlayerOptions[c].theme,
                        danmaku: dPlayerOptions[c].danmaku,
                    }));
            loadGithubRepos();
            LocalConst.COMMENT_SYSTEM === LocalConst.COMMENT_SYSTEM_DISQUS
                ? U()
                : LocalConst.COMMENT_SYSTEM === LocalConst.COMMENT_SYSTEM_EMBED &&
                (J(), I());
        },
    };
    String.prototype.startWith = function (a) {
        return null === a || "" === a || 0 === this.length || a.length > this.length
            ? !1
            : this.substr(0, a.length) === a;
    };

    e.__Y__ = Y;
})(jQuery, window, document);
!(function (e) {
    var t =
        ("object" == typeof window && window) || ("object" == typeof self && self);
    "undefined" != typeof exports
        ? e(exports)
        : t &&
        ((t.hljs = e({})),
        "function" == typeof define &&
        define.amd &&
        define([], function () {
            return t.hljs;
        }));
})(function (n) {
    var b = [],
        o = Object.keys,
        h = {},
        p = {},
        t = /^(no-?highlight|plain|text)$/i,
        m = /\blang(?:uage)?-([\w-]+)\b/i,
        r = /((^(<[^>]+>|\t|)+|(?:\n)))/gm,
        a = {
            case_insensitive: "cI",
            lexemes: "l",
            contains: "c",
            keywords: "k",
            subLanguage: "sL",
            className: "cN",
            begin: "b",
            beginKeywords: "bK",
            end: "e",
            endsWithParent: "eW",
            illegal: "i",
            excludeBegin: "eB",
            excludeEnd: "eE",
            returnBegin: "rB",
            returnEnd: "rE",
            relevance: "r",
            variants: "v",
            IDENT_RE: "IR",
            UNDERSCORE_IDENT_RE: "UIR",
            NUMBER_RE: "NR",
            C_NUMBER_RE: "CNR",
            BINARY_NUMBER_RE: "BNR",
            RE_STARTERS_RE: "RSR",
            BACKSLASH_ESCAPE: "BE",
            APOS_STRING_MODE: "ASM",
            QUOTE_STRING_MODE: "QSM",
            PHRASAL_WORDS_MODE: "PWM",
            C_LINE_COMMENT_MODE: "CLCM",
            C_BLOCK_COMMENT_MODE: "CBCM",
            HASH_COMMENT_MODE: "HCM",
            NUMBER_MODE: "NM",
            C_NUMBER_MODE: "CNM",
            BINARY_NUMBER_MODE: "BNM",
            CSS_NUMBER_MODE: "CSSNM",
            REGEXP_MODE: "RM",
            TITLE_MODE: "TM",
            UNDERSCORE_TITLE_MODE: "UTM",
            COMMENT: "C",
            beginRe: "bR",
            endRe: "eR",
            illegalRe: "iR",
            lexemesRe: "lR",
            terminators: "t",
            terminator_end: "tE",
        },
        N = "</span>",
        v = {
            classPrefix: "hljs-",
            tabReplace: null,
            useBR: !1,
            languages: void 0,
        };

    function y(e) {
        return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    }

    function f(e) {
        return e.nodeName.toLowerCase();
    }

    function w(e, t) {
        var r = e && e.exec(t);
        return r && 0 === r.index;
    }

    function g(e) {
        return t.test(e);
    }

    function u(e) {
        var t,
            r = {},
            a = Array.prototype.slice.call(arguments, 1);
        for (t in e) r[t] = e[t];
        return (
            a.forEach(function (e) {
                for (t in e) r[t] = e[t];
            }),
                r
        );
    }

    function _(e) {
        var n = [];
        return (
            (function e(t, r) {
                for (var a = t.firstChild; a; a = a.nextSibling)
                    3 === a.nodeType
                        ? (r += a.nodeValue.length)
                        : 1 === a.nodeType &&
                        (n.push({
                            event: "start",
                            offset: r,
                            node: a,
                        }),
                            (r = e(a, r)),
                        f(a).match(/br|hr|img|input/) ||
                        n.push({ event: "stop", offset: r, node: a }));
                return r;
            })(e, 0),
                n
        );
    }

    function i(e) {
        if (a && !e.langApiRestored) {
            for (var t in ((e.langApiRestored = !0), a)) e[t] && (e[a[t]] = e[t]);
            (e.c || []).concat(e.v || []).forEach(i);
        }
    }

    function E(s) {
        function l(e) {
            return (e && e.source) || e;
        }

        function c(e, t) {
            return new RegExp(l(e), "m" + (s.cI ? "i" : "") + (t ? "g" : ""));
        }

        !(function t(r, e) {
            if (!r.compiled) {
                if (((r.compiled = !0), (r.k = r.k || r.bK), r.k)) {
                    var a = {},
                        n = function (r, e) {
                            s.cI && (e = e.toLowerCase()),
                                e.split(" ").forEach(function (e) {
                                    var t = e.split("|");
                                    a[t[0]] = [r, t[1] ? Number(t[1]) : 1];
                                });
                        };
                    "string" == typeof r.k
                        ? n("keyword", r.k)
                        : o(r.k).forEach(function (e) {
                            n(e, r.k[e]);
                        }),
                        (r.k = a);
                }
                (r.lR = c(r.l || /\w+/, !0)),
                e &&
                (r.bK && (r.b = "\\b(" + r.bK.split(" ").join("|") + ")\\b"),
                r.b || (r.b = /\B|\b/),
                    (r.bR = c(r.b)),
                r.endSameAsBegin && (r.e = r.b),
                r.e || r.eW || (r.e = /\B|\b/),
                r.e && (r.eR = c(r.e)),
                    (r.tE = l(r.e) || ""),
                r.eW && e.tE && (r.tE += (r.e ? "|" : "") + e.tE)),
                r.i && (r.iR = c(r.i)),
                null == r.r && (r.r = 1),
                r.c || (r.c = []),
                    (r.c = Array.prototype.concat.apply(
                        [],
                        r.c.map(function (e) {
                            return (
                                (t = "self" === e ? r : e).v &&
                                !t.cached_variants &&
                                (t.cached_variants = t.v.map(function (e) {
                                    return u(t, { v: null }, e);
                                })),
                                t.cached_variants || (t.eW && [u(t)]) || [t]
                            );
                        })
                    )),
                    r.c.forEach(function (e) {
                        t(e, r);
                    }),
                r.starts && t(r.starts, e);
                var i = r.c
                    .map(function (e) {
                        return e.bK ? "\\.?(?:" + e.b + ")\\.?" : e.b;
                    })
                    .concat([r.tE, r.i])
                    .map(l)
                    .filter(Boolean);
                r.t = i.length
                    ? c(
                        (function (e, t) {
                            for (
                                var r = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,
                                    a = 0,
                                    n = "",
                                    i = 0;
                                i < e.length;
                                i++
                            ) {
                                var s = a,
                                    c = l(e[i]);
                                for (0 < i && (n += t); 0 < c.length; ) {
                                    var o = r.exec(c);
                                    if (null == o) {
                                        n += c;
                                        break;
                                    }
                                    (n += c.substring(0, o.index)),
                                        (c = c.substring(o.index + o[0].length)),
                                        "\\" == o[0][0] && o[1]
                                            ? (n += "\\" + String(Number(o[1]) + s))
                                            : ((n += o[0]), "(" == o[0] && a++);
                                }
                            }
                            return n;
                        })(i, "|"),
                        !0
                    )
                    : {
                        exec: function () {
                            return null;
                        },
                    };
            }
        })(s);
    }

    function k(e, t, c, r) {
        function o(e, t, r, a) {
            var n = '<span class="' + (a ? "" : v.classPrefix);
            return (n += e + '">') + t + (r ? "" : N);
        }

        function l() {
            (p +=
                null != b.sL
                    ? (function () {
                        var e = "string" == typeof b.sL;
                        if (e && !h[b.sL]) return y(m);
                        var t = e
                            ? k(b.sL, m, !0, i[b.sL])
                            : x(m, b.sL.length ? b.sL : void 0);
                        return (
                            0 < b.r && (f += t.r),
                            e && (i[b.sL] = t.top),
                                o(t.language, t.value, !1, !0)
                        );
                    })()
                    : (function () {
                        var e, t, r, a, n, i, s;
                        if (!b.k) return y(m);
                        for (a = "", t = 0, b.lR.lastIndex = 0, r = b.lR.exec(m); r; )
                            (a += y(m.substring(t, r.index))),
                                (n = b),
                                (i = r),
                                (s = d.cI ? i[0].toLowerCase() : i[0]),
                                (e = n.k.hasOwnProperty(s) && n.k[s])
                                    ? ((f += e[1]), (a += o(e[0], y(r[0]))))
                                    : (a += y(r[0])),
                                (t = b.lR.lastIndex),
                                (r = b.lR.exec(m));
                        return a + y(m.substr(t));
                    })()),
                (m = "");
        }

        function u(e) {
            (p += e.cN ? o(e.cN, "", !0) : ""),
                (b = Object.create(e, { parent: { value: b } }));
        }

        function a(e, t) {
            if (((m += e), null == t)) return l(), 0;
            var r = (function (e, t) {
                var r, a, n;
                for (r = 0, a = t.c.length; r < a; r++)
                    if (w(t.c[r].bR, e))
                        return (
                            t.c[r].endSameAsBegin &&
                            (t.c[r].eR =
                                ((n = t.c[r].bR.exec(e)[0]),
                                    new RegExp(
                                        n.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"),
                                        "m"
                                    ))),
                                t.c[r]
                        );
            })(t, b);
            if (r)
                return (
                    r.skip ? (m += t) : (r.eB && (m += t), l(), r.rB || r.eB || (m = t)),
                        u(r),
                        r.rB ? 0 : t.length
                );
            var a,
                n,
                i = (function e(t, r) {
                    if (w(t.eR, r)) {
                        for (; t.endsParent && t.parent; ) t = t.parent;
                        return t;
                    }
                    if (t.eW) return e(t.parent, r);
                })(b, t);
            if (i) {
                var s = b;
                for (
                    s.skip ? (m += t) : (s.rE || s.eE || (m += t), l(), s.eE && (m = t));
                    b.cN && (p += N),
                    b.skip || b.sL || (f += b.r),
                    (b = b.parent) !== i.parent;

                );
                return (
                    i.starts && (i.endSameAsBegin && (i.starts.eR = i.eR), u(i.starts)),
                        s.rE ? 0 : t.length
                );
            }
            if (((a = t), (n = b), !c && w(n.iR, a)))
                throw new Error(
                    'Illegal lexeme "' + t + '" for mode "' + (b.cN || "<unnamed>") + '"'
                );
            return (m += t), t.length || 1;
        }

        var d = C(e);
        if (!d) throw new Error('Unknown language: "' + e + '"');
        E(d);
        var n,
            b = r || d,
            i = {},
            p = "";
        for (n = b; n !== d; n = n.parent) n.cN && (p = o(n.cN, "", !0) + p);
        var m = "",
            f = 0;
        try {
            for (var s, g, _ = 0; (b.t.lastIndex = _), (s = b.t.exec(t)); )
                (g = a(t.substring(_, s.index), s[0])), (_ = s.index + g);
            for (a(t.substr(_)), n = b; n.parent; n = n.parent) n.cN && (p += N);
            return { r: f, value: p, language: e, top: b };
        } catch (e$5) {
            if (e$5.message && -1 !== e$5.message.indexOf("Illegal"))
                return { r: 0, value: y(t) };
            throw e$5;
        }
    }

    function x(r, e) {
        e = e || v.languages || o(h);
        var a = { r: 0, value: y(r) },
            n = a;
        return (
            e
                .filter(C)
                .filter(l)
                .forEach(function (e) {
                    var t = k(e, r, !1);
                    (t.language = e),
                    t.r > n.r && (n = t),
                    t.r > a.r && ((n = a), (a = t));
                }),
            n.language && (a.second_best = n),
                a
        );
    }

    function M(e) {
        return v.tabReplace || v.useBR
            ? e.replace(r, function (e, t) {
                return v.useBR && "\n" === e
                    ? "<br>"
                    : v.tabReplace
                        ? t.replace(/\t/g, v.tabReplace)
                        : "";
            })
            : e;
    }

    function s(e) {
        var t,
            r,
            a,
            n,
            i,
            s,
            c,
            o,
            l,
            u,
            d = (function (e) {
                var t,
                    r,
                    a,
                    n,
                    i = e.className + " ";
                if (
                    ((i += e.parentNode ? e.parentNode.className : ""), (r = m.exec(i)))
                )
                    return C(r[1]) ? r[1] : "no-highlight";
                for (t = 0, a = (i = i.split(/\s+/)).length; t < a; t++)
                    if (g((n = i[t])) || C(n)) return n;
            })(e);
        g(d) ||
        (v.useBR
            ? ((t = document.createElementNS(
                "http://www.w3.org/1999/xhtml",
                "div"
            )).innerHTML = e.innerHTML
                .replace(/\n/g, "")
                .replace(/<br[ \/]*>/g, "\n"))
            : (t = e),
            (i = t.textContent),
            (a = d ? k(d, i, !0) : x(i)),
        (r = _(t)).length &&
        (((n = document.createElementNS(
            "http://www.w3.org/1999/xhtml",
            "div"
        )).innerHTML = a.value),
            (a.value = (function (e, t, r) {
                var a = 0,
                    n = "",
                    i = [];

                function s() {
                    return e.length && t.length
                        ? e[0].offset !== t[0].offset
                            ? e[0].offset < t[0].offset
                                ? e
                                : t
                            : "start" === t[0].event
                                ? e
                                : t
                        : e.length
                            ? e
                            : t;
                }

                function c(e) {
                    n +=
                        "<" +
                        f(e) +
                        b.map
                            .call(e.attributes, function (e) {
                                return (
                                    " " +
                                    e.nodeName +
                                    '="' +
                                    y(e.value).replace('"', "&quot;") +
                                    '"'
                                );
                            })
                            .join("") +
                        ">";
                }

                function o(e) {
                    n += "</" + f(e) + ">";
                }

                function l(e) {
                    ("start" === e.event ? c : o)(e.node);
                }

                for (; e.length || t.length; ) {
                    var u = s();
                    if (
                        ((n += y(r.substring(a, u[0].offset))),
                            (a = u[0].offset),
                        u === e)
                    ) {
                        for (
                            i.reverse().forEach(o);
                            l(u.splice(0, 1)[0]),
                            (u = s()) === e && u.length && u[0].offset === a;

                        );
                        i.reverse().forEach(c);
                    } else
                        "start" === u[0].event ? i.push(u[0].node) : i.pop(),
                            l(u.splice(0, 1)[0]);
                }
                return n + y(r.substr(a));
            })(r, _(n), i))),
            (a.value = M(a.value)),
            (e.innerHTML = a.value),
            (e.className =
                ((s = e.className),
                    (c = d),
                    (o = a.language),
                    (l = c ? p[c] : o),
                    (u = [s.trim()]),
                s.match(/\bhljs\b/) || u.push("hljs"),
                -1 === s.indexOf(l) && u.push(l),
                    u.join(" ").trim())),
            (e.result = {
                language: a.language,
                re: a.r,
            }),
        a.second_best &&
        (e.second_best = {
            language: a.second_best.language,
            re: a.second_best.r,
        }));
    }

    function c() {
        if (!c.called) {
            c.called = !0;
            var e = document.querySelectorAll("pre code");
            b.forEach.call(e, s);
        }
    }

    function C(e) {
        return (e = (e || "").toLowerCase()), h[e] || h[p[e]];
    }

    function l(e) {
        var t = C(e);
        return t && !t.disableAutodetect;
    }

    return (
        (n.highlight = k),
            (n.highlightAuto = x),
            (n.fixMarkup = M),
            (n.highlightBlock = s),
            (n.configure = function (e) {
                v = u(v, e);
            }),
            (n.initHighlighting = c),
            (n.initHighlightingOnLoad = function () {
                addEventListener("DOMContentLoaded", c, !1),
                    addEventListener("load", c, !1);
            }),
            (n.registerLanguage = function (t, e) {
                var r = (h[t] = e(n));
                i(r),
                r.aliases &&
                r.aliases.forEach(function (e) {
                    p[e] = t;
                });
            }),
            (n.listLanguages = function () {
                return o(h);
            }),
            (n.getLanguage = C),
            (n.autoDetection = l),
            (n.inherit = u),
            (n.IR = n.IDENT_RE = "[a-zA-Z]\\w*"),
            (n.UIR = n.UNDERSCORE_IDENT_RE = "[a-zA-Z_]\\w*"),
            (n.NR = n.NUMBER_RE = "\\b\\d+(\\.\\d+)?"),
            (n.CNR = n.C_NUMBER_RE =
                "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"),
            (n.BNR = n.BINARY_NUMBER_RE = "\\b(0b[01]+)"),
            (n.RSR = n.RE_STARTERS_RE =
                "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~"),
            (n.BE = n.BACKSLASH_ESCAPE =
                {
                    b: "\\\\[\\s\\S]",
                    r: 0,
                }),
            (n.ASM = n.APOS_STRING_MODE =
                {
                    cN: "string",
                    b: "'",
                    e: "'",
                    i: "\\n",
                    c: [n.BE],
                }),
            (n.QSM = n.QUOTE_STRING_MODE =
                {
                    cN: "string",
                    b: '"',
                    e: '"',
                    i: "\\n",
                    c: [n.BE],
                }),
            (n.PWM = n.PHRASAL_WORDS_MODE =
                {
                    b: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/,
                }),
            (n.C = n.COMMENT =
                function (e, t, r) {
                    var a = n.inherit({ cN: "comment", b: e, e: t, c: [] }, r || {});
                    return (
                        a.c.push(n.PWM),
                            a.c.push({ cN: "doctag", b: "(?:TODO|FIXME|NOTE|BUG|XXX):", r: 0 }),
                            a
                    );
                }),
            (n.CLCM = n.C_LINE_COMMENT_MODE = n.C("//", "$")),
            (n.CBCM = n.C_BLOCK_COMMENT_MODE = n.C("/\\*", "\\*/")),
            (n.HCM = n.HASH_COMMENT_MODE = n.C("#", "$")),
            (n.NM = n.NUMBER_MODE =
                {
                    cN: "number",
                    b: n.NR,
                    r: 0,
                }),
            (n.CNM = n.C_NUMBER_MODE = { cN: "number", b: n.CNR, r: 0 }),
            (n.BNM = n.BINARY_NUMBER_MODE =
                {
                    cN: "number",
                    b: n.BNR,
                    r: 0,
                }),
            (n.CSSNM = n.CSS_NUMBER_MODE =
                {
                    cN: "number",
                    b:
                        n.NR +
                        "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
                    r: 0,
                }),
            (n.RM = n.REGEXP_MODE =
                {
                    cN: "regexp",
                    b: /\//,
                    e: /\/[gimuy]*/,
                    i: /\n/,
                    c: [n.BE, { b: /\[/, e: /\]/, r: 0, c: [n.BE] }],
                }),
            (n.TM = n.TITLE_MODE = { cN: "title", b: n.IR, r: 0 }),
            (n.UTM = n.UNDERSCORE_TITLE_MODE =
                {
                    cN: "title",
                    b: n.UIR,
                    r: 0,
                }),
            (n.METHOD_GUARD = { b: "\\.\\s*" + n.UIR, r: 0 }),
            n.registerLanguage("apache", function (e) {
                var t = { cN: "number", b: "[\\$%]\\d+" };
                return {
                    aliases: ["apacheconf"],
                    cI: !0,
                    c: [
                        e.HCM,
                        { cN: "section", b: "</?", e: ">" },
                        {
                            cN: "attribute",
                            b: /\w+/,
                            r: 0,
                            k: {
                                nomarkup:
                                    "order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername",
                            },
                            starts: {
                                e: /$/,
                                r: 0,
                                k: { literal: "on off all" },
                                c: [
                                    { cN: "meta", b: "\\s\\[", e: "\\]$" },
                                    {
                                        cN: "variable",
                                        b: "[\\$%]\\{",
                                        e: "\\}",
                                        c: ["self", t],
                                    },
                                    t,
                                    e.QSM,
                                ],
                            },
                        },
                    ],
                    i: /\S/,
                };
            }),
            n.registerLanguage("bash", function (e) {
                var t = {
                        cN: "variable",
                        v: [{ b: /\$[\w\d#@][\w\d_]*/ }, { b: /\$\{(.*?)}/ }],
                    },
                    r = {
                        cN: "string",
                        b: /"/,
                        e: /"/,
                        c: [e.BE, t, { cN: "variable", b: /\$\(/, e: /\)/, c: [e.BE] }],
                    };
                return {
                    aliases: ["sh", "zsh"],
                    l: /\b-?[a-z\._]+\b/,
                    k: {
                        keyword:
                            "if then else elif fi for while in do done case esac function",
                        literal: "true false",
                        built_in:
                            "break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",
                        _: "-ne -eq -lt -gt -f -d -e -s -l -a",
                    },
                    c: [
                        { cN: "meta", b: /^#![^\n]+sh\s*$/, r: 10 },
                        {
                            cN: "function",
                            b: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
                            rB: !0,
                            c: [e.inherit(e.TM, { b: /\w[\w\d_]*/ })],
                            r: 0,
                        },
                        e.HCM,
                        r,
                        { cN: "string", b: /'/, e: /'/ },
                        t,
                    ],
                };
            }),
            n.registerLanguage("coffeescript", function (e) {
                var t = {
                        keyword:
                            "in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",
                        literal: "true false null undefined yes no on off",
                        built_in: "npm require console print module global window document",
                    },
                    r = "[A-Za-z$_][0-9A-Za-z$_]*",
                    a = { cN: "subst", b: /#\{/, e: /}/, k: t },
                    n = [
                        e.BNM,
                        e.inherit(e.CNM, { starts: { e: "(\\s*/)?", r: 0 } }),
                        {
                            cN: "string",
                            v: [
                                { b: /'''/, e: /'''/, c: [e.BE] },
                                { b: /'/, e: /'/, c: [e.BE] },
                                {
                                    b: /"""/,
                                    e: /"""/,
                                    c: [e.BE, a],
                                },
                                { b: /"/, e: /"/, c: [e.BE, a] },
                            ],
                        },
                        {
                            cN: "regexp",
                            v: [
                                { b: "///", e: "///", c: [a, e.HCM] },
                                {
                                    b: "//[gim]*",
                                    r: 0,
                                },
                                { b: /\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/ },
                            ],
                        },
                        { b: "@" + r },
                        {
                            sL: "javascript",
                            eB: !0,
                            eE: !0,
                            v: [
                                { b: "```", e: "```" },
                                { b: "`", e: "`" },
                            ],
                        },
                    ];
                a.c = n;
                var i = e.inherit(e.TM, { b: r }),
                    s = "(\\(.*\\))?\\s*\\B[-=]>",
                    c = {
                        cN: "params",
                        b: "\\([^\\(]",
                        rB: !0,
                        c: [{ b: /\(/, e: /\)/, k: t, c: ["self"].concat(n) }],
                    };
                return {
                    aliases: ["coffee", "cson", "iced"],
                    k: t,
                    i: /\/\*/,
                    c: n.concat([
                        e.C("###", "###"),
                        e.HCM,
                        {
                            cN: "function",
                            b: "^\\s*" + r + "\\s*=\\s*" + s,
                            e: "[-=]>",
                            rB: !0,
                            c: [i, c],
                        },
                        {
                            b: /[:\(,=]\s*/,
                            r: 0,
                            c: [{ cN: "function", b: s, e: "[-=]>", rB: !0, c: [c] }],
                        },
                        {
                            cN: "class",
                            bK: "class",
                            e: "$",
                            i: /[:="\[\]]/,
                            c: [{ bK: "extends", eW: !0, i: /[:="\[\]]/, c: [i] }, i],
                        },
                        { b: r + ":", e: ":", rB: !0, rE: !0, r: 0 },
                    ]),
                };
            }),
            n.registerLanguage("cpp", function (e) {
                var t = { cN: "keyword", b: "\\b[a-z\\d_]*_t\\b" },
                    r = {
                        cN: "string",
                        v: [
                            {
                                b: '(u8?|U|L)?"',
                                e: '"',
                                i: "\\n",
                                c: [e.BE],
                            },
                            { b: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/ },
                            { b: "'\\\\?.", e: "'", i: "." },
                        ],
                    },
                    a = {
                        cN: "number",
                        v: [
                            { b: "\\b(0b[01']+)" },
                            {
                                b: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)",
                            },
                            {
                                b: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)",
                            },
                        ],
                        r: 0,
                    },
                    n = {
                        cN: "meta",
                        b: /#\s*[a-z]+\b/,
                        e: /$/,
                        k: {
                            "meta-keyword":
                                "if else elif endif define undef warning error line pragma ifdef ifndef include",
                        },
                        c: [
                            { b: /\\\n/, r: 0 },
                            e.inherit(r, { cN: "meta-string" }),
                            {
                                cN: "meta-string",
                                b: /<[^\n>]*>/,
                                e: /$/,
                                i: "\\n",
                            },
                            e.CLCM,
                            e.CBCM,
                        ],
                    },
                    i = e.IR + "\\s*\\(",
                    s = {
                        keyword:
                            "int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",
                        built_in:
                            "std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",
                        literal: "true false nullptr NULL",
                    },
                    c = [t, e.CLCM, e.CBCM, a, r];
                return {
                    aliases: ["c", "cc", "h", "c++", "h++", "hpp"],
                    k: s,
                    i: "</",
                    c: c.concat([
                        n,
                        {
                            b: "\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",
                            e: ">",
                            k: s,
                            c: ["self", t],
                        },
                        { b: e.IR + "::", k: s },
                        {
                            v: [
                                { b: /=/, e: /;/ },
                                { b: /\(/, e: /\)/ },
                                {
                                    bK: "new throw return else",
                                    e: /;/,
                                },
                            ],
                            k: s,
                            c: c.concat([
                                { b: /\(/, e: /\)/, k: s, c: c.concat(["self"]), r: 0 },
                            ]),
                            r: 0,
                        },
                        {
                            cN: "function",
                            b: "(" + e.IR + "[\\*&\\s]+)+" + i,
                            rB: !0,
                            e: /[{;=]/,
                            eE: !0,
                            k: s,
                            i: /[^\w\s\*&]/,
                            c: [
                                { b: i, rB: !0, c: [e.TM], r: 0 },
                                {
                                    cN: "params",
                                    b: /\(/,
                                    e: /\)/,
                                    k: s,
                                    r: 0,
                                    c: [
                                        e.CLCM,
                                        e.CBCM,
                                        r,
                                        a,
                                        t,
                                        {
                                            b: /\(/,
                                            e: /\)/,
                                            k: s,
                                            r: 0,
                                            c: ["self", e.CLCM, e.CBCM, r, a, t],
                                        },
                                    ],
                                },
                                e.CLCM,
                                e.CBCM,
                                n,
                            ],
                        },
                        {
                            cN: "class",
                            bK: "class struct",
                            e: /[{;:]/,
                            c: [{ b: /</, e: />/, c: ["self"] }, e.TM],
                        },
                    ]),
                    exports: { preprocessor: n, strings: r, k: s },
                };
            }),
            n.registerLanguage("cs", function (e) {
                var t = {
                        keyword:
                            "abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",
                        literal: "null false true",
                    },
                    r = {
                        cN: "number",
                        v: [
                            { b: "\\b(0b[01']+)" },
                            {
                                b: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)",
                            },
                            {
                                b: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)",
                            },
                        ],
                        r: 0,
                    },
                    a = { cN: "string", b: '@"', e: '"', c: [{ b: '""' }] },
                    n = e.inherit(a, { i: /\n/ }),
                    i = { cN: "subst", b: "{", e: "}", k: t },
                    s = e.inherit(i, { i: /\n/ }),
                    c = {
                        cN: "string",
                        b: /\$"/,
                        e: '"',
                        i: /\n/,
                        c: [{ b: "{{" }, { b: "}}" }, e.BE, s],
                    },
                    o = {
                        cN: "string",
                        b: /\$@"/,
                        e: '"',
                        c: [{ b: "{{" }, { b: "}}" }, { b: '""' }, i],
                    },
                    l = e.inherit(o, {
                        i: /\n/,
                        c: [{ b: "{{" }, { b: "}}" }, { b: '""' }, s],
                    });
                (i.c = [o, c, a, e.ASM, e.QSM, r, e.CBCM]),
                    (s.c = [l, c, n, e.ASM, e.QSM, r, e.inherit(e.CBCM, { i: /\n/ })]);
                var u = { v: [o, c, a, e.ASM, e.QSM] },
                    d = e.IR + "(<" + e.IR + "(\\s*,\\s*" + e.IR + ")*>)?(\\[\\])?";
                return {
                    aliases: ["csharp", "c#"],
                    k: t,
                    i: /::/,
                    c: [
                        e.C("///", "$", {
                            rB: !0,
                            c: [
                                {
                                    cN: "doctag",
                                    v: [
                                        { b: "///", r: 0 },
                                        { b: "\x3c!--|--\x3e" },
                                        { b: "</?", e: ">" },
                                    ],
                                },
                            ],
                        }),
                        e.CLCM,
                        e.CBCM,
                        {
                            cN: "meta",
                            b: "#",
                            e: "$",
                            k: {
                                "meta-keyword":
                                    "if else elif endif define undef warning error line region endregion pragma checksum",
                            },
                        },
                        u,
                        r,
                        {
                            bK: "class interface",
                            e: /[{;=]/,
                            i: /[^\s:,]/,
                            c: [e.TM, e.CLCM, e.CBCM],
                        },
                        {
                            bK: "namespace",
                            e: /[{;=]/,
                            i: /[^\s:]/,
                            c: [e.inherit(e.TM, { b: "[a-zA-Z](\\.?\\w)*" }), e.CLCM, e.CBCM],
                        },
                        {
                            cN: "meta",
                            b: "^\\s*\\[",
                            eB: !0,
                            e: "\\]",
                            eE: !0,
                            c: [{ cN: "meta-string", b: /"/, e: /"/ }],
                        },
                        { bK: "new return throw await else", r: 0 },
                        {
                            cN: "function",
                            b: "(" + d + "\\s+)+" + e.IR + "\\s*\\(",
                            rB: !0,
                            e: /\s*[{;=]/,
                            eE: !0,
                            k: t,
                            c: [
                                { b: e.IR + "\\s*\\(", rB: !0, c: [e.TM], r: 0 },
                                {
                                    cN: "params",
                                    b: /\(/,
                                    e: /\)/,
                                    eB: !0,
                                    eE: !0,
                                    k: t,
                                    r: 0,
                                    c: [u, r, e.CBCM],
                                },
                                e.CLCM,
                                e.CBCM,
                            ],
                        },
                    ],
                };
            }),
            n.registerLanguage("css", function (e) {
                var t = {
                    b: /[A-Z\_\.\-]+\s*:/,
                    rB: !0,
                    e: ";",
                    eW: !0,
                    c: [
                        {
                            cN: "attribute",
                            b: /\S/,
                            e: ":",
                            eE: !0,
                            starts: {
                                eW: !0,
                                eE: !0,
                                c: [
                                    {
                                        b: /[\w-]+\(/,
                                        rB: !0,
                                        c: [
                                            { cN: "built_in", b: /[\w-]+/ },
                                            { b: /\(/, e: /\)/, c: [e.ASM, e.QSM] },
                                        ],
                                    },
                                    e.CSSNM,
                                    e.QSM,
                                    e.ASM,
                                    e.CBCM,
                                    { cN: "number", b: "#[0-9A-Fa-f]+" },
                                    {
                                        cN: "meta",
                                        b: "!important",
                                    },
                                ],
                            },
                        },
                    ],
                };
                return {
                    cI: !0,
                    i: /[=\/|'\$]/,
                    c: [
                        e.CBCM,
                        { cN: "selector-id", b: /#[A-Za-z0-9_-]+/ },
                        {
                            cN: "selector-class",
                            b: /\.[A-Za-z0-9_-]+/,
                        },
                        { cN: "selector-attr", b: /\[/, e: /\]/, i: "$" },
                        {
                            cN: "selector-pseudo",
                            b: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/,
                        },
                        {
                            b: "@(font-face|page)",
                            l: "[a-z-]+",
                            k: "font-face page",
                        },
                        {
                            b: "@",
                            e: "[{;]",
                            i: /:/,
                            c: [
                                { cN: "keyword", b: /\w+/ },
                                { b: /\s/, eW: !0, eE: !0, r: 0, c: [e.ASM, e.QSM, e.CSSNM] },
                            ],
                        },
                        { cN: "selector-tag", b: "[a-zA-Z-][a-zA-Z0-9_-]*", r: 0 },
                        { b: "{", e: "}", i: /\S/, c: [e.CBCM, t] },
                    ],
                };
            }),
            n.registerLanguage("diff", function (e) {
                return {
                    aliases: ["patch"],
                    c: [
                        {
                            cN: "meta",
                            r: 10,
                            v: [
                                { b: /^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/ },
                                { b: /^\*\*\* +\d+,\d+ +\*\*\*\*$/ },
                                { b: /^\-\-\- +\d+,\d+ +\-\-\-\-$/ },
                            ],
                        },
                        {
                            cN: "comment",
                            v: [
                                { b: /Index: /, e: /$/ },
                                { b: /={3,}/, e: /$/ },
                                { b: /^\-{3}/, e: /$/ },
                                { b: /^\*{3} /, e: /$/ },
                                { b: /^\+{3}/, e: /$/ },
                                { b: /\*{5}/, e: /\*{5}$/ },
                            ],
                        },
                        { cN: "addition", b: "^\\+", e: "$" },
                        { cN: "deletion", b: "^\\-", e: "$" },
                        {
                            cN: "addition",
                            b: "^\\!",
                            e: "$",
                        },
                    ],
                };
            }),
            n.registerLanguage("http", function (e) {
                var t = "HTTP/[0-9\\.]+";
                return {
                    aliases: ["https"],
                    i: "\\S",
                    c: [
                        { b: "^" + t, e: "$", c: [{ cN: "number", b: "\\b\\d{3}\\b" }] },
                        {
                            b: "^[A-Z]+ (.*?) " + t + "$",
                            rB: !0,
                            e: "$",
                            c: [
                                { cN: "string", b: " ", e: " ", eB: !0, eE: !0 },
                                { b: t },
                                { cN: "keyword", b: "[A-Z]+" },
                            ],
                        },
                        {
                            cN: "attribute",
                            b: "^\\w",
                            e: ": ",
                            eE: !0,
                            i: "\\n|\\s|=",
                            starts: { e: "$", r: 0 },
                        },
                        {
                            b: "\\n\\n",
                            starts: { sL: [], eW: !0 },
                        },
                    ],
                };
            }),
            n.registerLanguage("ini", function (e) {
                var t = {
                    cN: "string",
                    c: [e.BE],
                    v: [
                        { b: "'''", e: "'''", r: 10 },
                        { b: '"""', e: '"""', r: 10 },
                        { b: '"', e: '"' },
                        { b: "'", e: "'" },
                    ],
                };
                return {
                    aliases: ["toml"],
                    cI: !0,
                    i: /\S/,
                    c: [
                        e.C(";", "$"),
                        e.HCM,
                        { cN: "section", b: /^\s*\[+/, e: /\]+/ },
                        {
                            b: /^[a-z0-9\[\]_\.-]+\s*=\s*/,
                            e: "$",
                            rB: !0,
                            c: [
                                { cN: "attr", b: /[a-z0-9\[\]_\.-]+/ },
                                {
                                    b: /=/,
                                    eW: !0,
                                    r: 0,
                                    c: [
                                        { cN: "literal", b: /\bon|off|true|false|yes|no\b/ },
                                        {
                                            cN: "variable",
                                            v: [{ b: /\$[\w\d"][\w\d_]*/ }, { b: /\$\{(.*?)}/ }],
                                        },
                                        t,
                                        { cN: "number", b: /([\+\-]+)?[\d]+_[\d_]+/ },
                                        e.NM,
                                    ],
                                },
                            ],
                        },
                    ],
                };
            }),
            n.registerLanguage("java", function (e) {
                var t =
                        "false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",
                    r = {
                        cN: "number",
                        b: "\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",
                        r: 0,
                    };
                return {
                    aliases: ["jsp"],
                    k: t,
                    i: /<\/|#/,
                    c: [
                        e.C("/\\*\\*", "\\*/", {
                            r: 0,
                            c: [
                                { b: /\w+@/, r: 0 },
                                { cN: "doctag", b: "@[A-Za-z]+" },
                            ],
                        }),
                        e.CLCM,
                        e.CBCM,
                        e.ASM,
                        e.QSM,
                        {
                            cN: "class",
                            bK: "class interface",
                            e: /[{;=]/,
                            eE: !0,
                            k: "class interface",
                            i: /[:"\[\]]/,
                            c: [{ bK: "extends implements" }, e.UTM],
                        },
                        { bK: "new throw return else", r: 0 },
                        {
                            cN: "function",
                            b:
                                "([\u00c0-\u02b8a-zA-Z_$][\u00c0-\u02b8a-zA-Z_$0-9]*(<[\u00c0-\u02b8a-zA-Z_$][\u00c0-\u02b8a-zA-Z_$0-9]*(\\s*,\\s*[\u00c0-\u02b8a-zA-Z_$][\u00c0-\u02b8a-zA-Z_$0-9]*)*>)?\\s+)+" +
                                e.UIR +
                                "\\s*\\(",
                            rB: !0,
                            e: /[{;=]/,
                            eE: !0,
                            k: t,
                            c: [
                                { b: e.UIR + "\\s*\\(", rB: !0, r: 0, c: [e.UTM] },
                                {
                                    cN: "params",
                                    b: /\(/,
                                    e: /\)/,
                                    k: t,
                                    r: 0,
                                    c: [e.ASM, e.QSM, e.CNM, e.CBCM],
                                },
                                e.CLCM,
                                e.CBCM,
                            ],
                        },
                        r,
                        { cN: "meta", b: "@[A-Za-z]+" },
                    ],
                };
            }),
            n.registerLanguage("javascript", function (e) {
                var t = "[A-Za-z$_][0-9A-Za-z$_]*",
                    r = {
                        keyword:
                            "in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",
                        literal: "true false null undefined NaN Infinity",
                        built_in:
                            "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise",
                    },
                    a = {
                        cN: "number",
                        v: [
                            { b: "\\b(0[bB][01]+)" },
                            { b: "\\b(0[oO][0-7]+)" },
                            { b: e.CNR },
                        ],
                        r: 0,
                    },
                    n = { cN: "subst", b: "\\$\\{", e: "\\}", k: r, c: [] },
                    i = { cN: "string", b: "`", e: "`", c: [e.BE, n] };
                n.c = [e.ASM, e.QSM, i, a, e.RM];
                var s = n.c.concat([e.CBCM, e.CLCM]);
                return {
                    aliases: ["js", "jsx"],
                    k: r,
                    c: [
                        { cN: "meta", r: 10, b: /^\s*['"]use (strict|asm)['"]/ },
                        {
                            cN: "meta",
                            b: /^#!/,
                            e: /$/,
                        },
                        e.ASM,
                        e.QSM,
                        i,
                        e.CLCM,
                        e.CBCM,
                        a,
                        {
                            b: /[{,]\s*/,
                            r: 0,
                            c: [
                                { b: t + "\\s*:", rB: !0, r: 0, c: [{ cN: "attr", b: t, r: 0 }] },
                            ],
                        },
                        {
                            b: "(" + e.RSR + "|\\b(case|return|throw)\\b)\\s*",
                            k: "return throw case",
                            c: [
                                e.CLCM,
                                e.CBCM,
                                e.RM,
                                {
                                    cN: "function",
                                    b: "(\\(.*?\\)|" + t + ")\\s*=>",
                                    rB: !0,
                                    e: "\\s*=>",
                                    c: [
                                        {
                                            cN: "params",
                                            v: [
                                                { b: t },
                                                { b: /\(\s*\)/ },
                                                { b: /\(/, e: /\)/, eB: !0, eE: !0, k: r, c: s },
                                            ],
                                        },
                                    ],
                                },
                                {
                                    b: /</,
                                    e: /(\/\w+|\w+\/)>/,
                                    sL: "xml",
                                    c: [
                                        { b: /<\w+\s*\/>/, skip: !0 },
                                        {
                                            b: /<\w+/,
                                            e: /(\/\w+|\w+\/)>/,
                                            skip: !0,
                                            c: [{ b: /<\w+\s*\/>/, skip: !0 }, "self"],
                                        },
                                    ],
                                },
                            ],
                            r: 0,
                        },
                        {
                            cN: "function",
                            bK: "function",
                            e: /\{/,
                            eE: !0,
                            c: [
                                e.inherit(e.TM, { b: t }),
                                { cN: "params", b: /\(/, e: /\)/, eB: !0, eE: !0, c: s },
                            ],
                            i: /\[|%/,
                        },
                        { b: /\$[(.]/ },
                        e.METHOD_GUARD,
                        {
                            cN: "class",
                            bK: "class",
                            e: /[{;=]/,
                            eE: !0,
                            i: /[:"\[\]]/,
                            c: [{ bK: "extends" }, e.UTM],
                        },
                        { bK: "constructor get set", e: /\{/, eE: !0 },
                    ],
                    i: /#(?!!)/,
                };
            }),
            n.registerLanguage("json", function (e) {
                var t = { literal: "true false null" },
                    r = [e.QSM, e.CNM],
                    a = { e: ",", eW: !0, eE: !0, c: r, k: t },
                    n = {
                        b: "{",
                        e: "}",
                        c: [
                            { cN: "attr", b: /"/, e: /"/, c: [e.BE], i: "\\n" },
                            e.inherit(a, { b: /:/ }),
                        ],
                        i: "\\S",
                    },
                    i = { b: "\\[", e: "\\]", c: [e.inherit(a)], i: "\\S" };
                return r.splice(r.length, 0, n, i), { c: r, k: t, i: "\\S" };
            }),
            n.registerLanguage("makefile", function (e) {
                var t = {
                        cN: "variable",
                        v: [
                            { b: "\\$\\(" + e.UIR + "\\)", c: [e.BE] },
                            { b: /\$[@%<?\^\+\*]/ },
                        ],
                    },
                    r = { cN: "string", b: /"/, e: /"/, c: [e.BE, t] },
                    a = {
                        cN: "variable",
                        b: /\$\([\w-]+\s/,
                        e: /\)/,
                        k: {
                            built_in:
                                "subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value",
                        },
                        c: [t],
                    },
                    n = {
                        b: "^" + e.UIR + "\\s*[:+?]?=",
                        i: "\\n",
                        rB: !0,
                        c: [{ b: "^" + e.UIR, e: "[:+?]?=", eE: !0 }],
                    },
                    i = { cN: "section", b: /^[^\s]+:/, e: /$/, c: [t] };
                return {
                    aliases: ["mk", "mak"],
                    k: "define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",
                    l: /[\w-]+/,
                    c: [
                        e.HCM,
                        t,
                        r,
                        a,
                        n,
                        {
                            cN: "meta",
                            b: /^\.PHONY:/,
                            e: /$/,
                            k: { "meta-keyword": ".PHONY" },
                            l: /[\.\w]+/,
                        },
                        i,
                    ],
                };
            }),
            n.registerLanguage("xml", function (e) {
                var t = {
                    eW: !0,
                    i: /</,
                    r: 0,
                    c: [
                        { cN: "attr", b: "[A-Za-z0-9\\._:-]+", r: 0 },
                        {
                            b: /=\s*/,
                            r: 0,
                            c: [
                                {
                                    cN: "string",
                                    endsParent: !0,
                                    v: [
                                        { b: /"/, e: /"/ },
                                        { b: /'/, e: /'/ },
                                        { b: /[^\s"'=<>`]+/ },
                                    ],
                                },
                            ],
                        },
                    ],
                };
                return {
                    aliases: ["html", "xhtml", "rss", "atom", "xjb", "xsd", "xsl", "plist"],
                    cI: !0,
                    c: [
                        {
                            cN: "meta",
                            b: "<!DOCTYPE",
                            e: ">",
                            r: 10,
                            c: [{ b: "\\[", e: "\\]" }],
                        },
                        e.C("\x3c!--", "--\x3e", { r: 10 }),
                        {
                            b: "<\\!\\[CDATA\\[",
                            e: "\\]\\]>",
                            r: 10,
                        },
                        { cN: "meta", b: /<\?xml/, e: /\?>/, r: 10 },
                        {
                            b: /<\?(php)?/,
                            e: /\?>/,
                            sL: "php",
                            c: [
                                { b: "/\\*", e: "\\*/", skip: !0 },
                                { b: 'b"', e: '"', skip: !0 },
                                {
                                    b: "b'",
                                    e: "'",
                                    skip: !0,
                                },
                                e.inherit(e.ASM, { i: null, cN: null, c: null, skip: !0 }),
                                e.inherit(e.QSM, {
                                    i: null,
                                    cN: null,
                                    c: null,
                                    skip: !0,
                                }),
                            ],
                        },
                        {
                            cN: "tag",
                            b: "<style(?=\\s|>|$)",
                            e: ">",
                            k: { name: "style" },
                            c: [t],
                            starts: { e: "</style>", rE: !0, sL: ["css", "xml"] },
                        },
                        {
                            cN: "tag",
                            b: "<script(?=\\s|>|$)",
                            e: ">",
                            k: { name: "script" },
                            c: [t],
                            starts: {
                                e: "\x3c/script>",
                                rE: !0,
                                sL: ["actionscript", "javascript", "handlebars", "xml"],
                            },
                        },
                        {
                            cN: "tag",
                            b: "</?",
                            e: "/?>",
                            c: [{ cN: "name", b: /[^\/><\s]+/, r: 0 }, t],
                        },
                    ],
                };
            }),
            n.registerLanguage("markdown", function (e) {
                return {
                    aliases: ["md", "mkdown", "mkd"],
                    c: [
                        {
                            cN: "section",
                            v: [{ b: "^#{1,6}", e: "$" }, { b: "^.+?\\n[=-]{2,}$" }],
                        },
                        {
                            b: "<",
                            e: ">",
                            sL: "xml",
                            r: 0,
                        },
                        { cN: "bullet", b: "^([*+-]|(\\d+\\.))\\s+" },
                        { cN: "strong", b: "[*_]{2}.+?[*_]{2}" },
                        {
                            cN: "emphasis",
                            v: [{ b: "\\*.+?\\*" }, { b: "_.+?_", r: 0 }],
                        },
                        { cN: "quote", b: "^>\\s+", e: "$" },
                        {
                            cN: "code",
                            v: [
                                { b: "^```w*s*$", e: "^```s*$" },
                                { b: "`.+?`" },
                                { b: "^( {4}|\t)", e: "$", r: 0 },
                            ],
                        },
                        { b: "^[-\\*]{3,}", e: "$" },
                        {
                            b: "\\[.+?\\][\\(\\[].*?[\\)\\]]",
                            rB: !0,
                            c: [
                                { cN: "string", b: "\\[", e: "\\]", eB: !0, rE: !0, r: 0 },
                                {
                                    cN: "link",
                                    b: "\\]\\(",
                                    e: "\\)",
                                    eB: !0,
                                    eE: !0,
                                },
                                { cN: "symbol", b: "\\]\\[", e: "\\]", eB: !0, eE: !0 },
                            ],
                            r: 10,
                        },
                        {
                            b: /^\[[^\n]+\]:/,
                            rB: !0,
                            c: [
                                { cN: "symbol", b: /\[/, e: /\]/, eB: !0, eE: !0 },
                                { cN: "link", b: /:\s*/, e: /$/, eB: !0 },
                            ],
                        },
                    ],
                };
            }),
            n.registerLanguage("nginx", function (e) {
                var t = {
                        cN: "variable",
                        v: [{ b: /\$\d+/ }, { b: /\$\{/, e: /}/ }, { b: "[\\$\\@]" + e.UIR }],
                    },
                    r = {
                        eW: !0,
                        l: "[a-z/_]+",
                        k: {
                            literal:
                                "on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll",
                        },
                        r: 0,
                        i: "=>",
                        c: [
                            e.HCM,
                            {
                                cN: "string",
                                c: [e.BE, t],
                                v: [
                                    { b: /"/, e: /"/ },
                                    { b: /'/, e: /'/ },
                                ],
                            },
                            {
                                b: "([a-z]+):/",
                                e: "\\s",
                                eW: !0,
                                eE: !0,
                                c: [t],
                            },
                            {
                                cN: "regexp",
                                c: [e.BE, t],
                                v: [
                                    { b: "\\s\\^", e: "\\s|{|;", rE: !0 },
                                    {
                                        b: "~\\*?\\s+",
                                        e: "\\s|{|;",
                                        rE: !0,
                                    },
                                    { b: "\\*(\\.[a-z\\-]+)+" },
                                    { b: "([a-z\\-]+\\.)+\\*" },
                                ],
                            },
                            {
                                cN: "number",
                                b: "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b",
                            },
                            {
                                cN: "number",
                                b: "\\b\\d+[kKmMgGdshdwy]*\\b",
                                r: 0,
                            },
                            t,
                        ],
                    };
                return {
                    aliases: ["nginxconf"],
                    c: [
                        e.HCM,
                        {
                            b: e.UIR + "\\s+{",
                            rB: !0,
                            e: "{",
                            c: [{ cN: "section", b: e.UIR }],
                            r: 0,
                        },
                        {
                            b: e.UIR + "\\s",
                            e: ";|{",
                            rB: !0,
                            c: [{ cN: "attribute", b: e.UIR, starts: r }],
                            r: 0,
                        },
                    ],
                    i: "[^\\s\\}]",
                };
            }),
            n.registerLanguage("objectivec", function (e) {
                var t = /[a-zA-Z@][a-zA-Z0-9_]*/,
                    r = "@interface @class @protocol @implementation";
                return {
                    aliases: ["mm", "objc", "obj-c"],
                    k: {
                        keyword:
                            "int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",
                        literal: "false true FALSE TRUE nil YES NO NULL",
                        built_in:
                            "BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once",
                    },
                    l: t,
                    i: "</",
                    c: [
                        {
                            cN: "built_in",
                            b: "\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+",
                        },
                        e.CLCM,
                        e.CBCM,
                        e.CNM,
                        e.QSM,
                        {
                            cN: "string",
                            v: [
                                { b: '@"', e: '"', i: "\\n", c: [e.BE] },
                                { b: "'", e: "[^\\\\]'", i: "[^\\\\][^']" },
                            ],
                        },
                        {
                            cN: "meta",
                            b: "#",
                            e: "$",
                            c: [
                                {
                                    cN: "meta-string",
                                    v: [
                                        { b: '"', e: '"' },
                                        { b: "<", e: ">" },
                                    ],
                                },
                            ],
                        },
                        {
                            cN: "class",
                            b: "(" + r.split(" ").join("|") + ")\\b",
                            e: "({|$)",
                            eE: !0,
                            k: r,
                            l: t,
                            c: [e.UTM],
                        },
                        { b: "\\." + e.UIR, r: 0 },
                    ],
                };
            }),
            n.registerLanguage("perl", function (e) {
                var t =
                        "getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",
                    r = { cN: "subst", b: "[$@]\\{", e: "\\}", k: t },
                    a = { b: "->{", e: "}" },
                    n = {
                        v: [
                            { b: /\$\d/ },
                            { b: /[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/ },
                            { b: /[\$%@][^\s\w{]/, r: 0 },
                        ],
                    },
                    i = [e.BE, r, n],
                    s = [
                        n,
                        e.HCM,
                        e.C("^\\=\\w", "\\=cut", { eW: !0 }),
                        a,
                        {
                            cN: "string",
                            c: i,
                            v: [
                                { b: "q[qwxr]?\\s*\\(", e: "\\)", r: 5 },
                                { b: "q[qwxr]?\\s*\\[", e: "\\]", r: 5 },
                                {
                                    b: "q[qwxr]?\\s*\\{",
                                    e: "\\}",
                                    r: 5,
                                },
                                { b: "q[qwxr]?\\s*\\|", e: "\\|", r: 5 },
                                { b: "q[qwxr]?\\s*\\<", e: "\\>", r: 5 },
                                {
                                    b: "qw\\s+q",
                                    e: "q",
                                    r: 5,
                                },
                                { b: "'", e: "'", c: [e.BE] },
                                { b: '"', e: '"' },
                                { b: "`", e: "`", c: [e.BE] },
                                {
                                    b: "{\\w+}",
                                    c: [],
                                    r: 0,
                                },
                                { b: "-?\\w+\\s*\\=\\>", c: [], r: 0 },
                            ],
                        },
                        {
                            cN: "number",
                            b: "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
                            r: 0,
                        },
                        {
                            b:
                                "(\\/\\/|" +
                                e.RSR +
                                "|\\b(split|return|print|reverse|grep)\\b)\\s*",
                            k: "split return print reverse grep",
                            r: 0,
                            c: [
                                e.HCM,
                                {
                                    cN: "regexp",
                                    b: "(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",
                                    r: 10,
                                },
                                {
                                    cN: "regexp",
                                    b: "(m|qr)?/",
                                    e: "/[a-z]*",
                                    c: [e.BE],
                                    r: 0,
                                },
                            ],
                        },
                        {
                            cN: "function",
                            bK: "sub",
                            e: "(\\s*\\(.*?\\))?[;{]",
                            eE: !0,
                            r: 5,
                            c: [e.TM],
                        },
                        { b: "-\\w\\b", r: 0 },
                        {
                            b: "^__DATA__$",
                            e: "^__END__$",
                            sL: "mojolicious",
                            c: [{ b: "^@@.*", e: "$", cN: "comment" }],
                        },
                    ];
                return (
                    (r.c = s), { aliases: ["pl", "pm"], l: /[\w\.]+/, k: t, c: (a.c = s) }
                );
            }),
            n.registerLanguage("php", function (e) {
                var t = { b: "\\$+[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*" },
                    r = { cN: "meta", b: /<\?(php)?|\?>/ },
                    a = {
                        cN: "string",
                        c: [e.BE, r],
                        v: [
                            { b: 'b"', e: '"' },
                            { b: "b'", e: "'" },
                            e.inherit(e.ASM, { i: null }),
                            e.inherit(e.QSM, { i: null }),
                        ],
                    },
                    n = { v: [e.BNM, e.CNM] };
                return {
                    aliases: ["php", "php3", "php4", "php5", "php6", "php7"],
                    cI: !0,
                    k: "and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",
                    c: [
                        e.HCM,
                        e.C("//", "$", { c: [r] }),
                        e.C("/\\*", "\\*/", {
                            c: [
                                {
                                    cN: "doctag",
                                    b: "@[A-Za-z]+",
                                },
                            ],
                        }),
                        e.C("__halt_compiler.+?;", !1, {
                            eW: !0,
                            k: "__halt_compiler",
                            l: e.UIR,
                        }),
                        {
                            cN: "string",
                            b: /<<<['"]?\w+['"]?$/,
                            e: /^\w+;?$/,
                            c: [
                                e.BE,
                                { cN: "subst", v: [{ b: /\$\w+/ }, { b: /\{\$/, e: /\}/ }] },
                            ],
                        },
                        r,
                        {
                            cN: "keyword",
                            b: /\$this\b/,
                        },
                        t,
                        { b: /(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/ },
                        {
                            cN: "function",
                            bK: "function",
                            e: /[;{]/,
                            eE: !0,
                            i: "\\$|\\[|%",
                            c: [
                                e.UTM,
                                {
                                    cN: "params",
                                    b: "\\(",
                                    e: "\\)",
                                    c: ["self", t, e.CBCM, a, n],
                                },
                            ],
                        },
                        {
                            cN: "class",
                            bK: "class interface",
                            e: "{",
                            eE: !0,
                            i: /[:\(\$"]/,
                            c: [{ bK: "extends implements" }, e.UTM],
                        },
                        { bK: "namespace", e: ";", i: /[\.']/, c: [e.UTM] },
                        { bK: "use", e: ";", c: [e.UTM] },
                        { b: "=>" },
                        a,
                        n,
                    ],
                };
            }),
            n.registerLanguage("properties", function (e) {
                var t = "[ \\t\\f]*",
                    r = "(" + t + "[:=]" + t + "|[ \\t\\f]+)",
                    a = "([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",
                    n = "([^\\\\:= \\t\\f\\n]|\\\\.)+",
                    i = {
                        e: r,
                        r: 0,
                        starts: { cN: "string", e: /$/, r: 0, c: [{ b: "\\\\\\n" }] },
                    };
                return {
                    cI: !0,
                    i: /\S/,
                    c: [
                        e.C("^\\s*[!#]", "$"),
                        {
                            b: a + r,
                            rB: !0,
                            c: [{ cN: "attr", b: a, endsParent: !0, r: 0 }],
                            starts: i,
                        },
                        {
                            b: n + r,
                            rB: !0,
                            r: 0,
                            c: [
                                {
                                    cN: "meta",
                                    b: n,
                                    endsParent: !0,
                                    r: 0,
                                },
                            ],
                            starts: i,
                        },
                        { cN: "attr", r: 0, b: n + t + "$" },
                    ],
                };
            }),
            n.registerLanguage("python", function (e) {
                var t = {
                        keyword:
                            "and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",
                        built_in: "Ellipsis NotImplemented",
                        literal: "False None True",
                    },
                    r = { cN: "meta", b: /^(>>>|\.\.\.) / },
                    a = { cN: "subst", b: /\{/, e: /\}/, k: t, i: /#/ },
                    n = {
                        cN: "string",
                        c: [e.BE],
                        v: [
                            {
                                b: /(u|b)?r?'''/,
                                e: /'''/,
                                c: [e.BE, r],
                                r: 10,
                            },
                            { b: /(u|b)?r?"""/, e: /"""/, c: [e.BE, r], r: 10 },
                            {
                                b: /(fr|rf|f)'''/,
                                e: /'''/,
                                c: [e.BE, r, a],
                            },
                            { b: /(fr|rf|f)"""/, e: /"""/, c: [e.BE, r, a] },
                            { b: /(u|r|ur)'/, e: /'/, r: 10 },
                            {
                                b: /(u|r|ur)"/,
                                e: /"/,
                                r: 10,
                            },
                            { b: /(b|br)'/, e: /'/ },
                            { b: /(b|br)"/, e: /"/ },
                            {
                                b: /(fr|rf|f)'/,
                                e: /'/,
                                c: [e.BE, a],
                            },
                            { b: /(fr|rf|f)"/, e: /"/, c: [e.BE, a] },
                            e.ASM,
                            e.QSM,
                        ],
                    },
                    i = {
                        cN: "number",
                        r: 0,
                        v: [
                            { b: e.BNR + "[lLjJ]?" },
                            { b: "\\b(0o[0-7]+)[lLjJ]?" },
                            { b: e.CNR + "[lLjJ]?" },
                        ],
                    },
                    s = { cN: "params", b: /\(/, e: /\)/, c: ["self", r, i, n] };
                return (
                    (a.c = [n, i, r]),
                        {
                            aliases: ["py", "gyp", "ipython"],
                            k: t,
                            i: /(<\/|->|\?)|=>/,
                            c: [
                                r,
                                i,
                                n,
                                e.HCM,
                                {
                                    v: [
                                        { cN: "function", bK: "def" },
                                        { cN: "class", bK: "class" },
                                    ],
                                    e: /:/,
                                    i: /[${=;\n,]/,
                                    c: [e.UTM, s, { b: /->/, eW: !0, k: "None" }],
                                },
                                { cN: "meta", b: /^[\t ]*@/, e: /$/ },
                                { b: /\b(print|exec)\(/ },
                            ],
                        }
                );
            }),
            n.registerLanguage("ruby", function (e) {
                var t =
                        "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",
                    r = {
                        keyword:
                            "and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",
                        literal: "true false nil",
                    },
                    a = { cN: "doctag", b: "@[A-Za-z]+" },
                    n = { b: "#<", e: ">" },
                    i = [
                        e.C("#", "$", { c: [a] }),
                        e.C("^\\=begin", "^\\=end", { c: [a], r: 10 }),
                        e.C("^__END__", "\\n$"),
                    ],
                    s = { cN: "subst", b: "#\\{", e: "}", k: r },
                    c = {
                        cN: "string",
                        c: [e.BE, s],
                        v: [
                            { b: /'/, e: /'/ },
                            { b: /"/, e: /"/ },
                            { b: /`/, e: /`/ },
                            { b: "%[qQwWx]?\\(", e: "\\)" },
                            {
                                b: "%[qQwWx]?\\[",
                                e: "\\]",
                            },
                            { b: "%[qQwWx]?{", e: "}" },
                            { b: "%[qQwWx]?<", e: ">" },
                            { b: "%[qQwWx]?/", e: "/" },
                            {
                                b: "%[qQwWx]?%",
                                e: "%",
                            },
                            { b: "%[qQwWx]?-", e: "-" },
                            {
                                b: "%[qQwWx]?\\|",
                                e: "\\|",
                            },
                            {
                                b: /\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/,
                            },
                            { b: /<<(-?)\w+$/, e: /^\s*\w+$/ },
                        ],
                    },
                    o = { cN: "params", b: "\\(", e: "\\)", endsParent: !0, k: r },
                    l = [
                        c,
                        n,
                        {
                            cN: "class",
                            bK: "class module",
                            e: "$|;",
                            i: /=/,
                            c: [
                                e.inherit(e.TM, { b: "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?" }),
                                {
                                    b: "<\\s*",
                                    c: [{ b: "(" + e.IR + "::)?" + e.IR }],
                                },
                            ].concat(i),
                        },
                        {
                            cN: "function",
                            bK: "def",
                            e: "$|;",
                            c: [e.inherit(e.TM, { b: t }), o].concat(i),
                        },
                        { b: e.IR + "::" },
                        { cN: "symbol", b: e.UIR + "(\\!|\\?)?:", r: 0 },
                        {
                            cN: "symbol",
                            b: ":(?!\\s)",
                            c: [c, { b: t }],
                            r: 0,
                        },
                        {
                            cN: "number",
                            b: "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
                            r: 0,
                        },
                        { b: "(\\$\\W)|((\\$|\\@\\@?)(\\w+))" },
                        {
                            cN: "params",
                            b: /\|/,
                            e: /\|/,
                            k: r,
                        },
                        {
                            b: "(" + e.RSR + "|unless)\\s*",
                            k: "unless",
                            c: [
                                n,
                                {
                                    cN: "regexp",
                                    c: [e.BE, s],
                                    i: /\n/,
                                    v: [
                                        { b: "/", e: "/[a-z]*" },
                                        { b: "%r{", e: "}[a-z]*" },
                                        { b: "%r\\(", e: "\\)[a-z]*" },
                                        {
                                            b: "%r!",
                                            e: "![a-z]*",
                                        },
                                        { b: "%r\\[", e: "\\][a-z]*" },
                                    ],
                                },
                            ].concat(i),
                            r: 0,
                        },
                    ].concat(i);
                s.c = l;
                var u = [
                    { b: /^\s*=>/, starts: { e: "$", c: (o.c = l) } },
                    {
                        cN: "meta",
                        b: "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",
                        starts: { e: "$", c: l },
                    },
                ];
                return {
                    aliases: ["rb", "gemspec", "podspec", "thor", "irb"],
                    k: r,
                    i: /\/\*/,
                    c: i.concat(u).concat(l),
                };
            }),
            n.registerLanguage("shell", function (e) {
                return {
                    aliases: ["console"],
                    c: [
                        {
                            cN: "meta",
                            b: "^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",
                            starts: { e: "$", sL: "bash" },
                        },
                    ],
                };
            }),
            n.registerLanguage("sql", function (e) {
                var t = e.C("--", "$");
                return {
                    cI: !0,
                    i: /[<>{}*]/,
                    c: [
                        {
                            bK: "begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",
                            e: /;/,
                            eW: !0,
                            l: /[\w\.]+/,
                            k: {
                                keyword:
                                    "as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",
                                literal: "true false null unknown",
                                built_in:
                                    "array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void",
                            },
                            c: [
                                { cN: "string", b: "'", e: "'", c: [e.BE, { b: "''" }] },
                                {
                                    cN: "string",
                                    b: '"',
                                    e: '"',
                                    c: [e.BE, { b: '""' }],
                                },
                                { cN: "string", b: "`", e: "`", c: [e.BE] },
                                e.CNM,
                                e.CBCM,
                                t,
                                e.HCM,
                            ],
                        },
                        e.CBCM,
                        t,
                        e.HCM,
                    ],
                };
            }),
            n
    );
});
hljs.registerLanguage("swift", function (e) {
    var i = {
            keyword:
                "#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",
            literal: "true false nil",
            built_in:
                "abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip",
        },
        t = e.C("/\\*", "\\*/", { c: ["self"] }),
        n = { cN: "subst", b: /\\\(/, e: "\\)", k: i, c: [] },
        r = {
            cN: "string",
            c: [e.BE, n],
            v: [
                { b: /"""/, e: /"""/ },
                { b: /"/, e: /"/ },
            ],
        },
        a = {
            cN: "number",
            b: "\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",
            r: 0,
        };
    return (
        (n.c = [a]),
            {
                k: i,
                c: [
                    r,
                    e.CLCM,
                    t,
                    { cN: "type", b: "\\b[A-Z][\\w\u00c0-\u02b8']*[!?]" },
                    {
                        cN: "type",
                        b: "\\b[A-Z][\\w\u00c0-\u02b8']*",
                        r: 0,
                    },
                    a,
                    {
                        cN: "function",
                        bK: "func",
                        e: "{",
                        eE: !0,
                        c: [
                            e.inherit(e.TM, { b: /[A-Za-z$_][0-9A-Za-z$_]*/ }),
                            { b: /</, e: />/ },
                            {
                                cN: "params",
                                b: /\(/,
                                e: /\)/,
                                endsParent: !0,
                                k: i,
                                c: ["self", a, r, e.CBCM, { b: ":" }],
                                i: /["']/,
                            },
                        ],
                        i: /\[|%/,
                    },
                    {
                        cN: "class",
                        bK: "struct protocol class extension enum",
                        k: i,
                        e: "\\{",
                        eE: !0,
                        c: [e.inherit(e.TM, { b: /[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/ })],
                    },
                    {
                        cN: "meta",
                        b: "(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)",
                    },
                    { bK: "import", e: /$/, c: [e.CLCM, t] },
                ],
            }
    );
});
hljs.registerLanguage("scss", function (e) {
    var t = { cN: "variable", b: "(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b" },
        i = { cN: "number", b: "#[0-9A-Fa-f]+" };
    e.CSSNM, e.QSM, e.ASM, e.CBCM;
    return {
        cI: !0,
        i: "[=/|']",
        c: [
            e.CLCM,
            e.CBCM,
            { cN: "selector-id", b: "\\#[A-Za-z0-9_-]+", r: 0 },
            {
                cN: "selector-class",
                b: "\\.[A-Za-z0-9_-]+",
                r: 0,
            },
            { cN: "selector-attr", b: "\\[", e: "\\]", i: "$" },
            {
                cN: "selector-tag",
                b: "\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",
                r: 0,
            },
            {
                b: ":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)",
            },
            {
                b: "::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)",
            },
            t,
            {
                cN: "attribute",
                b: "\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",
                i: "[^\\s]",
            },
            {
                b: "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b",
            },
            {
                b: ":",
                e: ";",
                c: [t, i, e.CSSNM, e.QSM, e.ASM, { cN: "meta", b: "!important" }],
            },
            {
                b: "@",
                e: "[{;]",
                k: "mixin include extend for if else each while charset import debug media page content font-face namespace warn",
                c: [t, e.QSM, e.ASM, i, e.CSSNM, { b: "\\s[A-Za-z0-9_.-]+", r: 0 }],
            },
        ],
    };
});
!(function (e, t) {
    "object" == typeof exports && "object" == typeof module
        ? (module.exports = t())
        : "function" == typeof define && define.amd
            ? define("pangu", [], t)
            : "object" == typeof exports
                ? (exports.pangu = "")
                : (e.pangu = "");
})(window, function () {
    return (function (e) {
        var t = {};

        function n(a) {
            if (t[a]) return t[a].exports;
            var i = (t[a] = { i: a, l: !1, exports: {} });
            return e[a].call(i.exports, i, i.exports, n), (i.l = !0), i.exports;
        }

        return (
            (n.m = e),
                (n.c = t),
                (n.d = function (e, t, a) {
                    n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: a });
                }),
                (n.r = function (e) {
                    "undefined" != typeof Symbol &&
                    Symbol.toStringTag &&
                    Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
                        Object.defineProperty(e, "__esModule", { value: !0 });
                }),
                (n.t = function (e, t) {
                    if ((1 & t && (e = n(e)), 8 & t)) return e;
                    if (4 & t && "object" == typeof e && e && e.__esModule) return e;
                    var a = Object.create(null);
                    if (
                        (n.r(a),
                            Object.defineProperty(a, "default", {
                                enumerable: !0,
                                value: e,
                            }),
                        2 & t && "string" != typeof e)
                    )
                        for (var i in e)
                            n.d(
                                a,
                                i,
                                function (t) {
                                    return e[t];
                                }.bind(null, i)
                            );
                    return a;
                }),
                (n.n = function (e) {
                    var t =
                        e && e.__esModule
                            ? function () {
                                return e["default"];
                            }
                            : function () {
                                return e;
                            };
                    return n.d(t, "a", t), t;
                }),
                (n.o = function (e, t) {
                    return Object.prototype.hasOwnProperty.call(e, t);
                }),
                (n.p = ""),
                n((n.s = 0))
        );
    })([
        function (e, t, n) {
            var a, i, o;
            (i = []),
            void 0 ===
            (o =
                "function" ==
                typeof (a = function () {
                    function t(e) {
                        return (t =
                            "function" == typeof Symbol &&
                            "symbol" == typeof Symbol.iterator
                                ? function (e) {
                                    return typeof e;
                                }
                                : function (e) {
                                    return e &&
                                    "function" == typeof Symbol &&
                                    e.constructor === Symbol &&
                                    e !== Symbol.prototype
                                        ? "symbol"
                                        : typeof e;
                                })(e);
                    }

                    function a(e, t) {
                        for (var n = 0; n < t.length; n++) {
                            var a = t[n];
                            (a.enumerable = a.enumerable || !1),
                                (a.configurable = !0),
                            "value" in a && (a.writable = !0),
                                Object.defineProperty(e, a.key, a);
                        }
                    }

                    function i(e, n) {
                        return !n || ("object" !== t(n) && "function" != typeof n)
                            ? (function (e) {
                                if (void 0 === e)
                                    throw new ReferenceError(
                                        "this hasn't been initialised - super() hasn't been called"
                                    );
                                return e;
                            })(e)
                            : n;
                    }

                    function o(e) {
                        return (o = Object.setPrototypeOf
                            ? Object.getPrototypeOf
                            : function (e) {
                                return e.__proto__ || Object.getPrototypeOf(e);
                            })(e);
                    }

                    function r(e, t) {
                        return (r =
                            Object.setPrototypeOf ||
                            function (e, t) {
                                return (e.__proto__ = t), e;
                            })(e, t);
                    }

                    var c = (function (e) {
                            function t() {
                                var e;
                                return (
                                    (function (e, t) {
                                        if (!(e instanceof t))
                                            throw new TypeError(
                                                "Cannot call a class as a function"
                                            );
                                    })(this, t),
                                        ((e = i(this, o(t).call(this))).blockTags =
                                            /^(div|p|h1|h2|h3|h4|h5|h6)$/i),
                                        (e.ignoredTags = /^(script|code|pre|textarea)$/i),
                                        (e.presentationalTags = /^(b|code|del|em|i|s|strong)$/i),
                                        (e.spaceLikeTags = /^(br|hr|i|img|pangu)$/i),
                                        (e.spaceSensitiveTags = /^(a|del|pre|s|strike|u)$/i),
                                        (e.isAutoSpacingPageExecuted = !1),
                                        e
                                );
                            }

                            return (
                                (function (e, t) {
                                    if ("function" != typeof t && null !== t)
                                        throw new TypeError(
                                            "Super expression must either be null or a function"
                                        );
                                    (e.prototype = Object.create(t && t.prototype, {
                                        constructor: {
                                            value: e,
                                            writable: !0,
                                            configurable: !0,
                                        },
                                    })),
                                    t && r(e, t);
                                })(t, e),
                                    (n = t),
                                (c = [
                                    {
                                        key: "isContentEditable",
                                        value: function (e) {
                                            return (
                                                e.isContentEditable ||
                                                (e.getAttribute &&
                                                    "true" === e.getAttribute("g_editable"))
                                            );
                                        },
                                    },
                                    {
                                        key: "isSpecificTag",
                                        value: function (e, t) {
                                            return e && e.nodeName && e.nodeName.search(t) >= 0;
                                        },
                                    },
                                    {
                                        key: "isInsideSpecificTag",
                                        value: function (e, t) {
                                            var n =
                                                    arguments.length > 2 &&
                                                    void 0 !== arguments[2] &&
                                                    arguments[2],
                                                a = e;
                                            if (n && this.isSpecificTag(a, t)) return !0;
                                            for (; a.parentNode; )
                                                if (((a = a.parentNode), this.isSpecificTag(a, t)))
                                                    return !0;
                                            return !1;
                                        },
                                    },
                                    {
                                        key: "canIgnoreNode",
                                        value: function (e) {
                                            var t = e;
                                            if (
                                                t &&
                                                (this.isSpecificTag(t, this.ignoredTags) ||
                                                    this.isContentEditable(t))
                                            )
                                                return !0;
                                            for (; t.parentNode; )
                                                if (
                                                    (t = t.parentNode) &&
                                                    (this.isSpecificTag(t, this.ignoredTags) ||
                                                        this.isContentEditable(t))
                                                )
                                                    return !0;
                                            return !1;
                                        },
                                    },
                                    {
                                        key: "isFirstTextChild",
                                        value: function (e, t) {
                                            for (var n = e.childNodes, a = 0; a < n.length; a++) {
                                                var i = n[a];
                                                if (
                                                    i.nodeType !== Node.COMMENT_NODE &&
                                                    i.textContent
                                                )
                                                    return i === t;
                                            }
                                            return !1;
                                        },
                                    },
                                    {
                                        key: "isLastTextChild",
                                        value: function (e, t) {
                                            for (
                                                var n = e.childNodes, a = n.length - 1;
                                                a > -1;
                                                a--
                                            ) {
                                                var i = n[a];
                                                if (
                                                    i.nodeType !== Node.COMMENT_NODE &&
                                                    i.textContent
                                                )
                                                    return i === t;
                                            }
                                            return !1;
                                        },
                                    },
                                    {
                                        key: "spacingNodeByXPath",
                                        value: function (e, t) {
                                            if (
                                                t instanceof Node &&
                                                !(t instanceof DocumentFragment)
                                            )
                                                for (
                                                    var n,
                                                        a,
                                                        i = document.evaluate(
                                                            e,
                                                            t,
                                                            null,
                                                            XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                                                            null
                                                        ),
                                                        o = i.snapshotLength - 1;
                                                    o > -1;
                                                    --o
                                                ) {
                                                    if (
                                                        ((n = i.snapshotItem(o)),
                                                        this.isSpecificTag(
                                                            n.parentNode,
                                                            this.presentationalTags
                                                        ) &&
                                                        !this.isInsideSpecificTag(
                                                            n.parentNode,
                                                            this.ignoredTags
                                                        ))
                                                    ) {
                                                        var r = n.parentNode;
                                                        if (r.previousSibling) {
                                                            var c = r.previousSibling;
                                                            if (c.nodeType === Node.TEXT_NODE) {
                                                                var s =
                                                                        c.data.substr(-1) +
                                                                        n.data.toString().charAt(0),
                                                                    u = this.spacing(s);
                                                                s !== u &&
                                                                (c.data = "".concat(c.data, " "));
                                                            }
                                                        }
                                                        if (r.nextSibling) {
                                                            var p = r.nextSibling;
                                                            if (p.nodeType === Node.TEXT_NODE) {
                                                                var l =
                                                                        n.data.substr(-1) +
                                                                        p.data.toString().charAt(0),
                                                                    f = this.spacing(l);
                                                                l !== f && (p.data = " ".concat(p.data));
                                                            }
                                                        }
                                                    }
                                                    if (this.canIgnoreNode(n)) a = n;
                                                    else {
                                                        var g = this.spacing(n.data);
                                                        if ((n.data !== g && (n.data = g), a)) {
                                                            if (
                                                                n.nextSibling &&
                                                                n.nextSibling.nodeName.search(
                                                                    this.spaceLikeTags
                                                                ) >= 0
                                                            ) {
                                                                a = n;
                                                                continue;
                                                            }
                                                            var d =
                                                                    n.data.toString().substr(-1) +
                                                                    a.data.toString().substr(0, 1),
                                                                h = this.spacing(d);
                                                            if (h !== d) {
                                                                for (
                                                                    var y = a;
                                                                    y.parentNode &&
                                                                    -1 ===
                                                                    y.nodeName.search(
                                                                        this.spaceSensitiveTags
                                                                    ) &&
                                                                    this.isFirstTextChild(y.parentNode, y);

                                                                )
                                                                    y = y.parentNode;
                                                                for (
                                                                    var v = n;
                                                                    v.parentNode &&
                                                                    -1 ===
                                                                    v.nodeName.search(
                                                                        this.spaceSensitiveTags
                                                                    ) &&
                                                                    this.isLastTextChild(v.parentNode, v);

                                                                )
                                                                    v = v.parentNode;
                                                                if (
                                                                    v.nextSibling &&
                                                                    v.nextSibling.nodeName.search(
                                                                        this.spaceLikeTags
                                                                    ) >= 0
                                                                ) {
                                                                    a = n;
                                                                    continue;
                                                                }
                                                                if (
                                                                    -1 === v.nodeName.search(this.blockTags)
                                                                )
                                                                    if (
                                                                        -1 ===
                                                                        y.nodeName.search(
                                                                            this.spaceSensitiveTags
                                                                        )
                                                                    )
                                                                        -1 ===
                                                                        y.nodeName.search(this.ignoredTags) &&
                                                                        -1 ===
                                                                        y.nodeName.search(this.blockTags) &&
                                                                        (a.previousSibling
                                                                            ? -1 ===
                                                                            a.previousSibling.nodeName.search(
                                                                                this.spaceLikeTags
                                                                            ) &&
                                                                            (a.data = " ".concat(a.data))
                                                                            : this.canIgnoreNode(a) ||
                                                                            (a.data = " ".concat(a.data)));
                                                                    else if (
                                                                        -1 ===
                                                                        v.nodeName.search(
                                                                            this.spaceSensitiveTags
                                                                        )
                                                                    )
                                                                        n.data = "".concat(n.data, " ");
                                                                    else {
                                                                        var b = document.createElement("pangu");
                                                                        (b.innerHTML = " "),
                                                                            y.previousSibling
                                                                                ? -1 ===
                                                                                y.previousSibling.nodeName.search(
                                                                                    this.spaceLikeTags
                                                                                ) &&
                                                                                y.parentNode.insertBefore(b, y)
                                                                                : y.parentNode.insertBefore(b, y),
                                                                        b.previousElementSibling ||
                                                                        (b.parentNode &&
                                                                            b.parentNode.removeChild(b));
                                                                    }
                                                            }
                                                        }
                                                        a = n;
                                                    }
                                                }
                                        },
                                    },
                                    {
                                        key: "spacingNode",
                                        value: function (e) {
                                            var t = ".//*/text()[normalize-space(.)]";
                                            e.children &&
                                            0 === e.children.length &&
                                            (t = ".//text()[normalize-space(.)]"),
                                                this.spacingNodeByXPath(t, e);
                                        },
                                    },
                                    {
                                        key: "spacingElementById",
                                        value: function (e) {
                                            var t = 'id("'.concat(e, '")//text()');
                                            this.spacingNodeByXPath(t, document);
                                        },
                                    },
                                    {
                                        key: "spacingElementByClassName",
                                        value: function (e) {
                                            var t =
                                                '//*[contains(concat(" ", normalize-space(@class), " "), "'.concat(
                                                    e,
                                                    '")]//text()'
                                                );
                                            this.spacingNodeByXPath(t, document);
                                        },
                                    },
                                    {
                                        key: "spacingElementByTagName",
                                        value: function (e) {
                                            var t = "//".concat(e, "//text()");
                                            this.spacingNodeByXPath(t, document);
                                        },
                                    },
                                    {
                                        key: "spacingPageTitle",
                                        value: function () {
                                            this.spacingNodeByXPath(
                                                "/html/head/title/text()",
                                                document
                                            );
                                        },
                                    },
                                    {
                                        key: "spacingPageBody",
                                        value: function () {
                                            var e = "/html/body//*/text()[normalize-space(.)]";
                                            ["script", "style", "textarea"].forEach(function (t) {
                                                e = ""
                                                    .concat(
                                                        e,
                                                        '[translate(name(..),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")!="'
                                                    )
                                                    .concat(t, '"]');
                                            }),
                                                this.spacingNodeByXPath(e, document);
                                        },
                                    },
                                    {
                                        key: "spacingPage",
                                        value: function () {
                                            this.spacingPageTitle(), this.spacingPageBody();
                                        },
                                    },
                                    {
                                        key: "autoSpacingPage",
                                        value: function () {
                                            var e =
                                                    arguments.length > 0 && void 0 !== arguments[0]
                                                        ? arguments[0]
                                                        : 1e3,
                                                t =
                                                    arguments.length > 1 && void 0 !== arguments[1]
                                                        ? arguments[1]
                                                        : 500,
                                                n =
                                                    arguments.length > 2 && void 0 !== arguments[2]
                                                        ? arguments[2]
                                                        : 2e3;
                                            if (
                                                document.body instanceof Node &&
                                                !this.isAutoSpacingPageExecuted
                                            ) {
                                                this.isAutoSpacingPageExecuted = !0;
                                                var a = this,
                                                    i = (function (e) {
                                                        var t = this,
                                                            n = arguments,
                                                            a = !1;
                                                        return function () {
                                                            if (!a) {
                                                                var i = t;
                                                                (a = !0), e.apply(i, n);
                                                            }
                                                        };
                                                    })(function () {
                                                        a.spacingPage();
                                                    }),
                                                    o = document.getElementsByTagName("video");
                                                if (0 === o.length)
                                                    setTimeout(function () {
                                                        i();
                                                    }, e);
                                                else
                                                    for (var r = 0; r < o.length; r++) {
                                                        var c = o[r];
                                                        if (4 === c.readyState) {
                                                            setTimeout(function () {
                                                                i();
                                                            }, 3e3);
                                                            break;
                                                        }
                                                        c.addEventListener("loadeddata", function () {
                                                            setTimeout(function () {
                                                                i();
                                                            }, 4e3);
                                                        });
                                                    }
                                                var s = [],
                                                    u = (function (e, t, n) {
                                                        var a = this,
                                                            i = arguments,
                                                            o = null,
                                                            r = null;
                                                        return function () {
                                                            var c = a,
                                                                s = i,
                                                                u = +new Date();
                                                            clearTimeout(o),
                                                            r || (r = u),
                                                                u - r >= n
                                                                    ? (e.apply(c, s), (r = u))
                                                                    : (o = setTimeout(function () {
                                                                        e.apply(c, s);
                                                                    }, t));
                                                        };
                                                    })(
                                                        function () {
                                                            for (; s.length; ) {
                                                                var e = s.shift();
                                                                e && a.spacingNode(e);
                                                            }
                                                        },
                                                        t,
                                                        { maxWait: n }
                                                    ),
                                                    p = new MutationObserver(function (e, t) {
                                                        e.forEach(function (e) {
                                                            switch (e.type) {
                                                                case "childList":
                                                                    e.addedNodes.forEach(function (e) {
                                                                        e.nodeType === Node.ELEMENT_NODE
                                                                            ? s.push(e)
                                                                            : e.nodeType === Node.TEXT_NODE &&
                                                                            s.push(e.parentNode);
                                                                    });
                                                                    break;
                                                                case "characterData":
                                                                    var t = e.target;
                                                                    t.nodeType === Node.TEXT_NODE &&
                                                                    s.push(t.parentNode);
                                                            }
                                                        }),
                                                            u();
                                                    });
                                                p.observe(document.body, {
                                                    characterData: !0,
                                                    childList: !0,
                                                    subtree: !0,
                                                });
                                            }
                                        },
                                    },
                                ]) && a(n.prototype, c),
                                s && a(n, s),
                                    t
                            );
                        })(n(1).Pangu),
                        s = new c();
                    (e.exports = s),
                        (e.exports["default"] = s),
                        (e.exports.Pangu = c);
                })
                    ? a.apply(t, i)
                    : a) || (e.exports = o);
        },
        function (e, t, n) {
            var a, i, o;
            (i = []),
            void 0 ===
            (o =
                "function" ==
                typeof (a = function () {
                    function t(e) {
                        return (t =
                            "function" == typeof Symbol &&
                            "symbol" == typeof Symbol.iterator
                                ? function (e) {
                                    return typeof e;
                                }
                                : function (e) {
                                    return e &&
                                    "function" == typeof Symbol &&
                                    e.constructor === Symbol &&
                                    e !== Symbol.prototype
                                        ? "symbol"
                                        : typeof e;
                                })(e);
                    }

                    function n(e, t) {
                        for (var n = 0; n < t.length; n++) {
                            var a = t[n];
                            (a.enumerable = a.enumerable || !1),
                                (a.configurable = !0),
                            "value" in a && (a.writable = !0),
                                Object.defineProperty(e, a.key, a);
                        }
                    }

                    var a =
                            "\u2e80-\u2eff\u2f00-\u2fdf\u3040-\u309f\u30a0-\u30fa\u30fc-\u30ff\u3100-\u312f\u3200-\u32ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff",
                        i = new RegExp("[".concat(a, "]")),
                        o = new RegExp(
                            "([".concat(a, "])[ ]*([\\:]+|\\.)[ ]*([").concat(a, "])"),
                            "g"
                        ),
                        r = new RegExp("([".concat(a, "])[ ]*([~\\!;,\\?]+)[ ]*"), "g"),
                        c = new RegExp("([\\.]{2,}|\u2026)([".concat(a, "])"), "g"),
                        s = new RegExp("([".concat(a, "])\\:([A-Z0-9\\(\\)])"), "g"),
                        u = new RegExp("([".concat(a, '])([`"\u05f4])'), "g"),
                        p = new RegExp('([`"\u05f4])(['.concat(a, "])"), "g"),
                        l = /([`"\u05f4]+)[ ]*(.+?)[ ]*([`"\u05f4]+)/g,
                        f = new RegExp("([".concat(a, "])('[^s])"), "g"),
                        g = new RegExp("(')([".concat(a, "])"), "g"),
                        d = new RegExp("([A-Za-z0-9".concat(a, "])( )('s)"), "g"),
                        h = new RegExp(
                            "(["
                                .concat(a, "])(#)([")
                                .concat(a, "]+)(#)([")
                                .concat(a, "])"),
                            "g"
                        ),
                        y = new RegExp("([".concat(a, "])(#([^ ]))"), "g"),
                        v = new RegExp("(([^ ])#)([".concat(a, "])"), "g"),
                        b = new RegExp(
                            "([".concat(a, "])([\\+\\-\\*\\/=&\\|<>])([A-Za-z0-9])"),
                            "g"
                        ),
                        m = new RegExp(
                            "([A-Za-z0-9])([\\+\\-\\*\\/=&\\|<>])([".concat(a, "])"),
                            "g"
                        ),
                        $ = /([\/]) ([a-z\-_\.\/]+)/g,
                        E = /([\/\.])([A-Za-z\-_\.\/]+) ([\/])/g,
                        S = new RegExp("([".concat(a, "])([\\(\\[\\{<>\u201c])"), "g"),
                        T = new RegExp("([\\)\\]\\}<>\u201d])([".concat(a, "])"), "g"),
                        N = /([\(\[\{<\u201c]+)[ ]*(.+?)[ ]*([\)\]\}>\u201d]+)/,
                        w = new RegExp(
                            "([A-Za-z0-9"
                                .concat(a, "])[ ]*([\u201c])([A-Za-z0-9")
                                .concat(a, "\\-_ ]+)([\u201d])"),
                            "g"
                        ),
                        k = new RegExp(
                            "([\u201c])([A-Za-z0-9"
                                .concat(a, "\\-_ ]+)([\u201d])[ ]*([A-Za-z0-9")
                                .concat(a, "])"),
                            "g"
                        ),
                        P = /([A-Za-z0-9])([\(\[\{])/g,
                        O = /([\)\]\}])([A-Za-z0-9])/g,
                        _ = new RegExp(
                            "([".concat(
                                a,
                                "])([A-Za-z\u0370-\u03ff0-9@\\$%\\^&\\*\\-\\+\\\\=\\|/\u00a1-\u00ff\u2150-\u218f\u2700\u2014\u27bf])"
                            ),
                            "g"
                        ),
                        x = new RegExp(
                            "([A-Za-z\u0370-\u03ff0-9~\\$%\\^&\\*\\-\\+\\\\=\\|/!;:,\\.\\?\u00a1-\u00ff\u2150-\u218f\u2700\u2014\u27bf])([".concat(
                                a,
                                "])"
                            ),
                            "g"
                        ),
                        R = /(%)([A-Za-z])/g,
                        A = /([ ]*)([\u00b7\u2022\u2027])([ ]*)/g,
                        j = (function () {
                            function e() {
                                !(function (e, t) {
                                    if (!(e instanceof t))
                                        throw new TypeError(
                                            "Cannot call a class as a function"
                                        );
                                })(this, e),
                                    (this.version = "4.0.7");
                            }

                            return (
                                (a = e),
                                (j = [
                                    {
                                        key: "convertToFullwidth",
                                        value: function (e) {
                                            return e
                                                .replace(/~/g, "\uff5e")
                                                .replace(/!/g, "\uff01")
                                                .replace(/;/g, "\uff1b")
                                                .replace(/:/g, "\uff1a")
                                                .replace(/,/g, "\uff0c")
                                                .replace(/\./g, "\u3002")
                                                .replace(/\?/g, "\uff1f");
                                        },
                                    },
                                    {
                                        key: "spacing",
                                        value: function (e) {
                                            if ("string" != typeof e)
                                                return (
                                                    console.warn(
                                                        "spacing(text) only accepts string but got ".concat(
                                                            t(e)
                                                        )
                                                    ),
                                                        e
                                                );
                                            if (e.length <= 1 || !i.test(e)) return e;
                                            var n = this,
                                                a = e;
                                            return (a = (a = (a = (a = (a = (a = (a = (a = (a =
                                                (a = (a = (a = (a = (a = (a = (a = (a = (a = (a =
                                                    (a = (a = (a = (a = (a = (a = (a = (a = (a =
                                                        a.replace(o, function (e, t, a, i) {
                                                            var o = n.convertToFullwidth(a);
                                                            return "".concat(t).concat(o).concat(i);
                                                        })).replace(r, function (e, t, a) {
                                                        var i = n.convertToFullwidth(a);
                                                        return "".concat(t).concat(i);
                                                    })).replace(c, "$1 $2")).replace(
                                                        s,
                                                        "$1\uff1a$2"
                                                    )).replace(u, "$1 $2")).replace(
                                                        p,
                                                        "$1 $2"
                                                    )).replace(l, "$1$2$3")).replace(
                                                        f,
                                                        "$1 $2"
                                                    )).replace(g, "$1 $2")).replace(
                                                        d,
                                                        "$1's"
                                                    )).replace(h, "$1 $2$3$4 $5")).replace(
                                                    y,
                                                    "$1 $2"
                                                )).replace(v, "$1 $3")).replace(
                                                    b,
                                                    "$1 $2 $3"
                                                )).replace(m, "$1 $2 $3")).replace(
                                                    $,
                                                    "$1$2"
                                                )).replace(E, "$1$2$3")).replace(
                                                    S,
                                                    "$1 $2"
                                                )).replace(T, "$1 $2")).replace(
                                                    N,
                                                    "$1$2$3"
                                                )).replace(w, "$1 $2$3$4")).replace(
                                                k,
                                                "$1$2$3 $4"
                                            )).replace(P, "$1 $2")).replace(O, "$1 $2")).replace(
                                                _,
                                                "$1 $2"
                                            )).replace(x, "$1 $2")).replace(R, "$1 $2")).replace(
                                                A,
                                                "\u30fb"
                                            ));
                                        },
                                    },
                                    {
                                        key: "spacingText",
                                        value: function (e) {
                                            var t,
                                                n =
                                                    arguments.length > 1 && void 0 !== arguments[1]
                                                        ? arguments[1]
                                                        : function () {};
                                            try {
                                                t = this.spacing(e);
                                            } catch (e$6) {
                                                return void n(e$6);
                                            }
                                            n(null, t);
                                        },
                                    },
                                    {
                                        key: "spacingTextSync",
                                        value: function (e) {
                                            return this.spacing(e);
                                        },
                                    },
                                ]) && n(a.prototype, j),
                                z && n(a, z),
                                    e
                            );
                        })(),
                        z = new j();
                    (e.exports = z),
                        (e.exports["default"] = z),
                        (e.exports.Pangu = j);
                })
                    ? a.apply(t, i)
                    : a) || (e.exports = o);
        },
    ]);
});
(function (h) {
    function l(H, I, J) {
        var K = this;
        return this.on("click.pjax", H, function (M) {
            var L = h.extend({}, u(I, J));
            if (!L.container) L.container = h(this).attr("data-pjax") || K;
            m(M, L);
        });
    }

    function m(M, I, J) {
        J = u(I, J);
        var L = M.currentTarget;
        if (L.tagName.toUpperCase() !== "A")
            throw "$.fn.pjax or $.pjax.click requires an anchor element";
        if (M.which > 1 || M.metaKey || M.ctrlKey || M.shiftKey || M.altKey) return;
        if (location.protocol !== L.protocol || location.hostname !== L.hostname)
            return;
        if (L.href.indexOf("#") > -1 && z(L) == z(location)) return;
        if (M.isDefaultPrevented()) return;
        var N = { url: L.href, container: h(L).attr("data-pjax"), target: L };
        var K = h.extend({}, N, J);
        var H = h.Event("pjax:click");
        h(L).trigger(H, [K]);
        if (!H.isDefaultPrevented()) {
            C(K);
            M.preventDefault();
            h(L).trigger("pjax:clicked", [K]);
        }
    }

    function s(K, H, I) {
        I = u(H, I);
        var J = K.currentTarget;
        if (J.tagName.toUpperCase() !== "FORM")
            throw "$.pjax.submit requires a form element";
        var L = {
            type: J.method.toUpperCase(),
            url: J.action,
            container: h(J).attr("data-pjax"),
            target: J,
        };
        if (L.type !== "GET" && window.FormData !== undefined) {
            L.data = new FormData(J);
            L.processData = false;
            L.contentType = false;
        } else {
            if (h(J).find(":file").length) return;
            L.data = h(J).serializeArray();
        }
        C(h.extend({}, L, I));
        K.preventDefault();
    }

    function C(H) {
        H = h.extend(true, {}, h.ajaxSettings, C.defaults, H);
        if (h.isFunction(H.url)) H.url = H.url();
        var M = H.target;
        var L = r(H.url).hash;
        var I = (H.context = t(H.container));
        if (!H.data) H.data = {};
        if (h.isArray(H.data)) H.data.push({ name: "_pjax", value: I.selector });
        else H.data._pjax = I.selector;

        function K(Q, O, P) {
            if (!P) P = {};
            P.relatedTarget = M;
            var R = h.Event(Q, P);
            I.trigger(R, O);
            return !R.isDefaultPrevented();
        }

        var J;
        H.beforeSend = function (Q, P) {
            if (P.type !== "GET") P.timeout = 0;
            Q.setRequestHeader("X-PJAX", "true");
            Q.setRequestHeader("X-PJAX-Container", I.selector);
            if (!K("pjax:beforeSend", [Q, P])) return false;
            if (P.timeout > 0) {
                J = setTimeout(function () {
                    if (K("pjax:timeout", [Q, H])) Q.abort("timeout");
                }, P.timeout);
                P.timeout = 0;
            }
            var O = r(P.url);
            if (L) O.hash = L;
            H.requestUrl = q(O);
        };
        H.complete = function (O, P) {
            if (J) clearTimeout(J);
            K("pjax:complete", [O, P, H]);
            K("pjax:end", [O, H]);
        };
        H.error = function (R, S, P) {
            var O = y("", R, H);
            var Q = K("pjax:error", [R, S, P, H]);
            if (H.type == "GET" && S !== "abort" && Q) A(O.url);
        };
        H.success = function (S, R, Z) {
            var V = C.state;
            var Y =
                typeof h.pjax.defaults.version === "function"
                    ? h.pjax.defaults.version()
                    : h.pjax.defaults.version;
            var aa = Z.getResponseHeader("X-PJAX-Version");
            var Q = y(S, Z, H);
            var P = r(Q.url);
            if (L) {
                P.hash = L;
                Q.url = P.href;
            }
            if (Y && aa && Y !== aa) {
                A(Q.url);
                return;
            }
            if (!Q.contents) {
                A(Q.url);
                return;
            }
            C.state = {
                id: H.id || n(),
                url: Q.url,
                title: Q.title,
                container: I.selector,
                fragment: H.fragment,
                timeout: H.timeout,
            };
            if (H.push || H.replace)
                window.history.replaceState(C.state, Q.title, Q.url);
            try {
                document.activeElement.blur();
            } catch (X) {}
            if (Q.title) document.title = Q.title;
            K("pjax:beforeReplace", [Q.contents, H], {
                state: C.state,
                previousState: V,
            });
            I.html(Q.contents);
            var U = I.find("input[autofocus], textarea[autofocus]").last()[0];
            if (U && document.activeElement !== U) U.focus();
            a(Q.scripts);
            var T = H.scrollTo;
            if (L) {
                var O = decodeURIComponent(L.slice(1));
                var W = document.getElementById(O) || document.getElementsByName(O)[0];
                if (W) T = h(W).offset().top;
            }
            if (typeof T == "number") h(window).scrollTop(T);
            K("pjax:success", [S, R, Z, H]);
        };
        if (!C.state) {
            C.state = {
                id: n(),
                url: window.location.href,
                title: document.title,
                container: I.selector,
                fragment: H.fragment,
                timeout: H.timeout,
            };
            window.history.replaceState(C.state, document.title);
        }
        F(C.xhr);
        C.options = H;
        var N = (C.xhr = h.ajax(H));
        if (N.readyState > 0) {
            if (H.push && !H.replace) {
                k(C.state.id, D(I));
                window.history.pushState(null, "", H.requestUrl);
            }
            K("pjax:start", [N, H]);
            K("pjax:send", [N, H]);
        }
        return C.xhr;
    }

    function x(H, I) {
        var J = {
            url: window.location.href,
            push: false,
            replace: true,
            scrollTo: false,
        };
        return C(h.extend(J, u(H, I)));
    }

    function A(H) {
        window.history.replaceState(null, "", C.state.url);
        window.location.replace(H);
    }

    var j = true;
    var G = window.location.href;
    var E = window.history.state;
    if (E && E.container) C.state = E;
    if ("state" in window.history) j = false;

    function c(J) {
        if (!j) F(C.xhr);
        var O = C.state;
        var I = J.state;
        var P;
        if (I && I.container) {
            if (j && G == I.url) return;
            if (O) {
                if (O.id === I.id) return;
                P = O.id < I.id ? "forward" : "back";
            }
            var H = f[I.id] || [];
            var K = h(H[0] || I.container),
                M = H[1];
            if (K.length) {
                if (O) v(P, O.id, D(K));
                var N = h.Event("pjax:popstate", { state: I, direction: P });
                K.trigger(N);
                var Q = {
                    id: I.id,
                    url: I.url,
                    container: K,
                    push: false,
                    fragment: I.fragment,
                    timeout: I.timeout,
                    scrollTo: false,
                };
                if (M) {
                    K.trigger("pjax:start", [null, Q]);
                    C.state = I;
                    if (I.title) document.title = I.title;
                    var L = h.Event("pjax:beforeReplace", { state: I, previousState: O });
                    K.trigger(L, [M, Q]);
                    K.html(M);
                    K.trigger("pjax:end", [null, Q]);
                } else C(Q);
                K[0].offsetHeight;
            } else A(location.href);
        }
        j = false;
    }

    function e(I) {
        var H = h.isFunction(I.url) ? I.url() : I.url,
            M = I.type ? I.type.toUpperCase() : "GET";
        var K = h("<form>", {
            method: M === "GET" ? "GET" : "POST",
            action: H,
            style: "display:none",
        });
        if (M !== "GET" && M !== "POST")
            K.append(
                h("<input>", {
                    type: "hidden",
                    name: "_method",
                    value: M.toLowerCase(),
                })
            );
        var L = I.data;
        if (typeof L === "string")
            h.each(L.split("&"), function (N, O) {
                var P = O.split("=");
                K.append(h("<input>", { type: "hidden", name: P[0], value: P[1] }));
            });
        else if (h.isArray(L))
            h.each(L, function (N, O) {
                K.append(
                    h("<input>", { type: "hidden", name: O.name, value: O.value })
                );
            });
        else if (typeof L === "object") {
            var J;
            for (J in L)
                K.append(h("<input>", { type: "hidden", name: J, value: L[J] }));
        }
        h(document.body).append(K);
        K.submit();
    }

    function F(H) {
        if (H && H.readyState < 4) {
            H.onreadystatechange = h.noop;
            H.abort();
        }
    }

    function n() {
        return new Date().getTime();
    }

    function D(I) {
        var H = I.clone();
        H.find("script").each(function () {
            if (!this.src) jQuery._data(this, "globalEval", false);
        });
        return [I.selector, H.contents()];
    }

    function q(H) {
        H.search = H.search.replace(/([?&])(_pjax|_)=[^&]*/g, "");
        return H.href.replace(/\?($|#)/, "$1");
    }

    function r(I) {
        var H = document.createElement("a");
        H.href = I;
        return H;
    }

    function z(H) {
        return H.href.replace(/#.*/, "");
    }

    function u(H, I) {
        if (H && I) I.container = H;
        else if (h.isPlainObject(H)) I = H;
        else I = { container: H };
        if (I.container) I.container = t(I.container);
        return I;
    }

    function t(H) {
        H = h(H);
        if (!H.length) throw "no pjax container for " + H.selector;
        else if (H.selector !== "" && H.context === document) return H;
        else if (H.attr("id")) return h("#" + H.attr("id"));
        else throw "cant get selector for pjax container!";
    }

    function o(I, H) {
        return I.filter(H).add(I.find(H));
    }

    function w(H) {
        return h.parseHTML(H, document, true);
    }

    function y(L, N, P) {
        var K = {},
            H = /<html/i.test(L);
        var I = N.getResponseHeader("X-PJAX-URL");
        K.url = I ? q(r(I)) : P.requestUrl;
        if (H) {
            var M = h(w(L.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0]));
            var J = h(w(L.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0]));
        } else var M = (J = h(w(L)));
        if (J.length === 0) return K;
        K.title = o(M, "title").last().text();
        if (P.fragment) {
            if (P.fragment === "body") var O = J;
            else var O = o(J, P.fragment).first();
            if (O.length) {
                K.contents = P.fragment === "body" ? O : O.contents();
                if (!K.title) K.title = O.attr("title") || O.data("title");
            }
        } else if (!H) K.contents = J;
        if (K.contents) {
            K.contents = K.contents.not(function () {
                return h(this).is("title");
            });
            K.contents.find("title").remove();
            K.scripts = o(K.contents, "script[src]").remove();
            K.contents = K.contents.not(K.scripts);
        }
        if (K.title) K.title = h.trim(K.title);
        return K;
    }

    function a(H) {
        if (!H) return;
        var I = h("script[src]");
        H.each(function () {
            var L = this.src;
            var M = I.filter(function () {
                return this.src === L;
            });
            if (M.length) return;
            var J = document.createElement("script");
            var K = h(this).attr("type");
            if (K) J.type = K;
            J.src = h(this).attr("src");
            document.head.appendChild(J);
        });
    }

    var f = {};
    var g = [];
    var i = [];

    function k(I, H) {
        f[I] = H;
        i.push(I);
        b(g, 0);
        b(i, C.defaults.maxCacheLength);
    }

    function v(J, L, I) {
        var K, H;
        f[L] = I;
        if (J === "forward") {
            K = i;
            H = g;
        } else {
            K = g;
            H = i;
        }
        K.push(L);
        if ((L = H.pop())) delete f[L];
        b(K, C.defaults.maxCacheLength);
    }

    function b(H, I) {
        while (H.length > I) delete f[H.shift()];
    }

    function B() {
        return h("meta")
            .filter(function () {
                var H = h(this).attr("http-equiv");
                return H && H.toUpperCase() === "X-PJAX-VERSION";
            })
            .attr("content");
    }

    function p() {
        h.fn.pjax = l;
        h.pjax = C;
        h.pjax.enable = h.noop;
        h.pjax.disable = d;
        h.pjax.click = m;
        h.pjax.submit = s;
        h.pjax.reload = x;
        h.pjax.defaults = {
            timeout: 650,
            push: true,
            replace: false,
            type: "GET",
            dataType: "html",
            scrollTo: 0,
            maxCacheLength: 20,
            version: B,
        };
        h(window).on("popstate.pjax", c);
    }

    function d() {
        h.fn.pjax = function () {
            return this;
        };
        h.pjax = e;
        h.pjax.enable = p;
        h.pjax.disable = h.noop;
        h.pjax.click = h.noop;
        h.pjax.submit = h.noop;
        h.pjax.reload = function () {
            window.location.reload();
        };
        h(window).off("popstate.pjax", c);
    }

    if (h.inArray("state", h.event.props) < 0) h.event.props.push("state");
    h.support.pjax =
        window.history &&
        window.history.pushState &&
        window.history.replaceState &&
        !navigator.userAgent.match(
            /((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/
        );
    h.support.pjax ? p() : d();
})(jQuery);
(function (n, p) {
    "function" === typeof define && define.amd
        ? define([], function () {
            return p.apply(n);
        })
        : "object" === typeof exports
            ? (module.exports = p.call(n))
            : (n.Waves = p.call(n));
})("object" === typeof global ? global : this, function () {
    function n(a) {
        var b = typeof a;
        return "function" === b || ("object" === b && !!a);
    }

    function p(a) {
        var b = r.call(a);
        return "[object String]" === b
            ? w(a)
            : n(a) &&
            /^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(b) &&
            a.hasOwnProperty("length")
                ? a
                : n(a) && 0 < a.nodeType
                    ? [a]
                    : [];
    }

    function t(a) {
        var b,
            c = { top: 0, left: 0 },
            d = a && a.ownerDocument;
        b = d.documentElement;
        "undefined" !== typeof a.getBoundingClientRect &&
        (c = a.getBoundingClientRect());
        a = null !== d && d === d.window ? d : 9 === d.nodeType && d.defaultView;
        return {
            top: c.top + a.pageYOffset - b.clientTop,
            left: c.left + a.pageXOffset - b.clientLeft,
        };
    }

    function q(a) {
        var b = "",
            c;
        for (c in a) a.hasOwnProperty(c) && (b += c + ":" + a[c] + ";");
        return b;
    }

    function x(a, b, c) {
        if (c) {
            c.classList.remove("waves-rippling");
            var d = c.getAttribute("data-x"),
                e = c.getAttribute("data-y"),
                f = c.getAttribute("data-scale"),
                k = c.getAttribute("data-translate"),
                g = 350 - (Date.now() - Number(c.getAttribute("data-hold")));
            0 > g && (g = 0);
            "mousemove" === a.type && (g = 150);
            var m = "mousemove" === a.type ? 2500 : h.duration;
            setTimeout(function () {
                c.setAttribute(
                    "style",
                    q({
                        top: e + "px",
                        left: d + "px",
                        opacity: "0",
                        "-webkit-transition-duration": m + "ms",
                        "-moz-transition-duration": m + "ms",
                        "-o-transition-duration": m + "ms",
                        "transition-duration": m + "ms",
                        "-webkit-transform": f + " " + k,
                        "-moz-transform": f + " " + k,
                        "-ms-transform": f + " " + k,
                        "-o-transform": f + " " + k,
                        transform: f + " " + k,
                    })
                );
                setTimeout(function () {
                    try {
                        b.removeChild(c);
                    } catch (A) {
                        return !1;
                    }
                }, m);
            }, g);
        }
    }

    function y(a) {
        if (!1 === g.allowEvent(a)) return null;
        var b = null;
        for (a = a.target || a.srcElement; null !== a.parentElement; ) {
            if (a.classList.contains("waves-effect") && !(a instanceof SVGElement)) {
                b = a;
                break;
            }
            a = a.parentElement;
        }
        return b;
    }

    function u(a) {
        var b = y(a);
        if (
            null !== b &&
            !(
                b.disabled ||
                b.getAttribute("disabled") ||
                b.classList.contains("disabled")
            )
        )
            if ((g.registerEvent(a), "touchstart" === a.type && h.delay)) {
                var c = !1,
                    d = setTimeout(function () {
                        d = null;
                        h.show(a, b);
                    }, h.delay),
                    e = function (e) {
                        d && (clearTimeout(d), (d = null), h.show(a, b));
                        c || ((c = !0), h.hide(e, b));
                    };
                b.addEventListener(
                    "touchmove",
                    function (a) {
                        d && (clearTimeout(d), (d = null));
                        e(a);
                    },
                    !1
                );
                b.addEventListener("touchend", e, !1);
                b.addEventListener("touchcancel", e, !1);
            } else
                h.show(a, b),
                v &&
                (b.addEventListener("touchend", h.hide, !1),
                    b.addEventListener("touchcancel", h.hide, !1)),
                    b.addEventListener("mouseup", h.hide, !1),
                    b.addEventListener("mouseleave", h.hide, !1);
    }

    var l = l || {},
        w = document.querySelectorAll.bind(document),
        r = Object.prototype.toString,
        v = "ontouchstart" in window,
        h = {
            duration: 750,
            delay: 200,
            show: function (a, b, c) {
                if (2 === a.button) return !1;
                b = b || this;
                var d = document.createElement("div");
                d.className = "waves-ripple waves-rippling";
                b.appendChild(d);
                var e = t(b),
                    f;
                "touches" in a && a.touches.length
                    ? ((f = a.touches[0].pageY - e.top),
                        (e = a.touches[0].pageX - e.left))
                    : ((f = a.pageY - e.top), (e = a.pageX - e.left));
                e = 0 <= e ? e : 0;
                f = 0 <= f ? f : 0;
                b = "scale(" + (b.clientWidth / 100) * 3 + ")";
                var k = "translate(0,0)";
                c && (k = "translate(" + c.x + "px, " + c.y + "px)");
                d.setAttribute("data-hold", Date.now());
                d.setAttribute("data-x", e);
                d.setAttribute("data-y", f);
                d.setAttribute("data-scale", b);
                d.setAttribute("data-translate", k);
                c = { top: f + "px", left: e + "px" };
                d.classList.add("waves-notransition");
                d.setAttribute("style", q(c));
                d.classList.remove("waves-notransition");
                c["-webkit-transform"] = b + " " + k;
                c["-moz-transform"] = b + " " + k;
                c["-ms-transform"] = b + " " + k;
                c["-o-transform"] = b + " " + k;
                c.transform = b + " " + k;
                c.opacity = "1";
                a = "mousemove" === a.type ? 2500 : h.duration;
                c["-webkit-transition-duration"] = a + "ms";
                c["-moz-transition-duration"] = a + "ms";
                c["-o-transition-duration"] = a + "ms";
                c["transition-duration"] = a + "ms";
                d.setAttribute("style", q(c));
            },
            hide: function (a, b) {
                b = b || this;
                for (
                    var c = b.getElementsByClassName("waves-rippling"),
                        d = 0,
                        e = c.length;
                    d < e;
                    d++
                )
                    x(a, b, c[d]);
            },
        },
        z = {
            input: function (a) {
                var b = a.parentNode;
                if (
                    "i" !== b.tagName.toLowerCase() ||
                    !b.classList.contains("waves-effect")
                ) {
                    var c = document.createElement("i");
                    c.className = a.className + " waves-input-wrapper";
                    a.className = "waves-button-input";
                    b.replaceChild(c, a);
                    c.appendChild(a);
                    b = window.getComputedStyle(a, null);
                    c.setAttribute(
                        "style",
                        "color:" + b.color + ";background:" + b.backgroundColor
                    );
                    a.setAttribute("style", "background-color:rgba(0,0,0,0);");
                }
            },
            img: function (a) {
                var b = a.parentNode;
                if (
                    "i" !== b.tagName.toLowerCase() ||
                    !b.classList.contains("waves-effect")
                ) {
                    var c = document.createElement("i");
                    b.replaceChild(c, a);
                    c.appendChild(a);
                }
            },
        },
        g = {
            touches: 0,
            allowEvent: function (a) {
                var b = !0;
                /^(mousedown|mousemove)$/.test(a.type) && g.touches && (b = !1);
                return b;
            },
            registerEvent: function (a) {
                a = a.type;
                "touchstart" === a
                    ? (g.touches += 1)
                    : /^(touchend|touchcancel)$/.test(a) &&
                    setTimeout(function () {
                        g.touches && --g.touches;
                    }, 500);
            },
        };
    l.init = function (a) {
        var b = document.body;
        a = a || {};
        "duration" in a && (h.duration = a.duration);
        "delay" in a && (h.delay = a.delay);
        v &&
        (b.addEventListener("touchstart", u, !1),
            b.addEventListener("touchcancel", g.registerEvent, !1),
            b.addEventListener("touchend", g.registerEvent, !1));
        b.addEventListener("mousedown", u, !1);
    };
    l.attach = function (a, b) {
        a = p(a);
        "[object Array]" === r.call(b) && (b = b.join(" "));
        b = b ? " " + b : "";
        for (var c, d, e = 0, f = a.length; e < f; e++)
            (c = a[e]),
                (d = c.tagName.toLowerCase()),
            -1 !== ["input", "img"].indexOf(d) && (z[d](c), (c = c.parentElement)),
            -1 === c.className.indexOf("waves-effect") &&
            (c.className += " waves-effect" + b);
    };
    l.ripple = function (a, b) {
        a = p(a);
        var c = a.length;
        b = b || {};
        b.wait = b.wait || 0;
        b.position = b.position || null;
        if (c)
            for (
                var d,
                    e,
                    f,
                    k,
                    g = 0,
                    m = { type: "mousedown", button: 1 },
                    l = function (a, b) {
                        return function () {
                            h.hide(a, b);
                        };
                    };
                g < c;
                g++
            )
                (d = a[g]),
                    (e = b.position || {
                        x: d.clientWidth / 2,
                        y: d.clientHeight / 2,
                    }),
                    (f = t(d)),
                    (k = f.left + e.x),
                    (e = f.top + e.y),
                    (m.pageX = k),
                    (m.pageY = e),
                    h.show(m, d),
                0 <= b.wait &&
                null !== b.wait &&
                setTimeout(
                    l(
                        {
                            type: "mouseup",
                            button: 1,
                        },
                        d
                    ),
                    b.wait
                );
    };
    l.calm = function (a) {
        a = p(a);
        for (
            var b = { type: "mouseup", button: 1 }, c = 0, d = a.length;
            c < d;
            c++
        )
            h.hide(b, a[c]);
    };
    l.displayEffect = function (a) {
        console.error(
            "Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect"
        );
        l.init(a);
    };
    return l;
}); /*
 MIT
*/
+(function ($) {
    function transitionEnd() {
        var el = document.createElement("bootstrap");
        var transEndEventNames = {
            WebkitTransition: "webkitTransitionEnd",
            MozTransition: "transitionend",
            OTransition: "oTransitionEnd otransitionend",
            transition: "transitionend",
        };
        for (var name in transEndEventNames)
            if (el.style[name] !== undefined)
                return { end: transEndEventNames[name] };
        return false;
    }

    $.fn.emulateTransitionEnd = function (duration) {
        var called = false;
        var $el = this;
        $(this).one("bsTransitionEnd", function () {
            called = true;
        });
        var callback = function () {
            if (!called) $($el).trigger($.support.transition.end);
        };
        setTimeout(callback, duration);
        return this;
    };
    $(function () {
        $.support.transition = transitionEnd();
        if (!$.support.transition)
            return ($.event.special.bsTransitionEnd = {
                bindType: $.support.transition.end,
                delegateType: $.support.transition.end,
                handle: function (e) {
                    if ($(e.target).is(this))
                        return e.handleObj.handler.apply(this, arguments);
                },
            });
    });
})(jQuery);
+(function (t) {
    function o() {
        (this._activeZoom =
            this._initialScrollPosition =
                this._initialTouchPosition =
                    this._touchMoveListener =
                        null),
            (this._$document = t(document)),
            (this._$window = t(window)),
            (this._$body = t(document.body)),
            (this._boundClick = t.proxy(this._clickHandler, this));
    }

    function i(o) {
        (this._fullHeight =
            this._fullWidth =
                this._overlay =
                    this._targetImageWrap =
                        null),
            (this._targetImage = o),
            (this._$body = t(document.body));
    }

    (o.prototype.listen = function () {
        this._$body.on("click", '[data-action="zoom"]', t.proxy(this._zoom, this));
    }),
        (o.prototype._zoom = function (o) {
            var e = o.target;
            if (e && "IMG" == e.tagName && !this._$body.hasClass("zoom-overlay-open"))
                return o.metaKey || o.ctrlKey
                    ? window.open(
                        o.target.getAttribute("data-original") || o.target.src,
                        "_blank"
                    )
                    : void (
                        e.width >= t(window).width() - i.OFFSET ||
                        (this._activeZoomClose(!0),
                            (this._activeZoom = new i(e)),
                            this._activeZoom.zoomImage(),
                            this._$window.on(
                                "scroll.zoom",
                                t.proxy(this._scrollHandler, this)
                            ),
                            this._$document.on("keyup.zoom", t.proxy(this._keyHandler, this)),
                            this._$document.on(
                                "touchstart.zoom",
                                t.proxy(this._touchStart, this)
                            ),
                            document.addEventListener
                                ? document.addEventListener("click", this._boundClick, !0)
                                : document.attachEvent("onclick", this._boundClick, !0),
                            "bubbles" in o
                                ? o.bubbles && o.stopPropagation()
                                : (o.cancelBubble = !0))
                    );
        }),
        (o.prototype._activeZoomClose = function (t) {
            this._activeZoom &&
            (t ? this._activeZoom.dispose() : this._activeZoom.close(),
                this._$window.off(".zoom"),
                this._$document.off(".zoom"),
                document.removeEventListener("click", this._boundClick, !0),
                (this._activeZoom = null));
        }),
        (o.prototype._scrollHandler = function (o) {
            null === this._initialScrollPosition &&
            (this._initialScrollPosition = t(window).scrollTop());
            var i = this._initialScrollPosition - t(window).scrollTop();
            Math.abs(i) >= 40 && this._activeZoomClose();
        }),
        (o.prototype._keyHandler = function (t) {
            27 == t.keyCode && this._activeZoomClose();
        }),
        (o.prototype._clickHandler = function (t) {
            t.preventDefault ? t.preventDefault() : (event.returnValue = !1),
                "bubbles" in t
                    ? t.bubbles && t.stopPropagation()
                    : (t.cancelBubble = !0),
                this._activeZoomClose();
        }),
        (o.prototype._touchStart = function (o) {
            (this._initialTouchPosition = o.touches[0].pageY),
                t(o.target).on("touchmove.zoom", t.proxy(this._touchMove, this));
        }),
        (o.prototype._touchMove = function (o) {
            Math.abs(o.touches[0].pageY - this._initialTouchPosition) > 10 &&
            (this._activeZoomClose(), t(o.target).off("touchmove.zoom"));
        }),
        (i.OFFSET = 80),
        (i._MAX_WIDTH = 2560),
        (i._MAX_HEIGHT = 4096),
        (i.prototype.zoomImage = function () {
            var o = document.createElement("img");
            (o.onload = t.proxy(function () {
                (this._fullHeight = Number(o.height)),
                    (this._fullWidth = Number(o.width)),
                    this._zoomOriginal();
            }, this)),
                (o.src = this._targetImage.src);
        }),
        (i.prototype._zoomOriginal = function () {
            (this._targetImageWrap = document.createElement("div")),
                (this._targetImageWrap.className = "zoom-img-wrap"),
                this._targetImage.parentNode.insertBefore(
                    this._targetImageWrap,
                    this._targetImage
                ),
                this._targetImageWrap.appendChild(this._targetImage),
                t(this._targetImage)
                    .addClass("zoom-img")
                    .attr("data-action", "zoom-out"),
                (this._overlay = document.createElement("div")),
                (this._overlay.className = "zoom-overlay"),
                document.body.appendChild(this._overlay),
                this._calculateZoom(),
                this._triggerAnimation();
        }),
        (i.prototype._calculateZoom = function () {
            this._targetImage.offsetWidth;
            var o = this._fullWidth,
                e = this._fullHeight,
                a = (t(window).scrollTop(), o / this._targetImage.width),
                s = t(window).height() - i.OFFSET,
                r = t(window).width() - i.OFFSET,
                n = o / e,
                h = r / s;
            this._imgScaleFactor =
                r > o && s > e ? a : h > n ? (s / e) * a : (r / o) * a;
        }),
        (i.prototype._triggerAnimation = function () {
            this._targetImage.offsetWidth;
            var o = t(this._targetImage).offset(),
                i = t(window).scrollTop(),
                e = i + t(window).height() / 2,
                a = t(window).width() / 2,
                s = o.top + this._targetImage.height / 2,
                r = o.left + this._targetImage.width / 2;
            (this._translateY = e - s), (this._translateX = a - r);
            var n = "scale(" + this._imgScaleFactor + ")",
                h = "translate(" + this._translateX + "px, " + this._translateY + "px)";
            t.support.transition && (h += " translateZ(0)"),
                t(this._targetImage).css({
                    "-webkit-transform": n,
                    "-ms-transform": n,
                    transform: n,
                }),
                t(this._targetImageWrap).css({
                    "-webkit-transform": h,
                    "-ms-transform": h,
                    transform: h,
                }),
                this._$body.addClass("zoom-overlay-open");
        }),
        (i.prototype.close = function () {
            return (
                this._$body
                    .removeClass("zoom-overlay-open")
                    .addClass("zoom-overlay-transitioning"),
                    t(this._targetImage).css({
                        "-webkit-transform": "",
                        "-ms-transform": "",
                        transform: "",
                    }),
                    t(this._targetImageWrap).css({
                        "-webkit-transform": "",
                        "-ms-transform": "",
                        transform: "",
                    }),
                    t.support.transition
                        ? void t(this._targetImage)
                            .one(t.support.transition.end, t.proxy(this.dispose, this))
                            .emulateTransitionEnd(300)
                        : this.dispose()
            );
        }),
        (i.prototype.dispose = function () {
            this._targetImageWrap &&
            this._targetImageWrap.parentNode &&
            (t(this._targetImage)
                .removeClass("zoom-img")
                .attr("data-action", "zoom"),
                this._targetImageWrap.parentNode.replaceChild(
                    this._targetImage,
                    this._targetImageWrap
                ),
                this._overlay.parentNode.removeChild(this._overlay),
                this._$body.removeClass("zoom-overlay-transitioning"));
        }),
        t(function () {
            new o().listen();
        });
})(jQuery);
jQuery(document).ready(function (e) {
    window.loadGithubRepos = function () {
        e(".github-widget:not(.loaded)").each(function () {
            var s = e(this),
                o,
                u = s.data("repo"),
                a = u.split("/")[0],
                f = u.split("/")[1],
                l = "http://github.com/" + a,
                c = "http://github.com/" + a + "/" + f;
            o = e(
                '<div class="github-box repo">' +
                '<div class="github-box-title">' +
                "<h3>" +
                '<a class="owner" href="' +
                l +
                '" title="' +
                l +
                '" target="_blank">' +
                a +
                "</a>" +
                "/" +
                '<a class="repo" href="' +
                c +
                '" title="' +
                c +
                '" target="_blank">' +
                f +
                "</a>" +
                "</h3>" +
                '<div class="github-stats">' +
                '<a class="watchers" href="' +
                c +
                '/stargazers" title="See stars" target="_blank"><i class="fa fa-star" aria-hidden="true"></i><span>?</span></a>' +
                '<a class="forks" href="' +
                c +
                '/network/members" title="See forkers" target="_blank"><i class="fa fa-code-fork" aria-hidden="true"></i><span>?</span></a>' +
                "</div>" +
                "</div>" +
                '<div class="github-box-content">' +
                '<p class="description"><span></span> \u2014 <a href="' +
                c +
                '#readme" target="_blank">Read More</a></p>' +
                '<p class="link"></p>' +
                "</div>" +
                '<div class="github-box-download">' +
                '<div class="updated"></div>' +
                '<a class="download" href="' +
                c +
                '/zipball/master" title="Get an archive of this repository">Download as zip</a>' +
                "</div>" +
                "</div>"
            );
            o.appendTo(s);
            s.addClass("loaded");
            e.ajax({
                url: "https://api.github.com/repos/" + u,
                dataType: "jsonp",
                success: function (t) {
                    var n = t.data,
                        r,
                        i = "unknown";
                    if (n.pushed_at) {
                        r = new Date(n.pushed_at);
                        i = r.getMonth() + 1 + "-" + r.getDate() + "-" + r.getFullYear();
                    }
                    o.find(".watchers span").text(n.watchers);
                    o.find(".forks span").text(n.forks);
                    o.find(".description span").text(n.description);
                    o.find(".updated").html(
                        "Latest commit to the <strong>" +
                        n.default_branch +
                        "</strong> branch on " +
                        i
                    );
                    if (n.homepage != null)
                        o.find(".link").append(
                            e("<a />").attr("href", n.homepage).text(n.homepage)
                        );
                },
            });
        });
    };
    loadGithubRepos();
});
