/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e, t) {
    "use strict";
    "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
        if (!e.document)
            throw new Error("jQuery requires a window with a document");
        return t(e)
    }
    : t(e)
}("undefined" != typeof window ? window : this, function(ie, e) {
    "use strict";
    var oe = []
      , r = Object.getPrototypeOf
      , ae = oe.slice
      , g = oe.flat ? function(e) {
        return oe.flat.call(e)
    }
    : function(e) {
        return oe.concat.apply([], e)
    }
      , s = oe.push
      , se = oe.indexOf
      , n = {}
      , i = n.toString
      , ue = n.hasOwnProperty
      , o = ue.toString
      , a = o.call(Object)
      , le = {}
      , v = function(e) {
        return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item
    }
      , y = function(e) {
        return null != e && e === e.window
    }
      , C = ie.document
      , u = {
        type: !0,
        src: !0,
        nonce: !0,
        noModule: !0
    };
    function m(e, t, n) {
        var r, i, o = (n = n || C).createElement("script");
        if (o.text = e,
        t)
            for (r in u)
                (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
        n.head.appendChild(o).parentNode.removeChild(o)
    }
    function x(e) {
        return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[i.call(e)] || "object" : typeof e
    }
    var t = "3.7.1"
      , l = /HTML$/i
      , ce = function(e, t) {
        return new ce.fn.init(e,t)
    };
    function c(e) {
        var t = !!e && "length"in e && e.length
          , n = x(e);
        return !v(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
    }
    function fe(e, t) {
        return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
    }
    ce.fn = ce.prototype = {
        jquery: t,
        constructor: ce,
        length: 0,
        toArray: function() {
            return ae.call(this)
        },
        get: function(e) {
            return null == e ? ae.call(this) : e < 0 ? this[e + this.length] : this[e]
        },
        pushStack: function(e) {
            var t = ce.merge(this.constructor(), e);
            return t.prevObject = this,
            t
        },
        each: function(e) {
            return ce.each(this, e)
        },
        map: function(n) {
            return this.pushStack(ce.map(this, function(e, t) {
                return n.call(e, t, e)
            }))
        },
        slice: function() {
            return this.pushStack(ae.apply(this, arguments))
        },
        first: function() {
            return this.eq(0)
        },
        last: function() {
            return this.eq(-1)
        },
        even: function() {
            return this.pushStack(ce.grep(this, function(e, t) {
                return (t + 1) % 2
            }))
        },
        odd: function() {
            return this.pushStack(ce.grep(this, function(e, t) {
                return t % 2
            }))
        },
        eq: function(e) {
            var t = this.length
              , n = +e + (e < 0 ? t : 0);
            return this.pushStack(0 <= n && n < t ? [this[n]] : [])
        },
        end: function() {
            return this.prevObject || this.constructor()
        },
        push: s,
        sort: oe.sort,
        splice: oe.splice
    },
    ce.extend = ce.fn.extend = function() {
        var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1;
        for ("boolean" == typeof a && (l = a,
        a = arguments[s] || {},
        s++),
        "object" == typeof a || v(a) || (a = {}),
        s === u && (a = this,
        s--); s < u; s++)
            if (null != (e = arguments[s]))
                for (t in e)
                    r = e[t],
                    "__proto__" !== t && a !== r && (l && r && (ce.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t],
                    o = i && !Array.isArray(n) ? [] : i || ce.isPlainObject(n) ? n : {},
                    i = !1,
                    a[t] = ce.extend(l, o, r)) : void 0 !== r && (a[t] = r));
        return a
    }
    ,
    ce.extend({
        expando: "jQuery" + (t + Math.random()).replace(/\D/g, ""),
        isReady: !0,
        error: function(e) {
            throw new Error(e)
        },
        noop: function() {},
        isPlainObject: function(e) {
            var t, n;
            return !(!e || "[object Object]" !== i.call(e)) && (!(t = r(e)) || "function" == typeof (n = ue.call(t, "constructor") && t.constructor) && o.call(n) === a)
        },
        isEmptyObject: function(e) {
            var t;
            for (t in e)
                return !1;
            return !0
        },
        globalEval: function(e, t, n) {
            m(e, {
                nonce: t && t.nonce
            }, n)
        },
        each: function(e, t) {
            var n, r = 0;
            if (c(e)) {
                for (n = e.length; r < n; r++)
                    if (!1 === t.call(e[r], r, e[r]))
                        break
            } else
                for (r in e)
                    if (!1 === t.call(e[r], r, e[r]))
                        break;
            return e
        },
        text: function(e) {
            var t, n = "", r = 0, i = e.nodeType;
            if (!i)
                while (t = e[r++])
                    n += ce.text(t);
            return 1 === i || 11 === i ? e.textContent : 9 === i ? e.documentElement.textContent : 3 === i || 4 === i ? e.nodeValue : n
        },
        makeArray: function(e, t) {
            var n = t || [];
            return null != e && (c(Object(e)) ? ce.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)),
            n
        },
        inArray: function(e, t, n) {
            return null == t ? -1 : se.call(t, e, n)
        },
        isXMLDoc: function(e) {
            var t = e && e.namespaceURI
              , n = e && (e.ownerDocument || e).documentElement;
            return !l.test(t || n && n.nodeName || "HTML")
        },
        merge: function(e, t) {
            for (var n = +t.length, r = 0, i = e.length; r < n; r++)
                e[i++] = t[r];
            return e.length = i,
            e
        },
        grep: function(e, t, n) {
            for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)
                !t(e[i], i) !== a && r.push(e[i]);
            return r
        },
        map: function(e, t, n) {
            var r, i, o = 0, a = [];
            if (c(e))
                for (r = e.length; o < r; o++)
                    null != (i = t(e[o], o, n)) && a.push(i);
            else
                for (o in e)
                    null != (i = t(e[o], o, n)) && a.push(i);
            return g(a)
        },
        guid: 1,
        support: le
    }),
    "function" == typeof Symbol && (ce.fn[Symbol.iterator] = oe[Symbol.iterator]),
    ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
        n["[object " + t + "]"] = t.toLowerCase()
    });
    var pe = oe.pop
      , de = oe.sort
      , he = oe.splice
      , ge = "[\\x20\\t\\r\\n\\f]"
      , ve = new RegExp("^" + ge + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ge + "+$","g");
    ce.contains = function(e, t) {
        var n = t && t.parentNode;
        return e === n || !(!n || 1 !== n.nodeType || !(e.contains ? e.contains(n) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(n)))
    }
    ;
    var f = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
    function p(e, t) {
        return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
    }
    ce.escapeSelector = function(e) {
        return (e + "").replace(f, p)
    }
    ;
    var ye = C
      , me = s;
    !function() {
        var e, b, w, o, a, T, r, C, d, i, k = me, S = ce.expando, E = 0, n = 0, s = W(), c = W(), u = W(), h = W(), l = function(e, t) {
            return e === t && (a = !0),
            0
        }, f = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", t = "(?:\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", p = "\\[" + ge + "*(" + t + ")(?:" + ge + "*([*^$|!~]?=)" + ge + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + t + "))|)" + ge + "*\\]", g = ":(" + t + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + p + ")*)|.*)\\)|)", v = new RegExp(ge + "+","g"), y = new RegExp("^" + ge + "*," + ge + "*"), m = new RegExp("^" + ge + "*([>+~]|" + ge + ")" + ge + "*"), x = new RegExp(ge + "|>"), j = new RegExp(g), A = new RegExp("^" + t + "$"), D = {
            ID: new RegExp("^#(" + t + ")"),
            CLASS: new RegExp("^\\.(" + t + ")"),
            TAG: new RegExp("^(" + t + "|[*])"),
            ATTR: new RegExp("^" + p),
            PSEUDO: new RegExp("^" + g),
            CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ge + "*(even|odd|(([+-]|)(\\d*)n|)" + ge + "*(?:([+-]|)" + ge + "*(\\d+)|))" + ge + "*\\)|)","i"),
            bool: new RegExp("^(?:" + f + ")$","i"),
            needsContext: new RegExp("^" + ge + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ge + "*((?:-\\d)?\\d*)" + ge + "*\\)|)(?=[^-]|$)","i")
        }, N = /^(?:input|select|textarea|button)$/i, q = /^h\d$/i, L = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, H = /[+~]/, O = new RegExp("\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\([^\\r\\n\\f])","g"), P = function(e, t) {
            var n = "0x" + e.slice(1) - 65536;
            return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320))
        }, M = function() {
            V()
        }, R = J(function(e) {
            return !0 === e.disabled && fe(e, "fieldset")
        }, {
            dir: "parentNode",
            next: "legend"
        });
        try {
            k.apply(oe = ae.call(ye.childNodes), ye.childNodes),
            oe[ye.childNodes.length].nodeType
        } catch (e) {
            k = {
                apply: function(e, t) {
                    me.apply(e, ae.call(t))
                },
                call: function(e) {
                    me.apply(e, ae.call(arguments, 1))
                }
            }
        }
        function I(t, e, n, r) {
            var i, o, a, s, u, l, c, f = e && e.ownerDocument, p = e ? e.nodeType : 9;
            if (n = n || [],
            "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p)
                return n;
            if (!r && (V(e),
            e = e || T,
            C)) {
                if (11 !== p && (u = L.exec(t)))
                    if (i = u[1]) {
                        if (9 === p) {
                            if (!(a = e.getElementById(i)))
                                return n;
                            if (a.id === i)
                                return k.call(n, a),
                                n
                        } else if (f && (a = f.getElementById(i)) && I.contains(e, a) && a.id === i)
                            return k.call(n, a),
                            n
                    } else {
                        if (u[2])
                            return k.apply(n, e.getElementsByTagName(t)),
                            n;
                        if ((i = u[3]) && e.getElementsByClassName)
                            return k.apply(n, e.getElementsByClassName(i)),
                            n
                    }
                if (!(h[t + " "] || d && d.test(t))) {
                    if (c = t,
                    f = e,
                    1 === p && (x.test(t) || m.test(t))) {
                        (f = H.test(t) && U(e.parentNode) || e) == e && le.scope || ((s = e.getAttribute("id")) ? s = ce.escapeSelector(s) : e.setAttribute("id", s = S)),
                        o = (l = Y(t)).length;
                        while (o--)
                            l[o] = (s ? "#" + s : ":scope") + " " + Q(l[o]);
                        c = l.join(",")
                    }
                    try {
                        return k.apply(n, f.querySelectorAll(c)),
                        n
                    } catch (e) {
                        h(t, !0)
                    } finally {
                        s === S && e.removeAttribute("id")
                    }
                }
            }
            return re(t.replace(ve, "$1"), e, n, r)
        }
        function W() {
            var r = [];
            return function e(t, n) {
                return r.push(t + " ") > b.cacheLength && delete e[r.shift()],
                e[t + " "] = n
            }
        }
        function F(e) {
            return e[S] = !0,
            e
        }
        function $(e) {
            var t = T.createElement("fieldset");
            try {
                return !!e(t)
            } catch (e) {
                return !1
            } finally {
                t.parentNode && t.parentNode.removeChild(t),
                t = null
            }
        }
        function B(t) {
            return function(e) {
                return fe(e, "input") && e.type === t
            }
        }
        function _(t) {
            return function(e) {
                return (fe(e, "input") || fe(e, "button")) && e.type === t
            }
        }
        function z(t) {
            return function(e) {
                return "form"in e ? e.parentNode && !1 === e.disabled ? "label"in e ? "label"in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && R(e) === t : e.disabled === t : "label"in e && e.disabled === t
            }
        }
        function X(a) {
            return F(function(o) {
                return o = +o,
                F(function(e, t) {
                    var n, r = a([], e.length, o), i = r.length;
                    while (i--)
                        e[n = r[i]] && (e[n] = !(t[n] = e[n]))
                })
            })
        }
        function U(e) {
            return e && "undefined" != typeof e.getElementsByTagName && e
        }
        function V(e) {
            var t, n = e ? e.ownerDocument || e : ye;
            return n != T && 9 === n.nodeType && n.documentElement && (r = (T = n).documentElement,
            C = !ce.isXMLDoc(T),
            i = r.matches || r.webkitMatchesSelector || r.msMatchesSelector,
            r.msMatchesSelector && ye != T && (t = T.defaultView) && t.top !== t && t.addEventListener("unload", M),
            le.getById = $(function(e) {
                return r.appendChild(e).id = ce.expando,
                !T.getElementsByName || !T.getElementsByName(ce.expando).length
            }),
            le.disconnectedMatch = $(function(e) {
                return i.call(e, "*")
            }),
            le.scope = $(function() {
                return T.querySelectorAll(":scope")
            }),
            le.cssHas = $(function() {
                try {
                    return T.querySelector(":has(*,:jqfake)"),
                    !1
                } catch (e) {
                    return !0
                }
            }),
            le.getById ? (b.filter.ID = function(e) {
                var t = e.replace(O, P);
                return function(e) {
                    return e.getAttribute("id") === t
                }
            }
            ,
            b.find.ID = function(e, t) {
                if ("undefined" != typeof t.getElementById && C) {
                    var n = t.getElementById(e);
                    return n ? [n] : []
                }
            }
            ) : (b.filter.ID = function(e) {
                var n = e.replace(O, P);
                return function(e) {
                    var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                    return t && t.value === n
                }
            }
            ,
            b.find.ID = function(e, t) {
                if ("undefined" != typeof t.getElementById && C) {
                    var n, r, i, o = t.getElementById(e);
                    if (o) {
                        if ((n = o.getAttributeNode("id")) && n.value === e)
                            return [o];
                        i = t.getElementsByName(e),
                        r = 0;
                        while (o = i[r++])
                            if ((n = o.getAttributeNode("id")) && n.value === e)
                                return [o]
                    }
                    return []
                }
            }
            ),
            b.find.TAG = function(e, t) {
                return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : t.querySelectorAll(e)
            }
            ,
            b.find.CLASS = function(e, t) {
                if ("undefined" != typeof t.getElementsByClassName && C)
                    return t.getElementsByClassName(e)
            }
            ,
            d = [],
            $(function(e) {
                var t;
                r.appendChild(e).innerHTML = "<a id='" + S + "' href='' disabled='disabled'></a><select id='" + S + "-\r\\' disabled='disabled'><option selected=''></option></select>",
                e.querySelectorAll("[selected]").length || d.push("\\[" + ge + "*(?:value|" + f + ")"),
                e.querySelectorAll("[id~=" + S + "-]").length || d.push("~="),
                e.querySelectorAll("a#" + S + "+*").length || d.push(".#.+[+~]"),
                e.querySelectorAll(":checked").length || d.push(":checked"),
                (t = T.createElement("input")).setAttribute("type", "hidden"),
                e.appendChild(t).setAttribute("name", "D"),
                r.appendChild(e).disabled = !0,
                2 !== e.querySelectorAll(":disabled").length && d.push(":enabled", ":disabled"),
                (t = T.createElement("input")).setAttribute("name", ""),
                e.appendChild(t),
                e.querySelectorAll("[name='']").length || d.push("\\[" + ge + "*name" + ge + "*=" + ge + "*(?:''|\"\")")
            }),
            le.cssHas || d.push(":has"),
            d = d.length && new RegExp(d.join("|")),
            l = function(e, t) {
                if (e === t)
                    return a = !0,
                    0;
                var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
                return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !le.sortDetached && t.compareDocumentPosition(e) === n ? e === T || e.ownerDocument == ye && I.contains(ye, e) ? -1 : t === T || t.ownerDocument == ye && I.contains(ye, t) ? 1 : o ? se.call(o, e) - se.call(o, t) : 0 : 4 & n ? -1 : 1)
            }
            ),
            T
        }
        for (e in I.matches = function(e, t) {
            return I(e, null, null, t)
        }
        ,
        I.matchesSelector = function(e, t) {
            if (V(e),
            C && !h[t + " "] && (!d || !d.test(t)))
                try {
                    var n = i.call(e, t);
                    if (n || le.disconnectedMatch || e.document && 11 !== e.document.nodeType)
                        return n
                } catch (e) {
                    h(t, !0)
                }
            return 0 < I(t, T, null, [e]).length
        }
        ,
        I.contains = function(e, t) {
            return (e.ownerDocument || e) != T && V(e),
            ce.contains(e, t)
        }
        ,
        I.attr = function(e, t) {
            (e.ownerDocument || e) != T && V(e);
            var n = b.attrHandle[t.toLowerCase()]
              , r = n && ue.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0;
            return void 0 !== r ? r : e.getAttribute(t)
        }
        ,
        I.error = function(e) {
            throw new Error("Syntax error, unrecognized expression: " + e)
        }
        ,
        ce.uniqueSort = function(e) {
            var t, n = [], r = 0, i = 0;
            if (a = !le.sortStable,
            o = !le.sortStable && ae.call(e, 0),
            de.call(e, l),
            a) {
                while (t = e[i++])
                    t === e[i] && (r = n.push(i));
                while (r--)
                    he.call(e, n[r], 1)
            }
            return o = null,
            e
        }
        ,
        ce.fn.uniqueSort = function() {
            return this.pushStack(ce.uniqueSort(ae.apply(this)))
        }
        ,
        (b = ce.expr = {
            cacheLength: 50,
            createPseudo: F,
            match: D,
            attrHandle: {},
            find: {},
            relative: {
                ">": {
                    dir: "parentNode",
                    first: !0
                },
                " ": {
                    dir: "parentNode"
                },
                "+": {
                    dir: "previousSibling",
                    first: !0
                },
                "~": {
                    dir: "previousSibling"
                }
            },
            preFilter: {
                ATTR: function(e) {
                    return e[1] = e[1].replace(O, P),
                    e[3] = (e[3] || e[4] || e[5] || "").replace(O, P),
                    "~=" === e[2] && (e[3] = " " + e[3] + " "),
                    e.slice(0, 4)
                },
                CHILD: function(e) {
                    return e[1] = e[1].toLowerCase(),
                    "nth" === e[1].slice(0, 3) ? (e[3] || I.error(e[0]),
                    e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])),
                    e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && I.error(e[0]),
                    e
                },
                PSEUDO: function(e) {
                    var t, n = !e[6] && e[2];
                    return D.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && j.test(n) && (t = Y(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t),
                    e[2] = n.slice(0, t)),
                    e.slice(0, 3))
                }
            },
            filter: {
                TAG: function(e) {
                    var t = e.replace(O, P).toLowerCase();
                    return "*" === e ? function() {
                        return !0
                    }
                    : function(e) {
                        return fe(e, t)
                    }
                },
                CLASS: function(e) {
                    var t = s[e + " "];
                    return t || (t = new RegExp("(^|" + ge + ")" + e + "(" + ge + "|$)")) && s(e, function(e) {
                        return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                    })
                },
                ATTR: function(n, r, i) {
                    return function(e) {
                        var t = I.attr(e, n);
                        return null == t ? "!=" === r : !r || (t += "",
                        "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(v, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
                    }
                },
                CHILD: function(d, e, t, h, g) {
                    var v = "nth" !== d.slice(0, 3)
                      , y = "last" !== d.slice(-4)
                      , m = "of-type" === e;
                    return 1 === h && 0 === g ? function(e) {
                        return !!e.parentNode
                    }
                    : function(e, t, n) {
                        var r, i, o, a, s, u = v !== y ? "nextSibling" : "previousSibling", l = e.parentNode, c = m && e.nodeName.toLowerCase(), f = !n && !m, p = !1;
                        if (l) {
                            if (v) {
                                while (u) {
                                    o = e;
                                    while (o = o[u])
                                        if (m ? fe(o, c) : 1 === o.nodeType)
                                            return !1;
                                    s = u = "only" === d && !s && "nextSibling"
                                }
                                return !0
                            }
                            if (s = [y ? l.firstChild : l.lastChild],
                            y && f) {
                                p = (a = (r = (i = l[S] || (l[S] = {}))[d] || [])[0] === E && r[1]) && r[2],
                                o = a && l.childNodes[a];
                                while (o = ++a && o && o[u] || (p = a = 0) || s.pop())
                                    if (1 === o.nodeType && ++p && o === e) {
                                        i[d] = [E, a, p];
                                        break
                                    }
                            } else if (f && (p = a = (r = (i = e[S] || (e[S] = {}))[d] || [])[0] === E && r[1]),
                            !1 === p)
                                while (o = ++a && o && o[u] || (p = a = 0) || s.pop())
                                    if ((m ? fe(o, c) : 1 === o.nodeType) && ++p && (f && ((i = o[S] || (o[S] = {}))[d] = [E, p]),
                                    o === e))
                                        break;
                            return (p -= g) === h || p % h == 0 && 0 <= p / h
                        }
                    }
                },
                PSEUDO: function(e, o) {
                    var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || I.error("unsupported pseudo: " + e);
                    return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o],
                    b.setFilters.hasOwnProperty(e.toLowerCase()) ? F(function(e, t) {
                        var n, r = a(e, o), i = r.length;
                        while (i--)
                            e[n = se.call(e, r[i])] = !(t[n] = r[i])
                    }) : function(e) {
                        return a(e, 0, t)
                    }
                    ) : a
                }
            },
            pseudos: {
                not: F(function(e) {
                    var r = []
                      , i = []
                      , s = ne(e.replace(ve, "$1"));
                    return s[S] ? F(function(e, t, n, r) {
                        var i, o = s(e, null, r, []), a = e.length;
                        while (a--)
                            (i = o[a]) && (e[a] = !(t[a] = i))
                    }) : function(e, t, n) {
                        return r[0] = e,
                        s(r, null, n, i),
                        r[0] = null,
                        !i.pop()
                    }
                }),
                has: F(function(t) {
                    return function(e) {
                        return 0 < I(t, e).length
                    }
                }),
                contains: F(function(t) {
                    return t = t.replace(O, P),
                    function(e) {
                        return -1 < (e.textContent || ce.text(e)).indexOf(t)
                    }
                }),
                lang: F(function(n) {
                    return A.test(n || "") || I.error("unsupported lang: " + n),
                    n = n.replace(O, P).toLowerCase(),
                    function(e) {
                        var t;
                        do {
                            if (t = C ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang"))
                                return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
                        } while ((e = e.parentNode) && 1 === e.nodeType);
                        return !1
                    }
                }),
                target: function(e) {
                    var t = ie.location && ie.location.hash;
                    return t && t.slice(1) === e.id
                },
                root: function(e) {
                    return e === r
                },
                focus: function(e) {
                    return e === function() {
                        try {
                            return T.activeElement
                        } catch (e) {}
                    }() && T.hasFocus() && !!(e.type || e.href || ~e.tabIndex)
                },
                enabled: z(!1),
                disabled: z(!0),
                checked: function(e) {
                    return fe(e, "input") && !!e.checked || fe(e, "option") && !!e.selected
                },
                selected: function(e) {
                    return e.parentNode && e.parentNode.selectedIndex,
                    !0 === e.selected
                },
                empty: function(e) {
                    for (e = e.firstChild; e; e = e.nextSibling)
                        if (e.nodeType < 6)
                            return !1;
                    return !0
                },
                parent: function(e) {
                    return !b.pseudos.empty(e)
                },
                header: function(e) {
                    return q.test(e.nodeName)
                },
                input: function(e) {
                    return N.test(e.nodeName)
                },
                button: function(e) {
                    return fe(e, "input") && "button" === e.type || fe(e, "button")
                },
                text: function(e) {
                    var t;
                    return fe(e, "input") && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                },
                first: X(function() {
                    return [0]
                }),
                last: X(function(e, t) {
                    return [t - 1]
                }),
                eq: X(function(e, t, n) {
                    return [n < 0 ? n + t : n]
                }),
                even: X(function(e, t) {
                    for (var n = 0; n < t; n += 2)
                        e.push(n);
                    return e
                }),
                odd: X(function(e, t) {
                    for (var n = 1; n < t; n += 2)
                        e.push(n);
                    return e
                }),
                lt: X(function(e, t, n) {
                    var r;
                    for (r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; )
                        e.push(r);
                    return e
                }),
                gt: X(function(e, t, n) {
                    for (var r = n < 0 ? n + t : n; ++r < t; )
                        e.push(r);
                    return e
                })
            }
        }).pseudos.nth = b.pseudos.eq,
        {
            radio: !0,
            checkbox: !0,
            file: !0,
            password: !0,
            image: !0
        })
            b.pseudos[e] = B(e);
        for (e in {
            submit: !0,
            reset: !0
        })
            b.pseudos[e] = _(e);
        function G() {}
        function Y(e, t) {
            var n, r, i, o, a, s, u, l = c[e + " "];
            if (l)
                return t ? 0 : l.slice(0);
            a = e,
            s = [],
            u = b.preFilter;
            while (a) {
                for (o in n && !(r = y.exec(a)) || (r && (a = a.slice(r[0].length) || a),
                s.push(i = [])),
                n = !1,
                (r = m.exec(a)) && (n = r.shift(),
                i.push({
                    value: n,
                    type: r[0].replace(ve, " ")
                }),
                a = a.slice(n.length)),
                b.filter)
                    !(r = D[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(),
                    i.push({
                        value: n,
                        type: o,
                        matches: r
                    }),
                    a = a.slice(n.length));
                if (!n)
                    break
            }
            return t ? a.length : a ? I.error(e) : c(e, s).slice(0)
        }
        function Q(e) {
            for (var t = 0, n = e.length, r = ""; t < n; t++)
                r += e[t].value;
            return r
        }
        function J(a, e, t) {
            var s = e.dir
              , u = e.next
              , l = u || s
              , c = t && "parentNode" === l
              , f = n++;
            return e.first ? function(e, t, n) {
                while (e = e[s])
                    if (1 === e.nodeType || c)
                        return a(e, t, n);
                return !1
            }
            : function(e, t, n) {
                var r, i, o = [E, f];
                if (n) {
                    while (e = e[s])
                        if ((1 === e.nodeType || c) && a(e, t, n))
                            return !0
                } else
                    while (e = e[s])
                        if (1 === e.nodeType || c)
                            if (i = e[S] || (e[S] = {}),
                            u && fe(e, u))
                                e = e[s] || e;
                            else {
                                if ((r = i[l]) && r[0] === E && r[1] === f)
                                    return o[2] = r[2];
                                if ((i[l] = o)[2] = a(e, t, n))
                                    return !0
                            }
                return !1
            }
        }
        function K(i) {
            return 1 < i.length ? function(e, t, n) {
                var r = i.length;
                while (r--)
                    if (!i[r](e, t, n))
                        return !1;
                return !0
            }
            : i[0]
        }
        function Z(e, t, n, r, i) {
            for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)
                (o = e[s]) && (n && !n(o, r, i) || (a.push(o),
                l && t.push(s)));
            return a
        }
        function ee(d, h, g, v, y, e) {
            return v && !v[S] && (v = ee(v)),
            y && !y[S] && (y = ee(y, e)),
            F(function(e, t, n, r) {
                var i, o, a, s, u = [], l = [], c = t.length, f = e || function(e, t, n) {
                    for (var r = 0, i = t.length; r < i; r++)
                        I(e, t[r], n);
                    return n
                }(h || "*", n.nodeType ? [n] : n, []), p = !d || !e && h ? f : Z(f, u, d, n, r);
                if (g ? g(p, s = y || (e ? d : c || v) ? [] : t, n, r) : s = p,
                v) {
                    i = Z(s, l),
                    v(i, [], n, r),
                    o = i.length;
                    while (o--)
                        (a = i[o]) && (s[l[o]] = !(p[l[o]] = a))
                }
                if (e) {
                    if (y || d) {
                        if (y) {
                            i = [],
                            o = s.length;
                            while (o--)
                                (a = s[o]) && i.push(p[o] = a);
                            y(null, s = [], i, r)
                        }
                        o = s.length;
                        while (o--)
                            (a = s[o]) && -1 < (i = y ? se.call(e, a) : u[o]) && (e[i] = !(t[i] = a))
                    }
                } else
                    s = Z(s === t ? s.splice(c, s.length) : s),
                    y ? y(null, t, s, r) : k.apply(t, s)
            })
        }
        function te(e) {
            for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = J(function(e) {
                return e === i
            }, a, !0), l = J(function(e) {
                return -1 < se.call(i, e)
            }, a, !0), c = [function(e, t, n) {
                var r = !o && (n || t != w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n));
                return i = null,
                r
            }
            ]; s < r; s++)
                if (t = b.relative[e[s].type])
                    c = [J(K(c), t)];
                else {
                    if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) {
                        for (n = ++s; n < r; n++)
                            if (b.relative[e[n].type])
                                break;
                        return ee(1 < s && K(c), 1 < s && Q(e.slice(0, s - 1).concat({
                            value: " " === e[s - 2].type ? "*" : ""
                        })).replace(ve, "$1"), t, s < n && te(e.slice(s, n)), n < r && te(e = e.slice(n)), n < r && Q(e))
                    }
                    c.push(t)
                }
            return K(c)
        }
        function ne(e, t) {
            var n, v, y, m, x, r, i = [], o = [], a = u[e + " "];
            if (!a) {
                t || (t = Y(e)),
                n = t.length;
                while (n--)
                    (a = te(t[n]))[S] ? i.push(a) : o.push(a);
                (a = u(e, (v = o,
                m = 0 < (y = i).length,
                x = 0 < v.length,
                r = function(e, t, n, r, i) {
                    var o, a, s, u = 0, l = "0", c = e && [], f = [], p = w, d = e || x && b.find.TAG("*", i), h = E += null == p ? 1 : Math.random() || .1, g = d.length;
                    for (i && (w = t == T || t || i); l !== g && null != (o = d[l]); l++) {
                        if (x && o) {
                            a = 0,
                            t || o.ownerDocument == T || (V(o),
                            n = !C);
                            while (s = v[a++])
                                if (s(o, t || T, n)) {
                                    k.call(r, o);
                                    break
                                }
                            i && (E = h)
                        }
                        m && ((o = !s && o) && u--,
                        e && c.push(o))
                    }
                    if (u += l,
                    m && l !== u) {
                        a = 0;
                        while (s = y[a++])
                            s(c, f, t, n);
                        if (e) {
                            if (0 < u)
                                while (l--)
                                    c[l] || f[l] || (f[l] = pe.call(r));
                            f = Z(f)
                        }
                        k.apply(r, f),
                        i && !e && 0 < f.length && 1 < u + y.length && ce.uniqueSort(r)
                    }
                    return i && (E = h,
                    w = p),
                    c
                }
                ,
                m ? F(r) : r))).selector = e
            }
            return a
        }
        function re(e, t, n, r) {
            var i, o, a, s, u, l = "function" == typeof e && e, c = !r && Y(e = l.selector || e);
            if (n = n || [],
            1 === c.length) {
                if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && C && b.relative[o[1].type]) {
                    if (!(t = (b.find.ID(a.matches[0].replace(O, P), t) || [])[0]))
                        return n;
                    l && (t = t.parentNode),
                    e = e.slice(o.shift().value.length)
                }
                i = D.needsContext.test(e) ? 0 : o.length;
                while (i--) {
                    if (a = o[i],
                    b.relative[s = a.type])
                        break;
                    if ((u = b.find[s]) && (r = u(a.matches[0].replace(O, P), H.test(o[0].type) && U(t.parentNode) || t))) {
                        if (o.splice(i, 1),
                        !(e = r.length && Q(o)))
                            return k.apply(n, r),
                            n;
                        break
                    }
                }
            }
            return (l || ne(e, c))(r, t, !C, n, !t || H.test(e) && U(t.parentNode) || t),
            n
        }
        G.prototype = b.filters = b.pseudos,
        b.setFilters = new G,
        le.sortStable = S.split("").sort(l).join("") === S,
        V(),
        le.sortDetached = $(function(e) {
            return 1 & e.compareDocumentPosition(T.createElement("fieldset"))
        }),
        ce.find = I,
        ce.expr[":"] = ce.expr.pseudos,
        ce.unique = ce.uniqueSort,
        I.compile = ne,
        I.select = re,
        I.setDocument = V,
        I.tokenize = Y,
        I.escape = ce.escapeSelector,
        I.getText = ce.text,
        I.isXML = ce.isXMLDoc,
        I.selectors = ce.expr,
        I.support = ce.support,
        I.uniqueSort = ce.uniqueSort
    }();
    var d = function(e, t, n) {
        var r = []
          , i = void 0 !== n;
        while ((e = e[t]) && 9 !== e.nodeType)
            if (1 === e.nodeType) {
                if (i && ce(e).is(n))
                    break;
                r.push(e)
            }
        return r
    }
      , h = function(e, t) {
        for (var n = []; e; e = e.nextSibling)
            1 === e.nodeType && e !== t && n.push(e);
        return n
    }
      , b = ce.expr.match.needsContext
      , w = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
    function T(e, n, r) {
        return v(n) ? ce.grep(e, function(e, t) {
            return !!n.call(e, t, e) !== r
        }) : n.nodeType ? ce.grep(e, function(e) {
            return e === n !== r
        }) : "string" != typeof n ? ce.grep(e, function(e) {
            return -1 < se.call(n, e) !== r
        }) : ce.filter(n, e, r)
    }
    ce.filter = function(e, t, n) {
        var r = t[0];
        return n && (e = ":not(" + e + ")"),
        1 === t.length && 1 === r.nodeType ? ce.find.matchesSelector(r, e) ? [r] : [] : ce.find.matches(e, ce.grep(t, function(e) {
            return 1 === e.nodeType
        }))
    }
    ,
    ce.fn.extend({
        find: function(e) {
            var t, n, r = this.length, i = this;
            if ("string" != typeof e)
                return this.pushStack(ce(e).filter(function() {
                    for (t = 0; t < r; t++)
                        if (ce.contains(i[t], this))
                            return !0
                }));
            for (n = this.pushStack([]),
            t = 0; t < r; t++)
                ce.find(e, i[t], n);
            return 1 < r ? ce.uniqueSort(n) : n
        },
        filter: function(e) {
            return this.pushStack(T(this, e || [], !1))
        },
        not: function(e) {
            return this.pushStack(T(this, e || [], !0))
        },
        is: function(e) {
            return !!T(this, "string" == typeof e && b.test(e) ? ce(e) : e || [], !1).length
        }
    });
    var k, S = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
    (ce.fn.init = function(e, t, n) {
        var r, i;
        if (!e)
            return this;
        if (n = n || k,
        "string" == typeof e) {
            if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : S.exec(e)) || !r[1] && t)
                return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
            if (r[1]) {
                if (t = t instanceof ce ? t[0] : t,
                ce.merge(this, ce.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0)),
                w.test(r[1]) && ce.isPlainObject(t))
                    for (r in t)
                        v(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
                return this
            }
            return (i = C.getElementById(r[2])) && (this[0] = i,
            this.length = 1),
            this
        }
        return e.nodeType ? (this[0] = e,
        this.length = 1,
        this) : v(e) ? void 0 !== n.ready ? n.ready(e) : e(ce) : ce.makeArray(e, this)
    }
    ).prototype = ce.fn,
    k = ce(C);
    var E = /^(?:parents|prev(?:Until|All))/
      , j = {
        children: !0,
        contents: !0,
        next: !0,
        prev: !0
    };
    function A(e, t) {
        while ((e = e[t]) && 1 !== e.nodeType)
            ;
        return e
    }
    ce.fn.extend({
        has: function(e) {
            var t = ce(e, this)
              , n = t.length;
            return this.filter(function() {
                for (var e = 0; e < n; e++)
                    if (ce.contains(this, t[e]))
                        return !0
            })
        },
        closest: function(e, t) {
            var n, r = 0, i = this.length, o = [], a = "string" != typeof e && ce(e);
            if (!b.test(e))
                for (; r < i; r++)
                    for (n = this[r]; n && n !== t; n = n.parentNode)
                        if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && ce.find.matchesSelector(n, e))) {
                            o.push(n);
                            break
                        }
            return this.pushStack(1 < o.length ? ce.uniqueSort(o) : o)
        },
        index: function(e) {
            return e ? "string" == typeof e ? se.call(ce(e), this[0]) : se.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
        },
        add: function(e, t) {
            return this.pushStack(ce.uniqueSort(ce.merge(this.get(), ce(e, t))))
        },
        addBack: function(e) {
            return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
        }
    }),
    ce.each({
        parent: function(e) {
            var t = e.parentNode;
            return t && 11 !== t.nodeType ? t : null
        },
        parents: function(e) {
            return d(e, "parentNode")
        },
        parentsUntil: function(e, t, n) {
            return d(e, "parentNode", n)
        },
        next: function(e) {
            return A(e, "nextSibling")
        },
        prev: function(e) {
            return A(e, "previousSibling")
        },
        nextAll: function(e) {
            return d(e, "nextSibling")
        },
        prevAll: function(e) {
            return d(e, "previousSibling")
        },
        nextUntil: function(e, t, n) {
            return d(e, "nextSibling", n)
        },
        prevUntil: function(e, t, n) {
            return d(e, "previousSibling", n)
        },
        siblings: function(e) {
            return h((e.parentNode || {}).firstChild, e)
        },
        children: function(e) {
            return h(e.firstChild)
        },
        contents: function(e) {
            return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (fe(e, "template") && (e = e.content || e),
            ce.merge([], e.childNodes))
        }
    }, function(r, i) {
        ce.fn[r] = function(e, t) {
            var n = ce.map(this, i, e);
            return "Until" !== r.slice(-5) && (t = e),
            t && "string" == typeof t && (n = ce.filter(t, n)),
            1 < this.length && (j[r] || ce.uniqueSort(n),
            E.test(r) && n.reverse()),
            this.pushStack(n)
        }
    });
    var D = /[^\x20\t\r\n\f]+/g;
    function N(e) {
        return e
    }
    function q(e) {
        throw e
    }
    function L(e, t, n, r) {
        var i;
        try {
            e && v(i = e.promise) ? i.call(e).done(t).fail(n) : e && v(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
        } catch (e) {
            n.apply(void 0, [e])
        }
    }
    ce.Callbacks = function(r) {
        var e, n;
        r = "string" == typeof r ? (e = r,
        n = {},
        ce.each(e.match(D) || [], function(e, t) {
            n[t] = !0
        }),
        n) : ce.extend({}, r);
        var i, t, o, a, s = [], u = [], l = -1, c = function() {
            for (a = a || r.once,
            o = i = !0; u.length; l = -1) {
                t = u.shift();
                while (++l < s.length)
                    !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length,
                    t = !1)
            }
            r.memory || (t = !1),
            i = !1,
            a && (s = t ? [] : "")
        }, f = {
            add: function() {
                return s && (t && !i && (l = s.length - 1,
                u.push(t)),
                function n(e) {
                    ce.each(e, function(e, t) {
                        v(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== x(t) && n(t)
                    })
                }(arguments),
                t && !i && c()),
                this
            },
            remove: function() {
                return ce.each(arguments, function(e, t) {
                    var n;
                    while (-1 < (n = ce.inArray(t, s, n)))
                        s.splice(n, 1),
                        n <= l && l--
                }),
                this
            },
            has: function(e) {
                return e ? -1 < ce.inArray(e, s) : 0 < s.length
            },
            empty: function() {
                return s && (s = []),
                this
            },
            disable: function() {
                return a = u = [],
                s = t = "",
                this
            },
            disabled: function() {
                return !s
            },
            lock: function() {
                return a = u = [],
                t || i || (s = t = ""),
                this
            },
            locked: function() {
                return !!a
            },
            fireWith: function(e, t) {
                return a || (t = [e, (t = t || []).slice ? t.slice() : t],
                u.push(t),
                i || c()),
                this
            },
            fire: function() {
                return f.fireWith(this, arguments),
                this
            },
            fired: function() {
                return !!o
            }
        };
        return f
    }
    ,
    ce.extend({
        Deferred: function(e) {
            var o = [["notify", "progress", ce.Callbacks("memory"), ce.Callbacks("memory"), 2], ["resolve", "done", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 1, "rejected"]]
              , i = "pending"
              , a = {
                state: function() {
                    return i
                },
                always: function() {
                    return s.done(arguments).fail(arguments),
                    this
                },
                "catch": function(e) {
                    return a.then(null, e)
                },
                pipe: function() {
                    var i = arguments;
                    return ce.Deferred(function(r) {
                        ce.each(o, function(e, t) {
                            var n = v(i[t[4]]) && i[t[4]];
                            s[t[1]](function() {
                                var e = n && n.apply(this, arguments);
                                e && v(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
                            })
                        }),
                        i = null
                    }).promise()
                },
                then: function(t, n, r) {
                    var u = 0;
                    function l(i, o, a, s) {
                        return function() {
                            var n = this
                              , r = arguments
                              , e = function() {
                                var e, t;
                                if (!(i < u)) {
                                    if ((e = a.apply(n, r)) === o.promise())
                                        throw new TypeError("Thenable self-resolution");
                                    t = e && ("object" == typeof e || "function" == typeof e) && e.then,
                                    v(t) ? s ? t.call(e, l(u, o, N, s), l(u, o, q, s)) : (u++,
                                    t.call(e, l(u, o, N, s), l(u, o, q, s), l(u, o, N, o.notifyWith))) : (a !== N && (n = void 0,
                                    r = [e]),
                                    (s || o.resolveWith)(n, r))
                                }
                            }
                              , t = s ? e : function() {
                                try {
                                    e()
                                } catch (e) {
                                    ce.Deferred.exceptionHook && ce.Deferred.exceptionHook(e, t.error),
                                    u <= i + 1 && (a !== q && (n = void 0,
                                    r = [e]),
                                    o.rejectWith(n, r))
                                }
                            }
                            ;
                            i ? t() : (ce.Deferred.getErrorHook ? t.error = ce.Deferred.getErrorHook() : ce.Deferred.getStackHook && (t.error = ce.Deferred.getStackHook()),
                            ie.setTimeout(t))
                        }
                    }
                    return ce.Deferred(function(e) {
                        o[0][3].add(l(0, e, v(r) ? r : N, e.notifyWith)),
                        o[1][3].add(l(0, e, v(t) ? t : N)),
                        o[2][3].add(l(0, e, v(n) ? n : q))
                    }).promise()
                },
                promise: function(e) {
                    return null != e ? ce.extend(e, a) : a
                }
            }
              , s = {};
            return ce.each(o, function(e, t) {
                var n = t[2]
                  , r = t[5];
                a[t[1]] = n.add,
                r && n.add(function() {
                    i = r
                }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock),
                n.add(t[3].fire),
                s[t[0]] = function() {
                    return s[t[0] + "With"](this === s ? void 0 : this, arguments),
                    this
                }
                ,
                s[t[0] + "With"] = n.fireWith
            }),
            a.promise(s),
            e && e.call(s, s),
            s
        },
        when: function(e) {
            var n = arguments.length
              , t = n
              , r = Array(t)
              , i = ae.call(arguments)
              , o = ce.Deferred()
              , a = function(t) {
                return function(e) {
                    r[t] = this,
                    i[t] = 1 < arguments.length ? ae.call(arguments) : e,
                    --n || o.resolveWith(r, i)
                }
            };
            if (n <= 1 && (L(e, o.done(a(t)).resolve, o.reject, !n),
            "pending" === o.state() || v(i[t] && i[t].then)))
                return o.then();
            while (t--)
                L(i[t], a(t), o.reject);
            return o.promise()
        }
    });
    var H = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
    ce.Deferred.exceptionHook = function(e, t) {
        ie.console && ie.console.warn && e && H.test(e.name) && ie.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
    }
    ,
    ce.readyException = function(e) {
        ie.setTimeout(function() {
            throw e
        })
    }
    ;
    var O = ce.Deferred();
    function P() {
        C.removeEventListener("DOMContentLoaded", P),
        ie.removeEventListener("load", P),
        ce.ready()
    }
    ce.fn.ready = function(e) {
        return O.then(e)["catch"](function(e) {
            ce.readyException(e)
        }),
        this
    }
    ,
    ce.extend({
        isReady: !1,
        readyWait: 1,
        ready: function(e) {
            (!0 === e ? --ce.readyWait : ce.isReady) || (ce.isReady = !0) !== e && 0 < --ce.readyWait || O.resolveWith(C, [ce])
        }
    }),
    ce.ready.then = O.then,
    "complete" === C.readyState || "loading" !== C.readyState && !C.documentElement.doScroll ? ie.setTimeout(ce.ready) : (C.addEventListener("DOMContentLoaded", P),
    ie.addEventListener("load", P));
    var M = function(e, t, n, r, i, o, a) {
        var s = 0
          , u = e.length
          , l = null == n;
        if ("object" === x(n))
            for (s in i = !0,
            n)
                M(e, t, s, n[s], !0, o, a);
        else if (void 0 !== r && (i = !0,
        v(r) || (a = !0),
        l && (a ? (t.call(e, r),
        t = null) : (l = t,
        t = function(e, t, n) {
            return l.call(ce(e), n)
        }
        )),
        t))
            for (; s < u; s++)
                t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
        return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
    }
      , R = /^-ms-/
      , I = /-([a-z])/g;
    function W(e, t) {
        return t.toUpperCase()
    }
    function F(e) {
        return e.replace(R, "ms-").replace(I, W)
    }
    var $ = function(e) {
        return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
    };
    function B() {
        this.expando = ce.expando + B.uid++
    }
    B.uid = 1,
    B.prototype = {
        cache: function(e) {
            var t = e[this.expando];
            return t || (t = {},
            $(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
                value: t,
                configurable: !0
            }))),
            t
        },
        set: function(e, t, n) {
            var r, i = this.cache(e);
            if ("string" == typeof t)
                i[F(t)] = n;
            else
                for (r in t)
                    i[F(r)] = t[r];
            return i
        },
        get: function(e, t) {
            return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][F(t)]
        },
        access: function(e, t, n) {
            return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n),
            void 0 !== n ? n : t)
        },
        remove: function(e, t) {
            var n, r = e[this.expando];
            if (void 0 !== r) {
                if (void 0 !== t) {
                    n = (t = Array.isArray(t) ? t.map(F) : (t = F(t))in r ? [t] : t.match(D) || []).length;
                    while (n--)
                        delete r[t[n]]
                }
                (void 0 === t || ce.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
            }
        },
        hasData: function(e) {
            var t = e[this.expando];
            return void 0 !== t && !ce.isEmptyObject(t)
        }
    };
    var _ = new B
      , z = new B
      , X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
      , U = /[A-Z]/g;
    function V(e, t, n) {
        var r, i;
        if (void 0 === n && 1 === e.nodeType)
            if (r = "data-" + t.replace(U, "-$&").toLowerCase(),
            "string" == typeof (n = e.getAttribute(r))) {
                try {
                    n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : X.test(i) ? JSON.parse(i) : i)
                } catch (e) {}
                z.set(e, t, n)
            } else
                n = void 0;
        return n
    }
    ce.extend({
        hasData: function(e) {
            return z.hasData(e) || _.hasData(e)
        },
        data: function(e, t, n) {
            return z.access(e, t, n)
        },
        removeData: function(e, t) {
            z.remove(e, t)
        },
        _data: function(e, t, n) {
            return _.access(e, t, n)
        },
        _removeData: function(e, t) {
            _.remove(e, t)
        }
    }),
    ce.fn.extend({
        data: function(n, e) {
            var t, r, i, o = this[0], a = o && o.attributes;
            if (void 0 === n) {
                if (this.length && (i = z.get(o),
                1 === o.nodeType && !_.get(o, "hasDataAttrs"))) {
                    t = a.length;
                    while (t--)
                        a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = F(r.slice(5)),
                        V(o, r, i[r]));
                    _.set(o, "hasDataAttrs", !0)
                }
                return i
            }
            return "object" == typeof n ? this.each(function() {
                z.set(this, n)
            }) : M(this, function(e) {
                var t;
                if (o && void 0 === e)
                    return void 0 !== (t = z.get(o, n)) ? t : void 0 !== (t = V(o, n)) ? t : void 0;
                this.each(function() {
                    z.set(this, n, e)
                })
            }, null, e, 1 < arguments.length, null, !0)
        },
        removeData: function(e) {
            return this.each(function() {
                z.remove(this, e)
            })
        }
    }),
    ce.extend({
        queue: function(e, t, n) {
            var r;
            if (e)
                return t = (t || "fx") + "queue",
                r = _.get(e, t),
                n && (!r || Array.isArray(n) ? r = _.access(e, t, ce.makeArray(n)) : r.push(n)),
                r || []
        },
        dequeue: function(e, t) {
            t = t || "fx";
            var n = ce.queue(e, t)
              , r = n.length
              , i = n.shift()
              , o = ce._queueHooks(e, t);
            "inprogress" === i && (i = n.shift(),
            r--),
            i && ("fx" === t && n.unshift("inprogress"),
            delete o.stop,
            i.call(e, function() {
                ce.dequeue(e, t)
            }, o)),
            !r && o && o.empty.fire()
        },
        _queueHooks: function(e, t) {
            var n = t + "queueHooks";
            return _.get(e, n) || _.access(e, n, {
                empty: ce.Callbacks("once memory").add(function() {
                    _.remove(e, [t + "queue", n])
                })
            })
        }
    }),
    ce.fn.extend({
        queue: function(t, n) {
            var e = 2;
            return "string" != typeof t && (n = t,
            t = "fx",
            e--),
            arguments.length < e ? ce.queue(this[0], t) : void 0 === n ? this : this.each(function() {
                var e = ce.queue(this, t, n);
                ce._queueHooks(this, t),
                "fx" === t && "inprogress" !== e[0] && ce.dequeue(this, t)
            })
        },
        dequeue: function(e) {
            return this.each(function() {
                ce.dequeue(this, e)
            })
        },
        clearQueue: function(e) {
            return this.queue(e || "fx", [])
        },
        promise: function(e, t) {
            var n, r = 1, i = ce.Deferred(), o = this, a = this.length, s = function() {
                --r || i.resolveWith(o, [o])
            };
            "string" != typeof e && (t = e,
            e = void 0),
            e = e || "fx";
            while (a--)
                (n = _.get(o[a], e + "queueHooks")) && n.empty && (r++,
                n.empty.add(s));
            return s(),
            i.promise(t)
        }
    });
    var G = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source
      , Y = new RegExp("^(?:([+-])=|)(" + G + ")([a-z%]*)$","i")
      , Q = ["Top", "Right", "Bottom", "Left"]
      , J = C.documentElement
      , K = function(e) {
        return ce.contains(e.ownerDocument, e)
    }
      , Z = {
        composed: !0
    };
    J.getRootNode && (K = function(e) {
        return ce.contains(e.ownerDocument, e) || e.getRootNode(Z) === e.ownerDocument
    }
    );
    var ee = function(e, t) {
        return "none" === (e = t || e).style.display || "" === e.style.display && K(e) && "none" === ce.css(e, "display")
    };
    function te(e, t, n, r) {
        var i, o, a = 20, s = r ? function() {
            return r.cur()
        }
        : function() {
            return ce.css(e, t, "")
        }
        , u = s(), l = n && n[3] || (ce.cssNumber[t] ? "" : "px"), c = e.nodeType && (ce.cssNumber[t] || "px" !== l && +u) && Y.exec(ce.css(e, t));
        if (c && c[3] !== l) {
            u /= 2,
            l = l || c[3],
            c = +u || 1;
            while (a--)
                ce.style(e, t, c + l),
                (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0),
                c /= o;
            c *= 2,
            ce.style(e, t, c + l),
            n = n || []
        }
        return n && (c = +c || +u || 0,
        i = n[1] ? c + (n[1] + 1) * n[2] : +n[2],
        r && (r.unit = l,
        r.start = c,
        r.end = i)),
        i
    }
    var ne = {};
    function re(e, t) {
        for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)
            (r = e[c]).style && (n = r.style.display,
            t ? ("none" === n && (l[c] = _.get(r, "display") || null,
            l[c] || (r.style.display = "")),
            "" === r.style.display && ee(r) && (l[c] = (u = a = o = void 0,
            a = (i = r).ownerDocument,
            s = i.nodeName,
            (u = ne[s]) || (o = a.body.appendChild(a.createElement(s)),
            u = ce.css(o, "display"),
            o.parentNode.removeChild(o),
            "none" === u && (u = "block"),
            ne[s] = u)))) : "none" !== n && (l[c] = "none",
            _.set(r, "display", n)));
        for (c = 0; c < f; c++)
            null != l[c] && (e[c].style.display = l[c]);
        return e
    }
    ce.fn.extend({
        show: function() {
            return re(this, !0)
        },
        hide: function() {
            return re(this)
        },
        toggle: function(e) {
            return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
                ee(this) ? ce(this).show() : ce(this).hide()
            })
        }
    });
    var xe, be, we = /^(?:checkbox|radio)$/i, Te = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, Ce = /^$|^module$|\/(?:java|ecma)script/i;
    xe = C.createDocumentFragment().appendChild(C.createElement("div")),
    (be = C.createElement("input")).setAttribute("type", "radio"),
    be.setAttribute("checked", "checked"),
    be.setAttribute("name", "t"),
    xe.appendChild(be),
    le.checkClone = xe.cloneNode(!0).cloneNode(!0).lastChild.checked,
    xe.innerHTML = "<textarea>x</textarea>",
    le.noCloneChecked = !!xe.cloneNode(!0).lastChild.defaultValue,
    xe.innerHTML = "<option></option>",
    le.option = !!xe.lastChild;
    var ke = {
        thead: [1, "<table>", "</table>"],
        col: [2, "<table><colgroup>", "</colgroup></table>"],
        tr: [2, "<table><tbody>", "</tbody></table>"],
        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
        _default: [0, "", ""]
    };
    function Se(e, t) {
        var n;
        return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [],
        void 0 === t || t && fe(e, t) ? ce.merge([e], n) : n
    }
    function Ee(e, t) {
        for (var n = 0, r = e.length; n < r; n++)
            _.set(e[n], "globalEval", !t || _.get(t[n], "globalEval"))
    }
    ke.tbody = ke.tfoot = ke.colgroup = ke.caption = ke.thead,
    ke.th = ke.td,
    le.option || (ke.optgroup = ke.option = [1, "<select multiple='multiple'>", "</select>"]);
    var je = /<|&#?\w+;/;
    function Ae(e, t, n, r, i) {
        for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)
            if ((o = e[d]) || 0 === o)
                if ("object" === x(o))
                    ce.merge(p, o.nodeType ? [o] : o);
                else if (je.test(o)) {
                    a = a || f.appendChild(t.createElement("div")),
                    s = (Te.exec(o) || ["", ""])[1].toLowerCase(),
                    u = ke[s] || ke._default,
                    a.innerHTML = u[1] + ce.htmlPrefilter(o) + u[2],
                    c = u[0];
                    while (c--)
                        a = a.lastChild;
                    ce.merge(p, a.childNodes),
                    (a = f.firstChild).textContent = ""
                } else
                    p.push(t.createTextNode(o));
        f.textContent = "",
        d = 0;
        while (o = p[d++])
            if (r && -1 < ce.inArray(o, r))
                i && i.push(o);
            else if (l = K(o),
            a = Se(f.appendChild(o), "script"),
            l && Ee(a),
            n) {
                c = 0;
                while (o = a[c++])
                    Ce.test(o.type || "") && n.push(o)
            }
        return f
    }
    var De = /^([^.]*)(?:\.(.+)|)/;
    function Ne() {
        return !0
    }
    function qe() {
        return !1
    }
    function Le(e, t, n, r, i, o) {
        var a, s;
        if ("object" == typeof t) {
            for (s in "string" != typeof n && (r = r || n,
            n = void 0),
            t)
                Le(e, s, n, r, t[s], o);
            return e
        }
        if (null == r && null == i ? (i = n,
        r = n = void 0) : null == i && ("string" == typeof n ? (i = r,
        r = void 0) : (i = r,
        r = n,
        n = void 0)),
        !1 === i)
            i = qe;
        else if (!i)
            return e;
        return 1 === o && (a = i,
        (i = function(e) {
            return ce().off(e),
            a.apply(this, arguments)
        }
        ).guid = a.guid || (a.guid = ce.guid++)),
        e.each(function() {
            ce.event.add(this, t, i, r, n)
        })
    }
    function He(e, r, t) {
        t ? (_.set(e, r, !1),
        ce.event.add(e, r, {
            namespace: !1,
            handler: function(e) {
                var t, n = _.get(this, r);
                if (1 & e.isTrigger && this[r]) {
                    if (n)
                        (ce.event.special[r] || {}).delegateType && e.stopPropagation();
                    else if (n = ae.call(arguments),
                    _.set(this, r, n),
                    this[r](),
                    t = _.get(this, r),
                    _.set(this, r, !1),
                    n !== t)
                        return e.stopImmediatePropagation(),
                        e.preventDefault(),
                        t
                } else
                    n && (_.set(this, r, ce.event.trigger(n[0], n.slice(1), this)),
                    e.stopPropagation(),
                    e.isImmediatePropagationStopped = Ne)
            }
        })) : void 0 === _.get(e, r) && ce.event.add(e, r, Ne)
    }
    ce.event = {
        global: {},
        add: function(t, e, n, r, i) {
            var o, a, s, u, l, c, f, p, d, h, g, v = _.get(t);
            if ($(t)) {
                n.handler && (n = (o = n).handler,
                i = o.selector),
                i && ce.find.matchesSelector(J, i),
                n.guid || (n.guid = ce.guid++),
                (u = v.events) || (u = v.events = Object.create(null)),
                (a = v.handle) || (a = v.handle = function(e) {
                    return "undefined" != typeof ce && ce.event.triggered !== e.type ? ce.event.dispatch.apply(t, arguments) : void 0
                }
                ),
                l = (e = (e || "").match(D) || [""]).length;
                while (l--)
                    d = g = (s = De.exec(e[l]) || [])[1],
                    h = (s[2] || "").split(".").sort(),
                    d && (f = ce.event.special[d] || {},
                    d = (i ? f.delegateType : f.bindType) || d,
                    f = ce.event.special[d] || {},
                    c = ce.extend({
                        type: d,
                        origType: g,
                        data: r,
                        handler: n,
                        guid: n.guid,
                        selector: i,
                        needsContext: i && ce.expr.match.needsContext.test(i),
                        namespace: h.join(".")
                    }, o),
                    (p = u[d]) || ((p = u[d] = []).delegateCount = 0,
                    f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)),
                    f.add && (f.add.call(t, c),
                    c.handler.guid || (c.handler.guid = n.guid)),
                    i ? p.splice(p.delegateCount++, 0, c) : p.push(c),
                    ce.event.global[d] = !0)
            }
        },
        remove: function(e, t, n, r, i) {
            var o, a, s, u, l, c, f, p, d, h, g, v = _.hasData(e) && _.get(e);
            if (v && (u = v.events)) {
                l = (t = (t || "").match(D) || [""]).length;
                while (l--)
                    if (d = g = (s = De.exec(t[l]) || [])[1],
                    h = (s[2] || "").split(".").sort(),
                    d) {
                        f = ce.event.special[d] || {},
                        p = u[d = (r ? f.delegateType : f.bindType) || d] || [],
                        s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                        a = o = p.length;
                        while (o--)
                            c = p[o],
                            !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1),
                            c.selector && p.delegateCount--,
                            f.remove && f.remove.call(e, c));
                        a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || ce.removeEvent(e, d, v.handle),
                        delete u[d])
                    } else
                        for (d in u)
                            ce.event.remove(e, d + t[l], n, r, !0);
                ce.isEmptyObject(u) && _.remove(e, "handle events")
            }
        },
        dispatch: function(e) {
            var t, n, r, i, o, a, s = new Array(arguments.length), u = ce.event.fix(e), l = (_.get(this, "events") || Object.create(null))[u.type] || [], c = ce.event.special[u.type] || {};
            for (s[0] = u,
            t = 1; t < arguments.length; t++)
                s[t] = arguments[t];
            if (u.delegateTarget = this,
            !c.preDispatch || !1 !== c.preDispatch.call(this, u)) {
                a = ce.event.handlers.call(this, u, l),
                t = 0;
                while ((i = a[t++]) && !u.isPropagationStopped()) {
                    u.currentTarget = i.elem,
                    n = 0;
                    while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped())
                        u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o,
                        u.data = o.data,
                        void 0 !== (r = ((ce.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(),
                        u.stopPropagation()))
                }
                return c.postDispatch && c.postDispatch.call(this, u),
                u.result
            }
        },
        handlers: function(e, t) {
            var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target;
            if (u && l.nodeType && !("click" === e.type && 1 <= e.button))
                for (; l !== this; l = l.parentNode || this)
                    if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
                        for (o = [],
                        a = {},
                        n = 0; n < u; n++)
                            void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < ce(i, this).index(l) : ce.find(i, this, null, [l]).length),
                            a[i] && o.push(r);
                        o.length && s.push({
                            elem: l,
                            handlers: o
                        })
                    }
            return l = this,
            u < t.length && s.push({
                elem: l,
                handlers: t.slice(u)
            }),
            s
        },
        addProp: function(t, e) {
            Object.defineProperty(ce.Event.prototype, t, {
                enumerable: !0,
                configurable: !0,
                get: v(e) ? function() {
                    if (this.originalEvent)
                        return e(this.originalEvent)
                }
                : function() {
                    if (this.originalEvent)
                        return this.originalEvent[t]
                }
                ,
                set: function(e) {
                    Object.defineProperty(this, t, {
                        enumerable: !0,
                        configurable: !0,
                        writable: !0,
                        value: e
                    })
                }
            })
        },
        fix: function(e) {
            return e[ce.expando] ? e : new ce.Event(e)
        },
        special: {
            load: {
                noBubble: !0
            },
            click: {
                setup: function(e) {
                    var t = this || e;
                    return we.test(t.type) && t.click && fe(t, "input") && He(t, "click", !0),
                    !1
                },
                trigger: function(e) {
                    var t = this || e;
                    return we.test(t.type) && t.click && fe(t, "input") && He(t, "click"),
                    !0
                },
                _default: function(e) {
                    var t = e.target;
                    return we.test(t.type) && t.click && fe(t, "input") && _.get(t, "click") || fe(t, "a")
                }
            },
            beforeunload: {
                postDispatch: function(e) {
                    void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                }
            }
        }
    },
    ce.removeEvent = function(e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n)
    }
    ,
    ce.Event = function(e, t) {
        if (!(this instanceof ce.Event))
            return new ce.Event(e,t);
        e && e.type ? (this.originalEvent = e,
        this.type = e.type,
        this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ne : qe,
        this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target,
        this.currentTarget = e.currentTarget,
        this.relatedTarget = e.relatedTarget) : this.type = e,
        t && ce.extend(this, t),
        this.timeStamp = e && e.timeStamp || Date.now(),
        this[ce.expando] = !0
    }
    ,
    ce.Event.prototype = {
        constructor: ce.Event,
        isDefaultPrevented: qe,
        isPropagationStopped: qe,
        isImmediatePropagationStopped: qe,
        isSimulated: !1,
        preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = Ne,
            e && !this.isSimulated && e.preventDefault()
        },
        stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = Ne,
            e && !this.isSimulated && e.stopPropagation()
        },
        stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = Ne,
            e && !this.isSimulated && e.stopImmediatePropagation(),
            this.stopPropagation()
        }
    },
    ce.each({
        altKey: !0,
        bubbles: !0,
        cancelable: !0,
        changedTouches: !0,
        ctrlKey: !0,
        detail: !0,
        eventPhase: !0,
        metaKey: !0,
        pageX: !0,
        pageY: !0,
        shiftKey: !0,
        view: !0,
        "char": !0,
        code: !0,
        charCode: !0,
        key: !0,
        keyCode: !0,
        button: !0,
        buttons: !0,
        clientX: !0,
        clientY: !0,
        offsetX: !0,
        offsetY: !0,
        pointerId: !0,
        pointerType: !0,
        screenX: !0,
        screenY: !0,
        targetTouches: !0,
        toElement: !0,
        touches: !0,
        which: !0
    }, ce.event.addProp),
    ce.each({
        focus: "focusin",
        blur: "focusout"
    }, function(r, i) {
        function o(e) {
            if (C.documentMode) {
                var t = _.get(this, "handle")
                  , n = ce.event.fix(e);
                n.type = "focusin" === e.type ? "focus" : "blur",
                n.isSimulated = !0,
                t(e),
                n.target === n.currentTarget && t(n)
            } else
                ce.event.simulate(i, e.target, ce.event.fix(e))
        }
        ce.event.special[r] = {
            setup: function() {
                var e;
                if (He(this, r, !0),
                !C.documentMode)
                    return !1;
                (e = _.get(this, i)) || this.addEventListener(i, o),
                _.set(this, i, (e || 0) + 1)
            },
            trigger: function() {
                return He(this, r),
                !0
            },
            teardown: function() {
                var e;
                if (!C.documentMode)
                    return !1;
                (e = _.get(this, i) - 1) ? _.set(this, i, e) : (this.removeEventListener(i, o),
                _.remove(this, i))
            },
            _default: function(e) {
                return _.get(e.target, r)
            },
            delegateType: i
        },
        ce.event.special[i] = {
            setup: function() {
                var e = this.ownerDocument || this.document || this
                  , t = C.documentMode ? this : e
                  , n = _.get(t, i);
                n || (C.documentMode ? this.addEventListener(i, o) : e.addEventListener(r, o, !0)),
                _.set(t, i, (n || 0) + 1)
            },
            teardown: function() {
                var e = this.ownerDocument || this.document || this
                  , t = C.documentMode ? this : e
                  , n = _.get(t, i) - 1;
                n ? _.set(t, i, n) : (C.documentMode ? this.removeEventListener(i, o) : e.removeEventListener(r, o, !0),
                _.remove(t, i))
            }
        }
    }),
    ce.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout",
        pointerenter: "pointerover",
        pointerleave: "pointerout"
    }, function(e, i) {
        ce.event.special[e] = {
            delegateType: i,
            bindType: i,
            handle: function(e) {
                var t, n = e.relatedTarget, r = e.handleObj;
                return n && (n === this || ce.contains(this, n)) || (e.type = r.origType,
                t = r.handler.apply(this, arguments),
                e.type = i),
                t
            }
        }
    }),
    ce.fn.extend({
        on: function(e, t, n, r) {
            return Le(this, e, t, n, r)
        },
        one: function(e, t, n, r) {
            return Le(this, e, t, n, r, 1)
        },
        off: function(e, t, n) {
            var r, i;
            if (e && e.preventDefault && e.handleObj)
                return r = e.handleObj,
                ce(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler),
                this;
            if ("object" == typeof e) {
                for (i in e)
                    this.off(i, t, e[i]);
                return this
            }
            return !1 !== t && "function" != typeof t || (n = t,
            t = void 0),
            !1 === n && (n = qe),
            this.each(function() {
                ce.event.remove(this, e, n, t)
            })
        }
    });
    var Oe = /<script|<style|<link/i
      , Pe = /checked\s*(?:[^=]|=\s*.checked.)/i
      , Me = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
    function Re(e, t) {
        return fe(e, "table") && fe(11 !== t.nodeType ? t : t.firstChild, "tr") && ce(e).children("tbody")[0] || e
    }
    function Ie(e) {
        return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
        e
    }
    function We(e) {
        return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"),
        e
    }
    function Fe(e, t) {
        var n, r, i, o, a, s;
        if (1 === t.nodeType) {
            if (_.hasData(e) && (s = _.get(e).events))
                for (i in _.remove(t, "handle events"),
                s)
                    for (n = 0,
                    r = s[i].length; n < r; n++)
                        ce.event.add(t, i, s[i][n]);
            z.hasData(e) && (o = z.access(e),
            a = ce.extend({}, o),
            z.set(t, a))
        }
    }
    function $e(n, r, i, o) {
        r = g(r);
        var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = v(d);
        if (h || 1 < f && "string" == typeof d && !le.checkClone && Pe.test(d))
            return n.each(function(e) {
                var t = n.eq(e);
                h && (r[0] = d.call(this, e, t.html())),
                $e(t, r, i, o)
            });
        if (f && (t = (e = Ae(r, n[0].ownerDocument, !1, n, o)).firstChild,
        1 === e.childNodes.length && (e = t),
        t || o)) {
            for (s = (a = ce.map(Se(e, "script"), Ie)).length; c < f; c++)
                u = e,
                c !== p && (u = ce.clone(u, !0, !0),
                s && ce.merge(a, Se(u, "script"))),
                i.call(n[c], u, c);
            if (s)
                for (l = a[a.length - 1].ownerDocument,
                ce.map(a, We),
                c = 0; c < s; c++)
                    u = a[c],
                    Ce.test(u.type || "") && !_.access(u, "globalEval") && ce.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? ce._evalUrl && !u.noModule && ce._evalUrl(u.src, {
                        nonce: u.nonce || u.getAttribute("nonce")
                    }, l) : m(u.textContent.replace(Me, ""), u, l))
        }
        return n
    }
    function Be(e, t, n) {
        for (var r, i = t ? ce.filter(t, e) : e, o = 0; null != (r = i[o]); o++)
            n || 1 !== r.nodeType || ce.cleanData(Se(r)),
            r.parentNode && (n && K(r) && Ee(Se(r, "script")),
            r.parentNode.removeChild(r));
        return e
    }
    ce.extend({
        htmlPrefilter: function(e) {
            return e
        },
        clone: function(e, t, n) {
            var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = K(e);
            if (!(le.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || ce.isXMLDoc(e)))
                for (a = Se(c),
                r = 0,
                i = (o = Se(e)).length; r < i; r++)
                    s = o[r],
                    u = a[r],
                    void 0,
                    "input" === (l = u.nodeName.toLowerCase()) && we.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue);
            if (t)
                if (n)
                    for (o = o || Se(e),
                    a = a || Se(c),
                    r = 0,
                    i = o.length; r < i; r++)
                        Fe(o[r], a[r]);
                else
                    Fe(e, c);
            return 0 < (a = Se(c, "script")).length && Ee(a, !f && Se(e, "script")),
            c
        },
        cleanData: function(e) {
            for (var t, n, r, i = ce.event.special, o = 0; void 0 !== (n = e[o]); o++)
                if ($(n)) {
                    if (t = n[_.expando]) {
                        if (t.events)
                            for (r in t.events)
                                i[r] ? ce.event.remove(n, r) : ce.removeEvent(n, r, t.handle);
                        n[_.expando] = void 0
                    }
                    n[z.expando] && (n[z.expando] = void 0)
                }
        }
    }),
    ce.fn.extend({
        detach: function(e) {
            return Be(this, e, !0)
        },
        remove: function(e) {
            return Be(this, e)
        },
        text: function(e) {
            return M(this, function(e) {
                return void 0 === e ? ce.text(this) : this.empty().each(function() {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                })
            }, null, e, arguments.length)
        },
        append: function() {
            return $e(this, arguments, function(e) {
                1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Re(this, e).appendChild(e)
            })
        },
        prepend: function() {
            return $e(this, arguments, function(e) {
                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                    var t = Re(this, e);
                    t.insertBefore(e, t.firstChild)
                }
            })
        },
        before: function() {
            return $e(this, arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this)
            })
        },
        after: function() {
            return $e(this, arguments, function(e) {
                this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
            })
        },
        empty: function() {
            for (var e, t = 0; null != (e = this[t]); t++)
                1 === e.nodeType && (ce.cleanData(Se(e, !1)),
                e.textContent = "");
            return this
        },
        clone: function(e, t) {
            return e = null != e && e,
            t = null == t ? e : t,
            this.map(function() {
                return ce.clone(this, e, t)
            })
        },
        html: function(e) {
            return M(this, function(e) {
                var t = this[0] || {}
                  , n = 0
                  , r = this.length;
                if (void 0 === e && 1 === t.nodeType)
                    return t.innerHTML;
                if ("string" == typeof e && !Oe.test(e) && !ke[(Te.exec(e) || ["", ""])[1].toLowerCase()]) {
                    e = ce.htmlPrefilter(e);
                    try {
                        for (; n < r; n++)
                            1 === (t = this[n] || {}).nodeType && (ce.cleanData(Se(t, !1)),
                            t.innerHTML = e);
                        t = 0
                    } catch (e) {}
                }
                t && this.empty().append(e)
            }, null, e, arguments.length)
        },
        replaceWith: function() {
            var n = [];
            return $e(this, arguments, function(e) {
                var t = this.parentNode;
                ce.inArray(this, n) < 0 && (ce.cleanData(Se(this)),
                t && t.replaceChild(e, this))
            }, n)
        }
    }),
    ce.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function(e, a) {
        ce.fn[e] = function(e) {
            for (var t, n = [], r = ce(e), i = r.length - 1, o = 0; o <= i; o++)
                t = o === i ? this : this.clone(!0),
                ce(r[o])[a](t),
                s.apply(n, t.get());
            return this.pushStack(n)
        }
    });
    var _e = new RegExp("^(" + G + ")(?!px)[a-z%]+$","i")
      , ze = /^--/
      , Xe = function(e) {
        var t = e.ownerDocument.defaultView;
        return t && t.opener || (t = ie),
        t.getComputedStyle(e)
    }
      , Ue = function(e, t, n) {
        var r, i, o = {};
        for (i in t)
            o[i] = e.style[i],
            e.style[i] = t[i];
        for (i in r = n.call(e),
        t)
            e.style[i] = o[i];
        return r
    }
      , Ve = new RegExp(Q.join("|"),"i");
    function Ge(e, t, n) {
        var r, i, o, a, s = ze.test(t), u = e.style;
        return (n = n || Xe(e)) && (a = n.getPropertyValue(t) || n[t],
        s && a && (a = a.replace(ve, "$1") || void 0),
        "" !== a || K(e) || (a = ce.style(e, t)),
        !le.pixelBoxStyles() && _e.test(a) && Ve.test(t) && (r = u.width,
        i = u.minWidth,
        o = u.maxWidth,
        u.minWidth = u.maxWidth = u.width = a,
        a = n.width,
        u.width = r,
        u.minWidth = i,
        u.maxWidth = o)),
        void 0 !== a ? a + "" : a
    }
    function Ye(e, t) {
        return {
            get: function() {
                if (!e())
                    return (this.get = t).apply(this, arguments);
                delete this.get
            }
        }
    }
    !function() {
        function e() {
            if (l) {
                u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",
                l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",
                J.appendChild(u).appendChild(l);
                var e = ie.getComputedStyle(l);
                n = "1%" !== e.top,
                s = 12 === t(e.marginLeft),
                l.style.right = "60%",
                o = 36 === t(e.right),
                r = 36 === t(e.width),
                l.style.position = "absolute",
                i = 12 === t(l.offsetWidth / 3),
                J.removeChild(u),
                l = null
            }
        }
        function t(e) {
            return Math.round(parseFloat(e))
        }
        var n, r, i, o, a, s, u = C.createElement("div"), l = C.createElement("div");
        l.style && (l.style.backgroundClip = "content-box",
        l.cloneNode(!0).style.backgroundClip = "",
        le.clearCloneStyle = "content-box" === l.style.backgroundClip,
        ce.extend(le, {
            boxSizingReliable: function() {
                return e(),
                r
            },
            pixelBoxStyles: function() {
                return e(),
                o
            },
            pixelPosition: function() {
                return e(),
                n
            },
            reliableMarginLeft: function() {
                return e(),
                s
            },
            scrollboxSize: function() {
                return e(),
                i
            },
            reliableTrDimensions: function() {
                var e, t, n, r;
                return null == a && (e = C.createElement("table"),
                t = C.createElement("tr"),
                n = C.createElement("div"),
                e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate",
                t.style.cssText = "box-sizing:content-box;border:1px solid",
                t.style.height = "1px",
                n.style.height = "9px",
                n.style.display = "block",
                J.appendChild(e).appendChild(t).appendChild(n),
                r = ie.getComputedStyle(t),
                a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight,
                J.removeChild(e)),
                a
            }
        }))
    }();
    var Qe = ["Webkit", "Moz", "ms"]
      , Je = C.createElement("div").style
      , Ke = {};
    function Ze(e) {
        var t = ce.cssProps[e] || Ke[e];
        return t || (e in Je ? e : Ke[e] = function(e) {
            var t = e[0].toUpperCase() + e.slice(1)
              , n = Qe.length;
            while (n--)
                if ((e = Qe[n] + t)in Je)
                    return e
        }(e) || e)
    }
    var et = /^(none|table(?!-c[ea]).+)/
      , tt = {
        position: "absolute",
        visibility: "hidden",
        display: "block"
    }
      , nt = {
        letterSpacing: "0",
        fontWeight: "400"
    };
    function rt(e, t, n) {
        var r = Y.exec(t);
        return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
    }
    function it(e, t, n, r, i, o) {
        var a = "width" === t ? 1 : 0
          , s = 0
          , u = 0
          , l = 0;
        if (n === (r ? "border" : "content"))
            return 0;
        for (; a < 4; a += 2)
            "margin" === n && (l += ce.css(e, n + Q[a], !0, i)),
            r ? ("content" === n && (u -= ce.css(e, "padding" + Q[a], !0, i)),
            "margin" !== n && (u -= ce.css(e, "border" + Q[a] + "Width", !0, i))) : (u += ce.css(e, "padding" + Q[a], !0, i),
            "padding" !== n ? u += ce.css(e, "border" + Q[a] + "Width", !0, i) : s += ce.css(e, "border" + Q[a] + "Width", !0, i));
        return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0),
        u + l
    }
    function ot(e, t, n) {
        var r = Xe(e)
          , i = (!le.boxSizingReliable() || n) && "border-box" === ce.css(e, "boxSizing", !1, r)
          , o = i
          , a = Ge(e, t, r)
          , s = "offset" + t[0].toUpperCase() + t.slice(1);
        if (_e.test(a)) {
            if (!n)
                return a;
            a = "auto"
        }
        return (!le.boxSizingReliable() && i || !le.reliableTrDimensions() && fe(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === ce.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === ce.css(e, "boxSizing", !1, r),
        (o = s in e) && (a = e[s])),
        (a = parseFloat(a) || 0) + it(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
    }
    function at(e, t, n, r, i) {
        return new at.prototype.init(e,t,n,r,i)
    }
    ce.extend({
        cssHooks: {
            opacity: {
                get: function(e, t) {
                    if (t) {
                        var n = Ge(e, "opacity");
                        return "" === n ? "1" : n
                    }
                }
            }
        },
        cssNumber: {
            animationIterationCount: !0,
            aspectRatio: !0,
            borderImageSlice: !0,
            columnCount: !0,
            flexGrow: !0,
            flexShrink: !0,
            fontWeight: !0,
            gridArea: !0,
            gridColumn: !0,
            gridColumnEnd: !0,
            gridColumnStart: !0,
            gridRow: !0,
            gridRowEnd: !0,
            gridRowStart: !0,
            lineHeight: !0,
            opacity: !0,
            order: !0,
            orphans: !0,
            scale: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0,
            fillOpacity: !0,
            floodOpacity: !0,
            stopOpacity: !0,
            strokeMiterlimit: !0,
            strokeOpacity: !0
        },
        cssProps: {},
        style: function(e, t, n, r) {
            if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                var i, o, a, s = F(t), u = ze.test(t), l = e.style;
                if (u || (t = Ze(s)),
                a = ce.cssHooks[t] || ce.cssHooks[s],
                void 0 === n)
                    return a && "get"in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
                "string" === (o = typeof n) && (i = Y.exec(n)) && i[1] && (n = te(e, t, i),
                o = "number"),
                null != n && n == n && ("number" !== o || u || (n += i && i[3] || (ce.cssNumber[s] ? "" : "px")),
                le.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"),
                a && "set"in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
            }
        },
        css: function(e, t, n, r) {
            var i, o, a, s = F(t);
            return ze.test(t) || (t = Ze(s)),
            (a = ce.cssHooks[t] || ce.cssHooks[s]) && "get"in a && (i = a.get(e, !0, n)),
            void 0 === i && (i = Ge(e, t, r)),
            "normal" === i && t in nt && (i = nt[t]),
            "" === n || n ? (o = parseFloat(i),
            !0 === n || isFinite(o) ? o || 0 : i) : i
        }
    }),
    ce.each(["height", "width"], function(e, u) {
        ce.cssHooks[u] = {
            get: function(e, t, n) {
                if (t)
                    return !et.test(ce.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? ot(e, u, n) : Ue(e, tt, function() {
                        return ot(e, u, n)
                    })
            },
            set: function(e, t, n) {
                var r, i = Xe(e), o = !le.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === ce.css(e, "boxSizing", !1, i), s = n ? it(e, u, n, a, i) : 0;
                return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - it(e, u, "border", !1, i) - .5)),
                s && (r = Y.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t,
                t = ce.css(e, u)),
                rt(0, t, s)
            }
        }
    }),
    ce.cssHooks.marginLeft = Ye(le.reliableMarginLeft, function(e, t) {
        if (t)
            return (parseFloat(Ge(e, "marginLeft")) || e.getBoundingClientRect().left - Ue(e, {
                marginLeft: 0
            }, function() {
                return e.getBoundingClientRect().left
            })) + "px"
    }),
    ce.each({
        margin: "",
        padding: "",
        border: "Width"
    }, function(i, o) {
        ce.cssHooks[i + o] = {
            expand: function(e) {
                for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++)
                    n[i + Q[t] + o] = r[t] || r[t - 2] || r[0];
                return n
            }
        },
        "margin" !== i && (ce.cssHooks[i + o].set = rt)
    }),
    ce.fn.extend({
        css: function(e, t) {
            return M(this, function(e, t, n) {
                var r, i, o = {}, a = 0;
                if (Array.isArray(t)) {
                    for (r = Xe(e),
                    i = t.length; a < i; a++)
                        o[t[a]] = ce.css(e, t[a], !1, r);
                    return o
                }
                return void 0 !== n ? ce.style(e, t, n) : ce.css(e, t)
            }, e, t, 1 < arguments.length)
        }
    }),
    ((ce.Tween = at).prototype = {
        constructor: at,
        init: function(e, t, n, r, i, o) {
            this.elem = e,
            this.prop = n,
            this.easing = i || ce.easing._default,
            this.options = t,
            this.start = this.now = this.cur(),
            this.end = r,
            this.unit = o || (ce.cssNumber[n] ? "" : "px")
        },
        cur: function() {
            var e = at.propHooks[this.prop];
            return e && e.get ? e.get(this) : at.propHooks._default.get(this)
        },
        run: function(e) {
            var t, n = at.propHooks[this.prop];
            return this.options.duration ? this.pos = t = ce.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
            this.now = (this.end - this.start) * t + this.start,
            this.options.step && this.options.step.call(this.elem, this.now, this),
            n && n.set ? n.set(this) : at.propHooks._default.set(this),
            this
        }
    }).init.prototype = at.prototype,
    (at.propHooks = {
        _default: {
            get: function(e) {
                var t;
                return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = ce.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
            },
            set: function(e) {
                ce.fx.step[e.prop] ? ce.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !ce.cssHooks[e.prop] && null == e.elem.style[Ze(e.prop)] ? e.elem[e.prop] = e.now : ce.style(e.elem, e.prop, e.now + e.unit)
            }
        }
    }).scrollTop = at.propHooks.scrollLeft = {
        set: function(e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
        }
    },
    ce.easing = {
        linear: function(e) {
            return e
        },
        swing: function(e) {
            return .5 - Math.cos(e * Math.PI) / 2
        },
        _default: "swing"
    },
    ce.fx = at.prototype.init,
    ce.fx.step = {};
    var st, ut, lt, ct, ft = /^(?:toggle|show|hide)$/, pt = /queueHooks$/;
    function dt() {
        ut && (!1 === C.hidden && ie.requestAnimationFrame ? ie.requestAnimationFrame(dt) : ie.setTimeout(dt, ce.fx.interval),
        ce.fx.tick())
    }
    function ht() {
        return ie.setTimeout(function() {
            st = void 0
        }),
        st = Date.now()
    }
    function gt(e, t) {
        var n, r = 0, i = {
            height: e
        };
        for (t = t ? 1 : 0; r < 4; r += 2 - t)
            i["margin" + (n = Q[r])] = i["padding" + n] = e;
        return t && (i.opacity = i.width = e),
        i
    }
    function vt(e, t, n) {
        for (var r, i = (yt.tweeners[t] || []).concat(yt.tweeners["*"]), o = 0, a = i.length; o < a; o++)
            if (r = i[o].call(n, t, e))
                return r
    }
    function yt(o, e, t) {
        var n, a, r = 0, i = yt.prefilters.length, s = ce.Deferred().always(function() {
            delete u.elem
        }), u = function() {
            if (a)
                return !1;
            for (var e = st || ht(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++)
                l.tweens[r].run(n);
            return s.notifyWith(o, [l, n, t]),
            n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]),
            s.resolveWith(o, [l]),
            !1)
        }, l = s.promise({
            elem: o,
            props: ce.extend({}, e),
            opts: ce.extend(!0, {
                specialEasing: {},
                easing: ce.easing._default
            }, t),
            originalProperties: e,
            originalOptions: t,
            startTime: st || ht(),
            duration: t.duration,
            tweens: [],
            createTween: function(e, t) {
                var n = ce.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing);
                return l.tweens.push(n),
                n
            },
            stop: function(e) {
                var t = 0
                  , n = e ? l.tweens.length : 0;
                if (a)
                    return this;
                for (a = !0; t < n; t++)
                    l.tweens[t].run(1);
                return e ? (s.notifyWith(o, [l, 1, 0]),
                s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]),
                this
            }
        }), c = l.props;
        for (!function(e, t) {
            var n, r, i, o, a;
            for (n in e)
                if (i = t[r = F(n)],
                o = e[n],
                Array.isArray(o) && (i = o[1],
                o = e[n] = o[0]),
                n !== r && (e[r] = o,
                delete e[n]),
                (a = ce.cssHooks[r]) && "expand"in a)
                    for (n in o = a.expand(o),
                    delete e[r],
                    o)
                        n in e || (e[n] = o[n],
                        t[n] = i);
                else
                    t[r] = i
        }(c, l.opts.specialEasing); r < i; r++)
            if (n = yt.prefilters[r].call(l, o, c, l.opts))
                return v(n.stop) && (ce._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)),
                n;
        return ce.map(c, vt, l),
        v(l.opts.start) && l.opts.start.call(o, l),
        l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always),
        ce.fx.timer(ce.extend(u, {
            elem: o,
            anim: l,
            queue: l.opts.queue
        })),
        l
    }
    ce.Animation = ce.extend(yt, {
        tweeners: {
            "*": [function(e, t) {
                var n = this.createTween(e, t);
                return te(n.elem, e, Y.exec(t), n),
                n
            }
            ]
        },
        tweener: function(e, t) {
            v(e) ? (t = e,
            e = ["*"]) : e = e.match(D);
            for (var n, r = 0, i = e.length; r < i; r++)
                n = e[r],
                yt.tweeners[n] = yt.tweeners[n] || [],
                yt.tweeners[n].unshift(t)
        },
        prefilters: [function(e, t, n) {
            var r, i, o, a, s, u, l, c, f = "width"in t || "height"in t, p = this, d = {}, h = e.style, g = e.nodeType && ee(e), v = _.get(e, "fxshow");
            for (r in n.queue || (null == (a = ce._queueHooks(e, "fx")).unqueued && (a.unqueued = 0,
            s = a.empty.fire,
            a.empty.fire = function() {
                a.unqueued || s()
            }
            ),
            a.unqueued++,
            p.always(function() {
                p.always(function() {
                    a.unqueued--,
                    ce.queue(e, "fx").length || a.empty.fire()
                })
            })),
            t)
                if (i = t[r],
                ft.test(i)) {
                    if (delete t[r],
                    o = o || "toggle" === i,
                    i === (g ? "hide" : "show")) {
                        if ("show" !== i || !v || void 0 === v[r])
                            continue;
                        g = !0
                    }
                    d[r] = v && v[r] || ce.style(e, r)
                }
            if ((u = !ce.isEmptyObject(t)) || !ce.isEmptyObject(d))
                for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY],
                null == (l = v && v.display) && (l = _.get(e, "display")),
                "none" === (c = ce.css(e, "display")) && (l ? c = l : (re([e], !0),
                l = e.style.display || l,
                c = ce.css(e, "display"),
                re([e]))),
                ("inline" === c || "inline-block" === c && null != l) && "none" === ce.css(e, "float") && (u || (p.done(function() {
                    h.display = l
                }),
                null == l && (c = h.display,
                l = "none" === c ? "" : c)),
                h.display = "inline-block")),
                n.overflow && (h.overflow = "hidden",
                p.always(function() {
                    h.overflow = n.overflow[0],
                    h.overflowX = n.overflow[1],
                    h.overflowY = n.overflow[2]
                })),
                u = !1,
                d)
                    u || (v ? "hidden"in v && (g = v.hidden) : v = _.access(e, "fxshow", {
                        display: l
                    }),
                    o && (v.hidden = !g),
                    g && re([e], !0),
                    p.done(function() {
                        for (r in g || re([e]),
                        _.remove(e, "fxshow"),
                        d)
                            ce.style(e, r, d[r])
                    })),
                    u = vt(g ? v[r] : 0, r, p),
                    r in v || (v[r] = u.start,
                    g && (u.end = u.start,
                    u.start = 0))
        }
        ],
        prefilter: function(e, t) {
            t ? yt.prefilters.unshift(e) : yt.prefilters.push(e)
        }
    }),
    ce.speed = function(e, t, n) {
        var r = e && "object" == typeof e ? ce.extend({}, e) : {
            complete: n || !n && t || v(e) && e,
            duration: e,
            easing: n && t || t && !v(t) && t
        };
        return ce.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in ce.fx.speeds ? r.duration = ce.fx.speeds[r.duration] : r.duration = ce.fx.speeds._default),
        null != r.queue && !0 !== r.queue || (r.queue = "fx"),
        r.old = r.complete,
        r.complete = function() {
            v(r.old) && r.old.call(this),
            r.queue && ce.dequeue(this, r.queue)
        }
        ,
        r
    }
    ,
    ce.fn.extend({
        fadeTo: function(e, t, n, r) {
            return this.filter(ee).css("opacity", 0).show().end().animate({
                opacity: t
            }, e, n, r)
        },
        animate: function(t, e, n, r) {
            var i = ce.isEmptyObject(t)
              , o = ce.speed(e, n, r)
              , a = function() {
                var e = yt(this, ce.extend({}, t), o);
                (i || _.get(this, "finish")) && e.stop(!0)
            };
            return a.finish = a,
            i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
        },
        stop: function(i, e, o) {
            var a = function(e) {
                var t = e.stop;
                delete e.stop,
                t(o)
            };
            return "string" != typeof i && (o = e,
            e = i,
            i = void 0),
            e && this.queue(i || "fx", []),
            this.each(function() {
                var e = !0
                  , t = null != i && i + "queueHooks"
                  , n = ce.timers
                  , r = _.get(this);
                if (t)
                    r[t] && r[t].stop && a(r[t]);
                else
                    for (t in r)
                        r[t] && r[t].stop && pt.test(t) && a(r[t]);
                for (t = n.length; t--; )
                    n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o),
                    e = !1,
                    n.splice(t, 1));
                !e && o || ce.dequeue(this, i)
            })
        },
        finish: function(a) {
            return !1 !== a && (a = a || "fx"),
            this.each(function() {
                var e, t = _.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = ce.timers, o = n ? n.length : 0;
                for (t.finish = !0,
                ce.queue(this, a, []),
                r && r.stop && r.stop.call(this, !0),
                e = i.length; e--; )
                    i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0),
                    i.splice(e, 1));
                for (e = 0; e < o; e++)
                    n[e] && n[e].finish && n[e].finish.call(this);
                delete t.finish
            })
        }
    }),
    ce.each(["toggle", "show", "hide"], function(e, r) {
        var i = ce.fn[r];
        ce.fn[r] = function(e, t, n) {
            return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(gt(r, !0), e, t, n)
        }
    }),
    ce.each({
        slideDown: gt("show"),
        slideUp: gt("hide"),
        slideToggle: gt("toggle"),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        },
        fadeToggle: {
            opacity: "toggle"
        }
    }, function(e, r) {
        ce.fn[e] = function(e, t, n) {
            return this.animate(r, e, t, n)
        }
    }),
    ce.timers = [],
    ce.fx.tick = function() {
        var e, t = 0, n = ce.timers;
        for (st = Date.now(); t < n.length; t++)
            (e = n[t])() || n[t] !== e || n.splice(t--, 1);
        n.length || ce.fx.stop(),
        st = void 0
    }
    ,
    ce.fx.timer = function(e) {
        ce.timers.push(e),
        ce.fx.start()
    }
    ,
    ce.fx.interval = 13,
    ce.fx.start = function() {
        ut || (ut = !0,
        dt())
    }
    ,
    ce.fx.stop = function() {
        ut = null
    }
    ,
    ce.fx.speeds = {
        slow: 600,
        fast: 200,
        _default: 400
    },
    ce.fn.delay = function(r, e) {
        return r = ce.fx && ce.fx.speeds[r] || r,
        e = e || "fx",
        this.queue(e, function(e, t) {
            var n = ie.setTimeout(e, r);
            t.stop = function() {
                ie.clearTimeout(n)
            }
        })
    }
    ,
    lt = C.createElement("input"),
    ct = C.createElement("select").appendChild(C.createElement("option")),
    lt.type = "checkbox",
    le.checkOn = "" !== lt.value,
    le.optSelected = ct.selected,
    (lt = C.createElement("input")).value = "t",
    lt.type = "radio",
    le.radioValue = "t" === lt.value;
    var mt, xt = ce.expr.attrHandle;
    ce.fn.extend({
        attr: function(e, t) {
            return M(this, ce.attr, e, t, 1 < arguments.length)
        },
        removeAttr: function(e) {
            return this.each(function() {
                ce.removeAttr(this, e)
            })
        }
    }),
    ce.extend({
        attr: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o)
                return "undefined" == typeof e.getAttribute ? ce.prop(e, t, n) : (1 === o && ce.isXMLDoc(e) || (i = ce.attrHooks[t.toLowerCase()] || (ce.expr.match.bool.test(t) ? mt : void 0)),
                void 0 !== n ? null === n ? void ce.removeAttr(e, t) : i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""),
                n) : i && "get"in i && null !== (r = i.get(e, t)) ? r : null == (r = ce.find.attr(e, t)) ? void 0 : r)
        },
        attrHooks: {
            type: {
                set: function(e, t) {
                    if (!le.radioValue && "radio" === t && fe(e, "input")) {
                        var n = e.value;
                        return e.setAttribute("type", t),
                        n && (e.value = n),
                        t
                    }
                }
            }
        },
        removeAttr: function(e, t) {
            var n, r = 0, i = t && t.match(D);
            if (i && 1 === e.nodeType)
                while (n = i[r++])
                    e.removeAttribute(n)
        }
    }),
    mt = {
        set: function(e, t, n) {
            return !1 === t ? ce.removeAttr(e, n) : e.setAttribute(n, n),
            n
        }
    },
    ce.each(ce.expr.match.bool.source.match(/\w+/g), function(e, t) {
        var a = xt[t] || ce.find.attr;
        xt[t] = function(e, t, n) {
            var r, i, o = t.toLowerCase();
            return n || (i = xt[o],
            xt[o] = r,
            r = null != a(e, t, n) ? o : null,
            xt[o] = i),
            r
        }
    });
    var bt = /^(?:input|select|textarea|button)$/i
      , wt = /^(?:a|area)$/i;
    function Tt(e) {
        return (e.match(D) || []).join(" ")
    }
    function Ct(e) {
        return e.getAttribute && e.getAttribute("class") || ""
    }
    function kt(e) {
        return Array.isArray(e) ? e : "string" == typeof e && e.match(D) || []
    }
    ce.fn.extend({
        prop: function(e, t) {
            return M(this, ce.prop, e, t, 1 < arguments.length)
        },
        removeProp: function(e) {
            return this.each(function() {
                delete this[ce.propFix[e] || e]
            })
        }
    }),
    ce.extend({
        prop: function(e, t, n) {
            var r, i, o = e.nodeType;
            if (3 !== o && 8 !== o && 2 !== o)
                return 1 === o && ce.isXMLDoc(e) || (t = ce.propFix[t] || t,
                i = ce.propHooks[t]),
                void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get"in i && null !== (r = i.get(e, t)) ? r : e[t]
        },
        propHooks: {
            tabIndex: {
                get: function(e) {
                    var t = ce.find.attr(e, "tabindex");
                    return t ? parseInt(t, 10) : bt.test(e.nodeName) || wt.test(e.nodeName) && e.href ? 0 : -1
                }
            }
        },
        propFix: {
            "for": "htmlFor",
            "class": "className"
        }
    }),
    le.optSelected || (ce.propHooks.selected = {
        get: function(e) {
            var t = e.parentNode;
            return t && t.parentNode && t.parentNode.selectedIndex,
            null
        },
        set: function(e) {
            var t = e.parentNode;
            t && (t.selectedIndex,
            t.parentNode && t.parentNode.selectedIndex)
        }
    }),
    ce.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
        ce.propFix[this.toLowerCase()] = this
    }),
    ce.fn.extend({
        addClass: function(t) {
            var e, n, r, i, o, a;
            return v(t) ? this.each(function(e) {
                ce(this).addClass(t.call(this, e, Ct(this)))
            }) : (e = kt(t)).length ? this.each(function() {
                if (r = Ct(this),
                n = 1 === this.nodeType && " " + Tt(r) + " ") {
                    for (o = 0; o < e.length; o++)
                        i = e[o],
                        n.indexOf(" " + i + " ") < 0 && (n += i + " ");
                    a = Tt(n),
                    r !== a && this.setAttribute("class", a)
                }
            }) : this
        },
        removeClass: function(t) {
            var e, n, r, i, o, a;
            return v(t) ? this.each(function(e) {
                ce(this).removeClass(t.call(this, e, Ct(this)))
            }) : arguments.length ? (e = kt(t)).length ? this.each(function() {
                if (r = Ct(this),
                n = 1 === this.nodeType && " " + Tt(r) + " ") {
                    for (o = 0; o < e.length; o++) {
                        i = e[o];
                        while (-1 < n.indexOf(" " + i + " "))
                            n = n.replace(" " + i + " ", " ")
                    }
                    a = Tt(n),
                    r !== a && this.setAttribute("class", a)
                }
            }) : this : this.attr("class", "")
        },
        toggleClass: function(t, n) {
            var e, r, i, o, a = typeof t, s = "string" === a || Array.isArray(t);
            return v(t) ? this.each(function(e) {
                ce(this).toggleClass(t.call(this, e, Ct(this), n), n)
            }) : "boolean" == typeof n && s ? n ? this.addClass(t) : this.removeClass(t) : (e = kt(t),
            this.each(function() {
                if (s)
                    for (o = ce(this),
                    i = 0; i < e.length; i++)
                        r = e[i],
                        o.hasClass(r) ? o.removeClass(r) : o.addClass(r);
                else
                    void 0 !== t && "boolean" !== a || ((r = Ct(this)) && _.set(this, "__className__", r),
                    this.setAttribute && this.setAttribute("class", r || !1 === t ? "" : _.get(this, "__className__") || ""))
            }))
        },
        hasClass: function(e) {
            var t, n, r = 0;
            t = " " + e + " ";
            while (n = this[r++])
                if (1 === n.nodeType && -1 < (" " + Tt(Ct(n)) + " ").indexOf(t))
                    return !0;
            return !1
        }
    });
    var St = /\r/g;
    ce.fn.extend({
        val: function(n) {
            var r, e, i, t = this[0];
            return arguments.length ? (i = v(n),
            this.each(function(e) {
                var t;
                1 === this.nodeType && (null == (t = i ? n.call(this, e, ce(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = ce.map(t, function(e) {
                    return null == e ? "" : e + ""
                })),
                (r = ce.valHooks[this.type] || ce.valHooks[this.nodeName.toLowerCase()]) && "set"in r && void 0 !== r.set(this, t, "value") || (this.value = t))
            })) : t ? (r = ce.valHooks[t.type] || ce.valHooks[t.nodeName.toLowerCase()]) && "get"in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(St, "") : null == e ? "" : e : void 0
        }
    }),
    ce.extend({
        valHooks: {
            option: {
                get: function(e) {
                    var t = ce.find.attr(e, "value");
                    return null != t ? t : Tt(ce.text(e))
                }
            },
            select: {
                get: function(e) {
                    var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length;
                    for (r = o < 0 ? u : a ? o : 0; r < u; r++)
                        if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !fe(n.parentNode, "optgroup"))) {
                            if (t = ce(n).val(),
                            a)
                                return t;
                            s.push(t)
                        }
                    return s
                },
                set: function(e, t) {
                    var n, r, i = e.options, o = ce.makeArray(t), a = i.length;
                    while (a--)
                        ((r = i[a]).selected = -1 < ce.inArray(ce.valHooks.option.get(r), o)) && (n = !0);
                    return n || (e.selectedIndex = -1),
                    o
                }
            }
        }
    }),
    ce.each(["radio", "checkbox"], function() {
        ce.valHooks[this] = {
            set: function(e, t) {
                if (Array.isArray(t))
                    return e.checked = -1 < ce.inArray(ce(e).val(), t)
            }
        },
        le.checkOn || (ce.valHooks[this].get = function(e) {
            return null === e.getAttribute("value") ? "on" : e.value
        }
        )
    });
    var Et = ie.location
      , jt = {
        guid: Date.now()
    }
      , At = /\?/;
    ce.parseXML = function(e) {
        var t, n;
        if (!e || "string" != typeof e)
            return null;
        try {
            t = (new ie.DOMParser).parseFromString(e, "text/xml")
        } catch (e) {}
        return n = t && t.getElementsByTagName("parsererror")[0],
        t && !n || ce.error("Invalid XML: " + (n ? ce.map(n.childNodes, function(e) {
            return e.textContent
        }).join("\n") : e)),
        t
    }
    ;
    var Dt = /^(?:focusinfocus|focusoutblur)$/
      , Nt = function(e) {
        e.stopPropagation()
    };
    ce.extend(ce.event, {
        trigger: function(e, t, n, r) {
            var i, o, a, s, u, l, c, f, p = [n || C], d = ue.call(e, "type") ? e.type : e, h = ue.call(e, "namespace") ? e.namespace.split(".") : [];
            if (o = f = a = n = n || C,
            3 !== n.nodeType && 8 !== n.nodeType && !Dt.test(d + ce.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(),
            h.sort()),
            u = d.indexOf(":") < 0 && "on" + d,
            (e = e[ce.expando] ? e : new ce.Event(d,"object" == typeof e && e)).isTrigger = r ? 2 : 3,
            e.namespace = h.join("."),
            e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
            e.result = void 0,
            e.target || (e.target = n),
            t = null == t ? [e] : ce.makeArray(t, [e]),
            c = ce.event.special[d] || {},
            r || !c.trigger || !1 !== c.trigger.apply(n, t))) {
                if (!r && !c.noBubble && !y(n)) {
                    for (s = c.delegateType || d,
                    Dt.test(s + d) || (o = o.parentNode); o; o = o.parentNode)
                        p.push(o),
                        a = o;
                    a === (n.ownerDocument || C) && p.push(a.defaultView || a.parentWindow || ie)
                }
                i = 0;
                while ((o = p[i++]) && !e.isPropagationStopped())
                    f = o,
                    e.type = 1 < i ? s : c.bindType || d,
                    (l = (_.get(o, "events") || Object.create(null))[e.type] && _.get(o, "handle")) && l.apply(o, t),
                    (l = u && o[u]) && l.apply && $(o) && (e.result = l.apply(o, t),
                    !1 === e.result && e.preventDefault());
                return e.type = d,
                r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !$(n) || u && v(n[d]) && !y(n) && ((a = n[u]) && (n[u] = null),
                ce.event.triggered = d,
                e.isPropagationStopped() && f.addEventListener(d, Nt),
                n[d](),
                e.isPropagationStopped() && f.removeEventListener(d, Nt),
                ce.event.triggered = void 0,
                a && (n[u] = a)),
                e.result
            }
        },
        simulate: function(e, t, n) {
            var r = ce.extend(new ce.Event, n, {
                type: e,
                isSimulated: !0
            });
            ce.event.trigger(r, null, t)
        }
    }),
    ce.fn.extend({
        trigger: function(e, t) {
            return this.each(function() {
                ce.event.trigger(e, t, this)
            })
        },
        triggerHandler: function(e, t) {
            var n = this[0];
            if (n)
                return ce.event.trigger(e, t, n, !0)
        }
    });
    var qt = /\[\]$/
      , Lt = /\r?\n/g
      , Ht = /^(?:submit|button|image|reset|file)$/i
      , Ot = /^(?:input|select|textarea|keygen)/i;
    function Pt(n, e, r, i) {
        var t;
        if (Array.isArray(e))
            ce.each(e, function(e, t) {
                r || qt.test(n) ? i(n, t) : Pt(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i)
            });
        else if (r || "object" !== x(e))
            i(n, e);
        else
            for (t in e)
                Pt(n + "[" + t + "]", e[t], r, i)
    }
    ce.param = function(e, t) {
        var n, r = [], i = function(e, t) {
            var n = v(t) ? t() : t;
            r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
        };
        if (null == e)
            return "";
        if (Array.isArray(e) || e.jquery && !ce.isPlainObject(e))
            ce.each(e, function() {
                i(this.name, this.value)
            });
        else
            for (n in e)
                Pt(n, e[n], t, i);
        return r.join("&")
    }
    ,
    ce.fn.extend({
        serialize: function() {
            return ce.param(this.serializeArray())
        },
        serializeArray: function() {
            return this.map(function() {
                var e = ce.prop(this, "elements");
                return e ? ce.makeArray(e) : this
            }).filter(function() {
                var e = this.type;
                return this.name && !ce(this).is(":disabled") && Ot.test(this.nodeName) && !Ht.test(e) && (this.checked || !we.test(e))
            }).map(function(e, t) {
                var n = ce(this).val();
                return null == n ? null : Array.isArray(n) ? ce.map(n, function(e) {
                    return {
                        name: t.name,
                        value: e.replace(Lt, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: n.replace(Lt, "\r\n")
                }
            }).get()
        }
    });
    var Mt = /%20/g
      , Rt = /#.*$/
      , It = /([?&])_=[^&]*/
      , Wt = /^(.*?):[ \t]*([^\r\n]*)$/gm
      , Ft = /^(?:GET|HEAD)$/
      , $t = /^\/\//
      , Bt = {}
      , _t = {}
      , zt = "*/".concat("*")
      , Xt = C.createElement("a");
    function Ut(o) {
        return function(e, t) {
            "string" != typeof e && (t = e,
            e = "*");
            var n, r = 0, i = e.toLowerCase().match(D) || [];
            if (v(t))
                while (n = i[r++])
                    "+" === n[0] ? (n = n.slice(1) || "*",
                    (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
        }
    }
    function Vt(t, i, o, a) {
        var s = {}
          , u = t === _t;
        function l(e) {
            var r;
            return s[e] = !0,
            ce.each(t[e] || [], function(e, t) {
                var n = t(i, o, a);
                return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n),
                l(n),
                !1)
            }),
            r
        }
        return l(i.dataTypes[0]) || !s["*"] && l("*")
    }
    function Gt(e, t) {
        var n, r, i = ce.ajaxSettings.flatOptions || {};
        for (n in t)
            void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
        return r && ce.extend(!0, e, r),
        e
    }
    Xt.href = Et.href,
    ce.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
            url: Et.href,
            type: "GET",
            isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),
            global: !0,
            processData: !0,
            async: !0,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
                "*": zt,
                text: "text/plain",
                html: "text/html",
                xml: "application/xml, text/xml",
                json: "application/json, text/javascript"
            },
            contents: {
                xml: /\bxml\b/,
                html: /\bhtml/,
                json: /\bjson\b/
            },
            responseFields: {
                xml: "responseXML",
                text: "responseText",
                json: "responseJSON"
            },
            converters: {
                "* text": String,
                "text html": !0,
                "text json": JSON.parse,
                "text xml": ce.parseXML
            },
            flatOptions: {
                url: !0,
                context: !0
            }
        },
        ajaxSetup: function(e, t) {
            return t ? Gt(Gt(e, ce.ajaxSettings), t) : Gt(ce.ajaxSettings, e)
        },
        ajaxPrefilter: Ut(Bt),
        ajaxTransport: Ut(_t),
        ajax: function(e, t) {
            "object" == typeof e && (t = e,
            e = void 0),
            t = t || {};
            var c, f, p, n, d, r, h, g, i, o, v = ce.ajaxSetup({}, t), y = v.context || v, m = v.context && (y.nodeType || y.jquery) ? ce(y) : ce.event, x = ce.Deferred(), b = ce.Callbacks("once memory"), w = v.statusCode || {}, a = {}, s = {}, u = "canceled", T = {
                readyState: 0,
                getResponseHeader: function(e) {
                    var t;
                    if (h) {
                        if (!n) {
                            n = {};
                            while (t = Wt.exec(p))
                                n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2])
                        }
                        t = n[e.toLowerCase() + " "]
                    }
                    return null == t ? null : t.join(", ")
                },
                getAllResponseHeaders: function() {
                    return h ? p : null
                },
                setRequestHeader: function(e, t) {
                    return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e,
                    a[e] = t),
                    this
                },
                overrideMimeType: function(e) {
                    return null == h && (v.mimeType = e),
                    this
                },
                statusCode: function(e) {
                    var t;
                    if (e)
                        if (h)
                            T.always(e[T.status]);
                        else
                            for (t in e)
                                w[t] = [w[t], e[t]];
                    return this
                },
                abort: function(e) {
                    var t = e || u;
                    return c && c.abort(t),
                    l(0, t),
                    this
                }
            };
            if (x.promise(T),
            v.url = ((e || v.url || Et.href) + "").replace($t, Et.protocol + "//"),
            v.type = t.method || t.type || v.method || v.type,
            v.dataTypes = (v.dataType || "*").toLowerCase().match(D) || [""],
            null == v.crossDomain) {
                r = C.createElement("a");
                try {
                    r.href = v.url,
                    r.href = r.href,
                    v.crossDomain = Xt.protocol + "//" + Xt.host != r.protocol + "//" + r.host
                } catch (e) {
                    v.crossDomain = !0
                }
            }
            if (v.data && v.processData && "string" != typeof v.data && (v.data = ce.param(v.data, v.traditional)),
            Vt(Bt, v, t, T),
            h)
                return T;
            for (i in (g = ce.event && v.global) && 0 == ce.active++ && ce.event.trigger("ajaxStart"),
            v.type = v.type.toUpperCase(),
            v.hasContent = !Ft.test(v.type),
            f = v.url.replace(Rt, ""),
            v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(Mt, "+")) : (o = v.url.slice(f.length),
            v.data && (v.processData || "string" == typeof v.data) && (f += (At.test(f) ? "&" : "?") + v.data,
            delete v.data),
            !1 === v.cache && (f = f.replace(It, "$1"),
            o = (At.test(f) ? "&" : "?") + "_=" + jt.guid++ + o),
            v.url = f + o),
            v.ifModified && (ce.lastModified[f] && T.setRequestHeader("If-Modified-Since", ce.lastModified[f]),
            ce.etag[f] && T.setRequestHeader("If-None-Match", ce.etag[f])),
            (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType),
            T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + zt + "; q=0.01" : "") : v.accepts["*"]),
            v.headers)
                T.setRequestHeader(i, v.headers[i]);
            if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h))
                return T.abort();
            if (u = "abort",
            b.add(v.complete),
            T.done(v.success),
            T.fail(v.error),
            c = Vt(_t, v, t, T)) {
                if (T.readyState = 1,
                g && m.trigger("ajaxSend", [T, v]),
                h)
                    return T;
                v.async && 0 < v.timeout && (d = ie.setTimeout(function() {
                    T.abort("timeout")
                }, v.timeout));
                try {
                    h = !1,
                    c.send(a, l)
                } catch (e) {
                    if (h)
                        throw e;
                    l(-1, e)
                }
            } else
                l(-1, "No Transport");
            function l(e, t, n, r) {
                var i, o, a, s, u, l = t;
                h || (h = !0,
                d && ie.clearTimeout(d),
                c = void 0,
                p = r || "",
                T.readyState = 0 < e ? 4 : 0,
                i = 200 <= e && e < 300 || 304 === e,
                n && (s = function(e, t, n) {
                    var r, i, o, a, s = e.contents, u = e.dataTypes;
                    while ("*" === u[0])
                        u.shift(),
                        void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
                    if (r)
                        for (i in s)
                            if (s[i] && s[i].test(r)) {
                                u.unshift(i);
                                break
                            }
                    if (u[0]in n)
                        o = u[0];
                    else {
                        for (i in n) {
                            if (!u[0] || e.converters[i + " " + u[0]]) {
                                o = i;
                                break
                            }
                            a || (a = i)
                        }
                        o = o || a
                    }
                    if (o)
                        return o !== u[0] && u.unshift(o),
                        n[o]
                }(v, T, n)),
                !i && -1 < ce.inArray("script", v.dataTypes) && ce.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function() {}
                ),
                s = function(e, t, n, r) {
                    var i, o, a, s, u, l = {}, c = e.dataTypes.slice();
                    if (c[1])
                        for (a in e.converters)
                            l[a.toLowerCase()] = e.converters[a];
                    o = c.shift();
                    while (o)
                        if (e.responseFields[o] && (n[e.responseFields[o]] = t),
                        !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)),
                        u = o,
                        o = c.shift())
                            if ("*" === o)
                                o = u;
                            else if ("*" !== u && u !== o) {
                                if (!(a = l[u + " " + o] || l["* " + o]))
                                    for (i in l)
                                        if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
                                            !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0],
                                            c.unshift(s[1]));
                                            break
                                        }
                                if (!0 !== a)
                                    if (a && e["throws"])
                                        t = a(t);
                                    else
                                        try {
                                            t = a(t)
                                        } catch (e) {
                                            return {
                                                state: "parsererror",
                                                error: a ? e : "No conversion from " + u + " to " + o
                                            }
                                        }
                            }
                    return {
                        state: "success",
                        data: t
                    }
                }(v, s, T, i),
                i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (ce.lastModified[f] = u),
                (u = T.getResponseHeader("etag")) && (ce.etag[f] = u)),
                204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state,
                o = s.data,
                i = !(a = s.error))) : (a = l,
                !e && l || (l = "error",
                e < 0 && (e = 0))),
                T.status = e,
                T.statusText = (t || l) + "",
                i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]),
                T.statusCode(w),
                w = void 0,
                g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]),
                b.fireWith(y, [T, l]),
                g && (m.trigger("ajaxComplete", [T, v]),
                --ce.active || ce.event.trigger("ajaxStop")))
            }
            return T
        },
        getJSON: function(e, t, n) {
            return ce.get(e, t, n, "json")
        },
        getScript: function(e, t) {
            return ce.get(e, void 0, t, "script")
        }
    }),
    ce.each(["get", "post"], function(e, i) {
        ce[i] = function(e, t, n, r) {
            return v(t) && (r = r || n,
            n = t,
            t = void 0),
            ce.ajax(ce.extend({
                url: e,
                type: i,
                dataType: r,
                data: t,
                success: n
            }, ce.isPlainObject(e) && e))
        }
    }),
    ce.ajaxPrefilter(function(e) {
        var t;
        for (t in e.headers)
            "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "")
    }),
    ce._evalUrl = function(e, t, n) {
        return ce.ajax({
            url: e,
            type: "GET",
            dataType: "script",
            cache: !0,
            async: !1,
            global: !1,
            converters: {
                "text script": function() {}
            },
            dataFilter: function(e) {
                ce.globalEval(e, t, n)
            }
        })
    }
    ,
    ce.fn.extend({
        wrapAll: function(e) {
            var t;
            return this[0] && (v(e) && (e = e.call(this[0])),
            t = ce(e, this[0].ownerDocument).eq(0).clone(!0),
            this[0].parentNode && t.insertBefore(this[0]),
            t.map(function() {
                var e = this;
                while (e.firstElementChild)
                    e = e.firstElementChild;
                return e
            }).append(this)),
            this
        },
        wrapInner: function(n) {
            return v(n) ? this.each(function(e) {
                ce(this).wrapInner(n.call(this, e))
            }) : this.each(function() {
                var e = ce(this)
                  , t = e.contents();
                t.length ? t.wrapAll(n) : e.append(n)
            })
        },
        wrap: function(t) {
            var n = v(t);
            return this.each(function(e) {
                ce(this).wrapAll(n ? t.call(this, e) : t)
            })
        },
        unwrap: function(e) {
            return this.parent(e).not("body").each(function() {
                ce(this).replaceWith(this.childNodes)
            }),
            this
        }
    }),
    ce.expr.pseudos.hidden = function(e) {
        return !ce.expr.pseudos.visible(e)
    }
    ,
    ce.expr.pseudos.visible = function(e) {
        return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
    }
    ,
    ce.ajaxSettings.xhr = function() {
        try {
            return new ie.XMLHttpRequest
        } catch (e) {}
    }
    ;
    var Yt = {
        0: 200,
        1223: 204
    }
      , Qt = ce.ajaxSettings.xhr();
    le.cors = !!Qt && "withCredentials"in Qt,
    le.ajax = Qt = !!Qt,
    ce.ajaxTransport(function(i) {
        var o, a;
        if (le.cors || Qt && !i.crossDomain)
            return {
                send: function(e, t) {
                    var n, r = i.xhr();
                    if (r.open(i.type, i.url, i.async, i.username, i.password),
                    i.xhrFields)
                        for (n in i.xhrFields)
                            r[n] = i.xhrFields[n];
                    for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType),
                    i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"),
                    e)
                        r.setRequestHeader(n, e[n]);
                    o = function(e) {
                        return function() {
                            o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null,
                            "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Yt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? {
                                binary: r.response
                            } : {
                                text: r.responseText
                            }, r.getAllResponseHeaders()))
                        }
                    }
                    ,
                    r.onload = o(),
                    a = r.onerror = r.ontimeout = o("error"),
                    void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() {
                        4 === r.readyState && ie.setTimeout(function() {
                            o && a()
                        })
                    }
                    ,
                    o = o("abort");
                    try {
                        r.send(i.hasContent && i.data || null)
                    } catch (e) {
                        if (o)
                            throw e
                    }
                },
                abort: function() {
                    o && o()
                }
            }
    }),
    ce.ajaxPrefilter(function(e) {
        e.crossDomain && (e.contents.script = !1)
    }),
    ce.ajaxSetup({
        accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
        },
        contents: {
            script: /\b(?:java|ecma)script\b/
        },
        converters: {
            "text script": function(e) {
                return ce.globalEval(e),
                e
            }
        }
    }),
    ce.ajaxPrefilter("script", function(e) {
        void 0 === e.cache && (e.cache = !1),
        e.crossDomain && (e.type = "GET")
    }),
    ce.ajaxTransport("script", function(n) {
        var r, i;
        if (n.crossDomain || n.scriptAttrs)
            return {
                send: function(e, t) {
                    r = ce("<script>").attr(n.scriptAttrs || {}).prop({
                        charset: n.scriptCharset,
                        src: n.url
                    }).on("load error", i = function(e) {
                        r.remove(),
                        i = null,
                        e && t("error" === e.type ? 404 : 200, e.type)
                    }
                    ),
                    C.head.appendChild(r[0])
                },
                abort: function() {
                    i && i()
                }
            }
    });
    var Jt, Kt = [], Zt = /(=)\?(?=&|$)|\?\?/;
    ce.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function() {
            var e = Kt.pop() || ce.expando + "_" + jt.guid++;
            return this[e] = !0,
            e
        }
    }),
    ce.ajaxPrefilter("json jsonp", function(e, t, n) {
        var r, i, o, a = !1 !== e.jsonp && (Zt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Zt.test(e.data) && "data");
        if (a || "jsonp" === e.dataTypes[0])
            return r = e.jsonpCallback = v(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
            a ? e[a] = e[a].replace(Zt, "$1" + r) : !1 !== e.jsonp && (e.url += (At.test(e.url) ? "&" : "?") + e.jsonp + "=" + r),
            e.converters["script json"] = function() {
                return o || ce.error(r + " was not called"),
                o[0]
            }
            ,
            e.dataTypes[0] = "json",
            i = ie[r],
            ie[r] = function() {
                o = arguments
            }
            ,
            n.always(function() {
                void 0 === i ? ce(ie).removeProp(r) : ie[r] = i,
                e[r] && (e.jsonpCallback = t.jsonpCallback,
                Kt.push(r)),
                o && v(i) && i(o[0]),
                o = i = void 0
            }),
            "script"
    }),
    le.createHTMLDocument = ((Jt = C.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>",
    2 === Jt.childNodes.length),
    ce.parseHTML = function(e, t, n) {
        return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t,
        t = !1),
        t || (le.createHTMLDocument ? ((r = (t = C.implementation.createHTMLDocument("")).createElement("base")).href = C.location.href,
        t.head.appendChild(r)) : t = C),
        o = !n && [],
        (i = w.exec(e)) ? [t.createElement(i[1])] : (i = Ae([e], t, o),
        o && o.length && ce(o).remove(),
        ce.merge([], i.childNodes)));
        var r, i, o
    }
    ,
    ce.fn.load = function(e, t, n) {
        var r, i, o, a = this, s = e.indexOf(" ");
        return -1 < s && (r = Tt(e.slice(s)),
        e = e.slice(0, s)),
        v(t) ? (n = t,
        t = void 0) : t && "object" == typeof t && (i = "POST"),
        0 < a.length && ce.ajax({
            url: e,
            type: i || "GET",
            dataType: "html",
            data: t
        }).done(function(e) {
            o = arguments,
            a.html(r ? ce("<div>").append(ce.parseHTML(e)).find(r) : e)
        }).always(n && function(e, t) {
            a.each(function() {
                n.apply(this, o || [e.responseText, t, e])
            })
        }
        ),
        this
    }
    ,
    ce.expr.pseudos.animated = function(t) {
        return ce.grep(ce.timers, function(e) {
            return t === e.elem
        }).length
    }
    ,
    ce.offset = {
        setOffset: function(e, t, n) {
            var r, i, o, a, s, u, l = ce.css(e, "position"), c = ce(e), f = {};
            "static" === l && (e.style.position = "relative"),
            s = c.offset(),
            o = ce.css(e, "top"),
            u = ce.css(e, "left"),
            ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top,
            i = r.left) : (a = parseFloat(o) || 0,
            i = parseFloat(u) || 0),
            v(t) && (t = t.call(e, n, ce.extend({}, s))),
            null != t.top && (f.top = t.top - s.top + a),
            null != t.left && (f.left = t.left - s.left + i),
            "using"in t ? t.using.call(e, f) : c.css(f)
        }
    },
    ce.fn.extend({
        offset: function(t) {
            if (arguments.length)
                return void 0 === t ? this : this.each(function(e) {
                    ce.offset.setOffset(this, t, e)
                });
            var e, n, r = this[0];
            return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(),
            n = r.ownerDocument.defaultView,
            {
                top: e.top + n.pageYOffset,
                left: e.left + n.pageXOffset
            }) : {
                top: 0,
                left: 0
            } : void 0
        },
        position: function() {
            if (this[0]) {
                var e, t, n, r = this[0], i = {
                    top: 0,
                    left: 0
                };
                if ("fixed" === ce.css(r, "position"))
                    t = r.getBoundingClientRect();
                else {
                    t = this.offset(),
                    n = r.ownerDocument,
                    e = r.offsetParent || n.documentElement;
                    while (e && (e === n.body || e === n.documentElement) && "static" === ce.css(e, "position"))
                        e = e.parentNode;
                    e && e !== r && 1 === e.nodeType && ((i = ce(e).offset()).top += ce.css(e, "borderTopWidth", !0),
                    i.left += ce.css(e, "borderLeftWidth", !0))
                }
                return {
                    top: t.top - i.top - ce.css(r, "marginTop", !0),
                    left: t.left - i.left - ce.css(r, "marginLeft", !0)
                }
            }
        },
        offsetParent: function() {
            return this.map(function() {
                var e = this.offsetParent;
                while (e && "static" === ce.css(e, "position"))
                    e = e.offsetParent;
                return e || J
            })
        }
    }),
    ce.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    }, function(t, i) {
        var o = "pageYOffset" === i;
        ce.fn[t] = function(e) {
            return M(this, function(e, t, n) {
                var r;
                if (y(e) ? r = e : 9 === e.nodeType && (r = e.defaultView),
                void 0 === n)
                    return r ? r[i] : e[t];
                r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n
            }, t, e, arguments.length)
        }
    }),
    ce.each(["top", "left"], function(e, n) {
        ce.cssHooks[n] = Ye(le.pixelPosition, function(e, t) {
            if (t)
                return t = Ge(e, n),
                _e.test(t) ? ce(e).position()[n] + "px" : t
        })
    }),
    ce.each({
        Height: "height",
        Width: "width"
    }, function(a, s) {
        ce.each({
            padding: "inner" + a,
            content: s,
            "": "outer" + a
        }, function(r, o) {
            ce.fn[o] = function(e, t) {
                var n = arguments.length && (r || "boolean" != typeof e)
                  , i = r || (!0 === e || !0 === t ? "margin" : "border");
                return M(this, function(e, t, n) {
                    var r;
                    return y(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement,
                    Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? ce.css(e, t, i) : ce.style(e, t, n, i)
                }, s, n ? e : void 0, n)
            }
        })
    }),
    ce.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
        ce.fn[t] = function(e) {
            return this.on(t, e)
        }
    }),
    ce.fn.extend({
        bind: function(e, t, n) {
            return this.on(e, null, t, n)
        },
        unbind: function(e, t) {
            return this.off(e, null, t)
        },
        delegate: function(e, t, n, r) {
            return this.on(t, e, n, r)
        },
        undelegate: function(e, t, n) {
            return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
        },
        hover: function(e, t) {
            return this.on("mouseenter", e).on("mouseleave", t || e)
        }
    }),
    ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, n) {
        ce.fn[n] = function(e, t) {
            return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
        }
    });
    var en = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
    ce.proxy = function(e, t) {
        var n, r, i;
        if ("string" == typeof t && (n = e[t],
        t = e,
        e = n),
        v(e))
            return r = ae.call(arguments, 2),
            (i = function() {
                return e.apply(t || this, r.concat(ae.call(arguments)))
            }
            ).guid = e.guid = e.guid || ce.guid++,
            i
    }
    ,
    ce.holdReady = function(e) {
        e ? ce.readyWait++ : ce.ready(!0)
    }
    ,
    ce.isArray = Array.isArray,
    ce.parseJSON = JSON.parse,
    ce.nodeName = fe,
    ce.isFunction = v,
    ce.isWindow = y,
    ce.camelCase = F,
    ce.type = x,
    ce.now = Date.now,
    ce.isNumeric = function(e) {
        var t = ce.type(e);
        return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
    }
    ,
    ce.trim = function(e) {
        return null == e ? "" : (e + "").replace(en, "$1")
    }
    ,
    "function" == typeof define && define.amd && define("jquery", [], function() {
        return ce
    });
    var tn = ie.jQuery
      , nn = ie.$;
    return ce.noConflict = function(e) {
        return ie.$ === ce && (ie.$ = nn),
        e && ie.jQuery === ce && (ie.jQuery = tn),
        ce
    }
    ,
    "undefined" == typeof e && (ie.jQuery = ie.$ = ce),
    ce
});

/**
* jQuery scroroller Plugin 1.0
*
* http://www.tinywall.net/
* 
* Developers: Arun David, Boobalan
* Copyright (c) 2014 
*/
(function($) {
    $(window).on("load", function() {
        $(document).scrollzipInit();
        $(document).rollerInit();
    });
    $(window).on("load scroll resize", function() {
        $('.numscroller').scrollzip({
            showFunction: function() {
                numberRoller($(this).attr('data-slno'));
            },
            wholeVisible: false,
        });
    });
    $.fn.scrollzipInit = function() {
        $('body').prepend("<div style='position:fixed;top:0px;left:0px;width:0;height:0;' id='scrollzipPoint'></div>");
    }
    ;
    $.fn.rollerInit = function() {
        var i = 0;
        $('.numscroller').each(function() {
            i++;
            $(this).attr('data-slno', i);
            $(this).addClass("roller-title-number-" + i);
        });
    }
    ;
    $.fn.scrollzip = function(options) {
        var settings = $.extend({
            showFunction: null,
            hideFunction: null,
            showShift: 0,
            wholeVisible: false,
            hideShift: 0,
        }, options);
        return this.each(function() {
            $(this).addClass('scrollzip');
            if (typeof settings.showFunction === 'function') {
                if ($("#scrollzipPoint").length) {
                    if (!$(this).hasClass('isShown') && ($(window).outerHeight() + $('#scrollzipPoint').offset().top - settings.showShift) > ($(this).offset().top + ((settings.wholeVisible) ? $(this).outerHeight() : 0)) && ($('#scrollzipPoint').offset().top + ((settings.wholeVisible) ? $(this).outerHeight() : 0)) < ($(this).outerHeight() + $(this).offset().top - settings.showShift)) {
                        $(this).addClass('isShown');
                        settings.showFunction.call(this);
                    }
                }
            }
            if (typeof settings.hideFunction === 'function') {
                if ($(this).hasClass('isShown') && (($(window).outerHeight() + $('#scrollzipPoint').offset().top - settings.hideShift) < ($(this).offset().top + ((settings.wholeVisible) ? $(this).outerHeight() : 0)) || ($('#scrollzipPoint').offset().top + ((settings.wholeVisible) ? $(this).outerHeight() : 0)) > ($(this).outerHeight() + $(this).offset().top - settings.hideShift))) {
                    $(this).removeClass('isShown');
                    settings.hideFunction.call(this);
                }
            }
            return this;
        });
    }
    ;
    function numberRoller(slno) {
        var min = $('.roller-title-number-' + slno).attr('data-min');
        var max = $('.roller-title-number-' + slno).attr('data-max');
        var timediff = $('.roller-title-number-' + slno).attr('data-delay');
        var increment = $('.roller-title-number-' + slno).attr('data-increment');
        var numdiff = max - min;
        var timeout = (timediff * 1000) / numdiff;

        numberRoll(slno, min, max, increment, timeout);

    }
    function numberRoll(slno, min, max, increment, timeout) {
        if (min <= max) {
            $('.roller-title-number-' + slno).html(min);
            min = parseInt(min) + parseInt(increment);
            setTimeout(function() {
                numberRoll(eval(slno), eval(min), eval(max), eval(increment), eval(timeout))
            }, timeout);
        } else {
            $('.roller-title-number-' + slno).html(max);
        }
    }
}
)(jQuery);
/*! Magnific Popup - v1.1.0 - 2016-02-20
* http://dimsemenov.com/plugins/magnific-popup/
* Copyright (c) 2016 Dmitry Semenov; */
!function(a) {
    "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : window.jQuery || window.Zepto)
}(function(a) {
    var b, c, d, e, f, g, h = "Close", i = "BeforeClose", j = "AfterClose", k = "BeforeAppend", l = "MarkupParse", m = "Open", n = "Change", o = "mfp", p = "." + o, q = "mfp-ready", r = "mfp-removing", s = "mfp-prevent-close", t = function() {}, u = !!window.jQuery, v = a(window), w = function(a, c) {
        b.ev.on(o + a + p, c)
    }, x = function(b, c, d, e) {
        var f = document.createElement("div");
        return f.className = "mfp-" + b,
        d && (f.innerHTML = d),
        e ? c && c.appendChild(f) : (f = a(f),
        c && f.appendTo(c)),
        f
    }, y = function(c, d) {
        b.ev.triggerHandler(o + c, d),
        b.st.callbacks && (c = c.charAt(0).toLowerCase() + c.slice(1),
        b.st.callbacks[c] && b.st.callbacks[c].apply(b, a.isArray(d) ? d : [d]))
    }, z = function(c) {
        return c === g && b.currTemplate.closeBtn || (b.currTemplate.closeBtn = a(b.st.closeMarkup.replace("%title%", b.st.tClose)),
        g = c),
        b.currTemplate.closeBtn
    }, A = function() {
        a.magnificPopup.instance || (b = new t,
        b.init(),
        a.magnificPopup.instance = b)
    }, B = function() {
        var a = document.createElement("p").style
          , b = ["ms", "O", "Moz", "Webkit"];
        if (void 0 !== a.transition)
            return !0;
        for (; b.length; )
            if (b.pop() + "Transition"in a)
                return !0;
        return !1
    };
    t.prototype = {
        constructor: t,
        init: function() {
            var c = navigator.appVersion;
            b.isLowIE = b.isIE8 = document.all && !document.addEventListener,
            b.isAndroid = /android/gi.test(c),
            b.isIOS = /iphone|ipad|ipod/gi.test(c),
            b.supportsTransition = B(),
            b.probablyMobile = b.isAndroid || b.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),
            d = a(document),
            b.popupsCache = {}
        },
        open: function(c) {
            var e;
            if (c.isObj === !1) {
                b.items = c.items.toArray(),
                b.index = 0;
                var g, h = c.items;
                for (e = 0; e < h.length; e++)
                    if (g = h[e],
                    g.parsed && (g = g.el[0]),
                    g === c.el[0]) {
                        b.index = e;
                        break
                    }
            } else
                b.items = a.isArray(c.items) ? c.items : [c.items],
                b.index = c.index || 0;
            if (b.isOpen)
                return void b.updateItemHTML();
            b.types = [],
            f = "",
            c.mainEl && c.mainEl.length ? b.ev = c.mainEl.eq(0) : b.ev = d,
            c.key ? (b.popupsCache[c.key] || (b.popupsCache[c.key] = {}),
            b.currTemplate = b.popupsCache[c.key]) : b.currTemplate = {},
            b.st = a.extend(!0, {}, a.magnificPopup.defaults, c),
            b.fixedContentPos = "auto" === b.st.fixedContentPos ? !b.probablyMobile : b.st.fixedContentPos,
            b.st.modal && (b.st.closeOnContentClick = !1,
            b.st.closeOnBgClick = !1,
            b.st.showCloseBtn = !1,
            b.st.enableEscapeKey = !1),
            b.bgOverlay || (b.bgOverlay = x("bg").on("click" + p, function() {
                b.close()
            }),
            b.wrap = x("wrap").attr("tabindex", -1).on("click" + p, function(a) {
                b._checkIfClose(a.target) && b.close()
            }),
            b.container = x("container", b.wrap)),
            b.contentContainer = x("content"),
            b.st.preloader && (b.preloader = x("preloader", b.container, b.st.tLoading));
            var i = a.magnificPopup.modules;
            for (e = 0; e < i.length; e++) {
                var j = i[e];
                j = j.charAt(0).toUpperCase() + j.slice(1),
                b["init" + j].call(b)
            }
            y("BeforeOpen"),
            b.st.showCloseBtn && (b.st.closeBtnInside ? (w(l, function(a, b, c, d) {
                c.close_replaceWith = z(d.type)
            }),
            f += " mfp-close-btn-in") : b.wrap.append(z())),
            b.st.alignTop && (f += " mfp-align-top"),
            b.fixedContentPos ? b.wrap.css({
                overflow: b.st.overflowY,
                overflowX: "hidden",
                overflowY: b.st.overflowY
            }) : b.wrap.css({
                top: v.scrollTop(),
                position: "absolute"
            }),
            (b.st.fixedBgPos === !1 || "auto" === b.st.fixedBgPos && !b.fixedContentPos) && b.bgOverlay.css({
                height: d.height(),
                position: "absolute"
            }),
            b.st.enableEscapeKey && d.on("keyup" + p, function(a) {
                27 === a.keyCode && b.close()
            }),
            v.on("resize" + p, function() {
                b.updateSize()
            }),
            b.st.closeOnContentClick || (f += " mfp-auto-cursor"),
            f && b.wrap.addClass(f);
            var k = b.wH = v.height()
              , n = {};
            if (b.fixedContentPos && b._hasScrollBar(k)) {
                var o = b._getScrollbarSize();
                o && (n.marginRight = o)
            }
            b.fixedContentPos && (b.isIE7 ? a("body, html").css("overflow", "hidden") : n.overflow = "hidden");
            var r = b.st.mainClass;
            return b.isIE7 && (r += " mfp-ie7"),
            r && b._addClassToMFP(r),
            b.updateItemHTML(),
            y("BuildControls"),
            a("html").css(n),
            b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo || a(document.body)),
            b._lastFocusedEl = document.activeElement,
            setTimeout(function() {
                b.content ? (b._addClassToMFP(q),
                b._setFocus()) : b.bgOverlay.addClass(q),
                d.on("focusin" + p, b._onFocusIn)
            }, 16),
            b.isOpen = !0,
            b.updateSize(k),
            y(m),
            c
        },
        close: function() {
            b.isOpen && (y(i),
            b.isOpen = !1,
            b.st.removalDelay && !b.isLowIE && b.supportsTransition ? (b._addClassToMFP(r),
            setTimeout(function() {
                b._close()
            }, b.st.removalDelay)) : b._close())
        },
        _close: function() {
            y(h);
            var c = r + " " + q + " ";
            if (b.bgOverlay.detach(),
            b.wrap.detach(),
            b.container.empty(),
            b.st.mainClass && (c += b.st.mainClass + " "),
            b._removeClassFromMFP(c),
            b.fixedContentPos) {
                var e = {
                    marginRight: ""
                };
                b.isIE7 ? a("body, html").css("overflow", "") : e.overflow = "",
                a("html").css(e)
            }
            d.off("keyup" + p + " focusin" + p),
            b.ev.off(p),
            b.wrap.attr("class", "mfp-wrap").removeAttr("style"),
            b.bgOverlay.attr("class", "mfp-bg"),
            b.container.attr("class", "mfp-container"),
            !b.st.showCloseBtn || b.st.closeBtnInside && b.currTemplate[b.currItem.type] !== !0 || b.currTemplate.closeBtn && b.currTemplate.closeBtn.detach(),
            b.st.autoFocusLast && b._lastFocusedEl && a(b._lastFocusedEl).focus(),
            b.currItem = null,
            b.content = null,
            b.currTemplate = null,
            b.prevHeight = 0,
            y(j)
        },
        updateSize: function(a) {
            if (b.isIOS) {
                var c = document.documentElement.clientWidth / window.innerWidth
                  , d = window.innerHeight * c;
                b.wrap.css("height", d),
                b.wH = d
            } else
                b.wH = a || v.height();
            b.fixedContentPos || b.wrap.css("height", b.wH),
            y("Resize")
        },
        updateItemHTML: function() {
            var c = b.items[b.index];
            b.contentContainer.detach(),
            b.content && b.content.detach(),
            c.parsed || (c = b.parseEl(b.index));
            var d = c.type;
            if (y("BeforeChange", [b.currItem ? b.currItem.type : "", d]),
            b.currItem = c,
            !b.currTemplate[d]) {
                var f = b.st[d] ? b.st[d].markup : !1;
                y("FirstMarkupParse", f),
                f ? b.currTemplate[d] = a(f) : b.currTemplate[d] = !0
            }
            e && e !== c.type && b.container.removeClass("mfp-" + e + "-holder");
            var g = b["get" + d.charAt(0).toUpperCase() + d.slice(1)](c, b.currTemplate[d]);
            b.appendContent(g, d),
            c.preloaded = !0,
            y(n, c),
            e = c.type,
            b.container.prepend(b.contentContainer),
            y("AfterChange")
        },
        appendContent: function(a, c) {
            b.content = a,
            a ? b.st.showCloseBtn && b.st.closeBtnInside && b.currTemplate[c] === !0 ? b.content.find(".mfp-close").length || b.content.append(z()) : b.content = a : b.content = "",
            y(k),
            b.container.addClass("mfp-" + c + "-holder"),
            b.contentContainer.append(b.content)
        },
        parseEl: function(c) {
            var d, e = b.items[c];
            if (e.tagName ? e = {
                el: a(e)
            } : (d = e.type,
            e = {
                data: e,
                src: e.src
            }),
            e.el) {
                for (var f = b.types, g = 0; g < f.length; g++)
                    if (e.el.hasClass("mfp-" + f[g])) {
                        d = f[g];
                        break
                    }
                e.src = e.el.attr("data-mfp-src"),
                e.src || (e.src = e.el.attr("href"))
            }
            return e.type = d || b.st.type || "inline",
            e.index = c,
            e.parsed = !0,
            b.items[c] = e,
            y("ElementParse", e),
            b.items[c]
        },
        addGroup: function(a, c) {
            var d = function(d) {
                d.mfpEl = this,
                b._openClick(d, a, c)
            };
            c || (c = {});
            var e = "click.magnificPopup";
            c.mainEl = a,
            c.items ? (c.isObj = !0,
            a.off(e).on(e, d)) : (c.isObj = !1,
            c.delegate ? a.off(e).on(e, c.delegate, d) : (c.items = a,
            a.off(e).on(e, d)))
        },
        _openClick: function(c, d, e) {
            var f = void 0 !== e.midClick ? e.midClick : a.magnificPopup.defaults.midClick;
            if (f || !(2 === c.which || c.ctrlKey || c.metaKey || c.altKey || c.shiftKey)) {
                var g = void 0 !== e.disableOn ? e.disableOn : a.magnificPopup.defaults.disableOn;
                if (g)
                    if (a.isFunction(g)) {
                        if (!g.call(b))
                            return !0
                    } else if (v.width() < g)
                        return !0;
                c.type && (c.preventDefault(),
                b.isOpen && c.stopPropagation()),
                e.el = a(c.mfpEl),
                e.delegate && (e.items = d.find(e.delegate)),
                b.open(e)
            }
        },
        updateStatus: function(a, d) {
            if (b.preloader) {
                c !== a && b.container.removeClass("mfp-s-" + c),
                d || "loading" !== a || (d = b.st.tLoading);
                var e = {
                    status: a,
                    text: d
                };
                y("UpdateStatus", e),
                a = e.status,
                d = e.text,
                b.preloader.html(d),
                b.preloader.find("a").on("click", function(a) {
                    a.stopImmediatePropagation()
                }),
                b.container.addClass("mfp-s-" + a),
                c = a
            }
        },
        _checkIfClose: function(c) {
            if (!a(c).hasClass(s)) {
                var d = b.st.closeOnContentClick
                  , e = b.st.closeOnBgClick;
                if (d && e)
                    return !0;
                if (!b.content || a(c).hasClass("mfp-close") || b.preloader && c === b.preloader[0])
                    return !0;
                if (c === b.content[0] || a.contains(b.content[0], c)) {
                    if (d)
                        return !0
                } else if (e && a.contains(document, c))
                    return !0;
                return !1
            }
        },
        _addClassToMFP: function(a) {
            b.bgOverlay.addClass(a),
            b.wrap.addClass(a)
        },
        _removeClassFromMFP: function(a) {
            this.bgOverlay.removeClass(a),
            b.wrap.removeClass(a)
        },
        _hasScrollBar: function(a) {
            return (b.isIE7 ? d.height() : document.body.scrollHeight) > (a || v.height())
        },
        _setFocus: function() {
            (b.st.focus ? b.content.find(b.st.focus).eq(0) : b.wrap).focus()
        },
        _onFocusIn: function(c) {
            return c.target === b.wrap[0] || a.contains(b.wrap[0], c.target) ? void 0 : (b._setFocus(),
            !1)
        },
        _parseMarkup: function(b, c, d) {
            var e;
            d.data && (c = a.extend(d.data, c)),
            y(l, [b, c, d]),
            a.each(c, function(c, d) {
                if (void 0 === d || d === !1)
                    return !0;
                if (e = c.split("_"),
                e.length > 1) {
                    var f = b.find(p + "-" + e[0]);
                    if (f.length > 0) {
                        var g = e[1];
                        "replaceWith" === g ? f[0] !== d[0] && f.replaceWith(d) : "img" === g ? f.is("img") ? f.attr("src", d) : f.replaceWith(a("<img>").attr("src", d).attr("class", f.attr("class"))) : f.attr(e[1], d)
                    }
                } else
                    b.find(p + "-" + c).html(d)
            })
        },
        _getScrollbarSize: function() {
            if (void 0 === b.scrollbarSize) {
                var a = document.createElement("div");
                a.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",
                document.body.appendChild(a),
                b.scrollbarSize = a.offsetWidth - a.clientWidth,
                document.body.removeChild(a)
            }
            return b.scrollbarSize
        }
    },
    a.magnificPopup = {
        instance: null,
        proto: t.prototype,
        modules: [],
        open: function(b, c) {
            return A(),
            b = b ? a.extend(!0, {}, b) : {},
            b.isObj = !0,
            b.index = c || 0,
            this.instance.open(b)
        },
        close: function() {
            return a.magnificPopup.instance && a.magnificPopup.instance.close()
        },
        registerModule: function(b, c) {
            c.options && (a.magnificPopup.defaults[b] = c.options),
            a.extend(this.proto, c.proto),
            this.modules.push(b)
        },
        defaults: {
            disableOn: 0,
            key: null,
            midClick: !1,
            mainClass: "",
            preloader: !0,
            focus: "",
            closeOnContentClick: !1,
            closeOnBgClick: !0,
            closeBtnInside: !0,
            showCloseBtn: !0,
            enableEscapeKey: !0,
            modal: !1,
            alignTop: !1,
            removalDelay: 0,
            prependTo: null,
            fixedContentPos: "auto",
            fixedBgPos: "auto",
            overflowY: "auto",
            closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
            tClose: "Close (Esc)",
            tLoading: "Loading...",
            autoFocusLast: !0
        }
    },
    a.fn.magnificPopup = function(c) {
        A();
        var d = a(this);
        if ("string" == typeof c)
            if ("open" === c) {
                var e, f = u ? d.data("magnificPopup") : d[0].magnificPopup, g = parseInt(arguments[1], 10) || 0;
                f.items ? e = f.items[g] : (e = d,
                f.delegate && (e = e.find(f.delegate)),
                e = e.eq(g)),
                b._openClick({
                    mfpEl: e
                }, d, f)
            } else
                b.isOpen && b[c].apply(b, Array.prototype.slice.call(arguments, 1));
        else
            c = a.extend(!0, {}, c),
            u ? d.data("magnificPopup", c) : d[0].magnificPopup = c,
            b.addGroup(d, c);
        return d
    }
    ;
    var C, D, E, F = "inline", G = function() {
        E && (D.after(E.addClass(C)).detach(),
        E = null)
    };
    a.magnificPopup.registerModule(F, {
        options: {
            hiddenClass: "hide",
            markup: "",
            tNotFound: "Content not found"
        },
        proto: {
            initInline: function() {
                b.types.push(F),
                w(h + "." + F, function() {
                    G()
                })
            },
            getInline: function(c, d) {
                if (G(),
                c.src) {
                    var e = b.st.inline
                      , f = a(c.src);
                    if (f.length) {
                        var g = f[0].parentNode;
                        g && g.tagName && (D || (C = e.hiddenClass,
                        D = x(C),
                        C = "mfp-" + C),
                        E = f.after(D).detach().removeClass(C)),
                        b.updateStatus("ready")
                    } else
                        b.updateStatus("error", e.tNotFound),
                        f = a("<div>");
                    return c.inlineElement = f,
                    f
                }
                return b.updateStatus("ready"),
                b._parseMarkup(d, {}, c),
                d
            }
        }
    });
    var H, I = "ajax", J = function() {
        H && a(document.body).removeClass(H)
    }, K = function() {
        J(),
        b.req && b.req.abort()
    };
    a.magnificPopup.registerModule(I, {
        options: {
            settings: null,
            cursor: "mfp-ajax-cur",
            tError: '<a href="%url%">The content</a> could not be loaded.'
        },
        proto: {
            initAjax: function() {
                b.types.push(I),
                H = b.st.ajax.cursor,
                w(h + "." + I, K),
                w("BeforeChange." + I, K)
            },
            getAjax: function(c) {
                H && a(document.body).addClass(H),
                b.updateStatus("loading");
                var d = a.extend({
                    url: c.src,
                    success: function(d, e, f) {
                        var g = {
                            data: d,
                            xhr: f
                        };
                        y("ParseAjax", g),
                        b.appendContent(a(g.data), I),
                        c.finished = !0,
                        J(),
                        b._setFocus(),
                        setTimeout(function() {
                            b.wrap.addClass(q)
                        }, 16),
                        b.updateStatus("ready"),
                        y("AjaxContentAdded")
                    },
                    error: function() {
                        J(),
                        c.finished = c.loadError = !0,
                        b.updateStatus("error", b.st.ajax.tError.replace("%url%", c.src))
                    }
                }, b.st.ajax.settings);
                return b.req = a.ajax(d),
                ""
            }
        }
    });
    var L, M = function(c) {
        if (c.data && void 0 !== c.data.title)
            return c.data.title;
        var d = b.st.image.titleSrc;
        if (d) {
            if (a.isFunction(d))
                return d.call(b, c);
            if (c.el)
                return c.el.attr(d) || ""
        }
        return ""
    };
    a.magnificPopup.registerModule("image", {
        options: {
            markup: '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',
            cursor: "mfp-zoom-out-cur",
            titleSrc: "title",
            verticalFit: !0,
            tError: '<a href="%url%">The image</a> could not be loaded.'
        },
        proto: {
            initImage: function() {
                var c = b.st.image
                  , d = ".image";
                b.types.push("image"),
                w(m + d, function() {
                    "image" === b.currItem.type && c.cursor && a(document.body).addClass(c.cursor)
                }),
                w(h + d, function() {
                    c.cursor && a(document.body).removeClass(c.cursor),
                    v.off("resize" + p)
                }),
                w("Resize" + d, b.resizeImage),
                b.isLowIE && w("AfterChange", b.resizeImage)
            },
            resizeImage: function() {
                var a = b.currItem;
                if (a && a.img && b.st.image.verticalFit) {
                    var c = 0;
                    b.isLowIE && (c = parseInt(a.img.css("padding-top"), 10) + parseInt(a.img.css("padding-bottom"), 10)),
                    a.img.css("max-height", b.wH - c)
                }
            },
            _onImageHasSize: function(a) {
                a.img && (a.hasSize = !0,
                L && clearInterval(L),
                a.isCheckingImgSize = !1,
                y("ImageHasSize", a),
                a.imgHidden && (b.content && b.content.removeClass("mfp-loading"),
                a.imgHidden = !1))
            },
            findImageSize: function(a) {
                var c = 0
                  , d = a.img[0]
                  , e = function(f) {
                    L && clearInterval(L),
                    L = setInterval(function() {
                        return d.naturalWidth > 0 ? void b._onImageHasSize(a) : (c > 200 && clearInterval(L),
                        c++,
                        void (3 === c ? e(10) : 40 === c ? e(50) : 100 === c && e(500)))
                    }, f)
                };
                e(1)
            },
            getImage: function(c, d) {
                var e = 0
                  , f = function() {
                    c && (c.img[0].complete ? (c.img.off(".mfploader"),
                    c === b.currItem && (b._onImageHasSize(c),
                    b.updateStatus("ready")),
                    c.hasSize = !0,
                    c.loaded = !0,
                    y("ImageLoadComplete")) : (e++,
                    200 > e ? setTimeout(f, 100) : g()))
                }
                  , g = function() {
                    c && (c.img.off(".mfploader"),
                    c === b.currItem && (b._onImageHasSize(c),
                    b.updateStatus("error", h.tError.replace("%url%", c.src))),
                    c.hasSize = !0,
                    c.loaded = !0,
                    c.loadError = !0)
                }
                  , h = b.st.image
                  , i = d.find(".mfp-img");
                if (i.length) {
                    var j = document.createElement("img");
                    j.className = "mfp-img",
                    c.el && c.el.find("img").length && (j.alt = c.el.find("img").attr("alt")),
                    c.img = a(j).on("load.mfploader", f).on("error.mfploader", g),
                    j.src = c.src,
                    i.is("img") && (c.img = c.img.clone()),
                    j = c.img[0],
                    j.naturalWidth > 0 ? c.hasSize = !0 : j.width || (c.hasSize = !1)
                }
                return b._parseMarkup(d, {
                    title: M(c),
                    img_replaceWith: c.img
                }, c),
                b.resizeImage(),
                c.hasSize ? (L && clearInterval(L),
                c.loadError ? (d.addClass("mfp-loading"),
                b.updateStatus("error", h.tError.replace("%url%", c.src))) : (d.removeClass("mfp-loading"),
                b.updateStatus("ready")),
                d) : (b.updateStatus("loading"),
                c.loading = !0,
                c.hasSize || (c.imgHidden = !0,
                d.addClass("mfp-loading"),
                b.findImageSize(c)),
                d)
            }
        }
    });
    var N, O = function() {
        return void 0 === N && (N = void 0 !== document.createElement("p").style.MozTransform),
        N
    };
    a.magnificPopup.registerModule("zoom", {
        options: {
            enabled: !1,
            easing: "ease-in-out",
            duration: 300,
            opener: function(a) {
                return a.is("img") ? a : a.find("img")
            }
        },
        proto: {
            initZoom: function() {
                var a, c = b.st.zoom, d = ".zoom";
                if (c.enabled && b.supportsTransition) {
                    var e, f, g = c.duration, j = function(a) {
                        var b = a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image")
                          , d = "all " + c.duration / 1e3 + "s " + c.easing
                          , e = {
                            position: "fixed",
                            zIndex: 9999,
                            left: 0,
                            top: 0,
                            "-webkit-backface-visibility": "hidden"
                        }
                          , f = "transition";
                        return e["-webkit-" + f] = e["-moz-" + f] = e["-o-" + f] = e[f] = d,
                        b.css(e),
                        b
                    }, k = function() {
                        b.content.css("visibility", "visible")
                    };
                    w("BuildControls" + d, function() {
                        if (b._allowZoom()) {
                            if (clearTimeout(e),
                            b.content.css("visibility", "hidden"),
                            a = b._getItemToZoom(),
                            !a)
                                return void k();
                            f = j(a),
                            f.css(b._getOffset()),
                            b.wrap.append(f),
                            e = setTimeout(function() {
                                f.css(b._getOffset(!0)),
                                e = setTimeout(function() {
                                    k(),
                                    setTimeout(function() {
                                        f.remove(),
                                        a = f = null,
                                        y("ZoomAnimationEnded")
                                    }, 16)
                                }, g)
                            }, 16)
                        }
                    }),
                    w(i + d, function() {
                        if (b._allowZoom()) {
                            if (clearTimeout(e),
                            b.st.removalDelay = g,
                            !a) {
                                if (a = b._getItemToZoom(),
                                !a)
                                    return;
                                f = j(a)
                            }
                            f.css(b._getOffset(!0)),
                            b.wrap.append(f),
                            b.content.css("visibility", "hidden"),
                            setTimeout(function() {
                                f.css(b._getOffset())
                            }, 16)
                        }
                    }),
                    w(h + d, function() {
                        b._allowZoom() && (k(),
                        f && f.remove(),
                        a = null)
                    })
                }
            },
            _allowZoom: function() {
                return "image" === b.currItem.type
            },
            _getItemToZoom: function() {
                return b.currItem.hasSize ? b.currItem.img : !1
            },
            _getOffset: function(c) {
                var d;
                d = c ? b.currItem.img : b.st.zoom.opener(b.currItem.el || b.currItem);
                var e = d.offset()
                  , f = parseInt(d.css("padding-top"), 10)
                  , g = parseInt(d.css("padding-bottom"), 10);
                e.top -= a(window).scrollTop() - f;
                var h = {
                    width: d.width(),
                    height: (u ? d.innerHeight() : d[0].offsetHeight) - g - f
                };
                return O() ? h["-moz-transform"] = h.transform = "translate(" + e.left + "px," + e.top + "px)" : (h.left = e.left,
                h.top = e.top),
                h
            }
        }
    });
    var P = "iframe"
      , Q = "//about:blank"
      , R = function(a) {
        if (b.currTemplate[P]) {
            var c = b.currTemplate[P].find("iframe");
            c.length && (a || (c[0].src = Q),
            b.isIE8 && c.css("display", a ? "block" : "none"))
        }
    };
    a.magnificPopup.registerModule(P, {
        options: {
            markup: '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',
            srcAction: "iframe_src",
            patterns: {
                youtube: {
                    index: "youtube.com",
                    id: "v=",
                    src: "//www.youtube.com/embed/%id%?autoplay=1"
                },
                vimeo: {
                    index: "vimeo.com/",
                    id: "/",
                    src: "//player.vimeo.com/video/%id%?autoplay=1"
                },
                gmaps: {
                    index: "//maps.google.",
                    src: "%id%&output=embed"
                }
            }
        },
        proto: {
            initIframe: function() {
                b.types.push(P),
                w("BeforeChange", function(a, b, c) {
                    b !== c && (b === P ? R() : c === P && R(!0))
                }),
                w(h + "." + P, function() {
                    R()
                })
            },
            getIframe: function(c, d) {
                var e = c.src
                  , f = b.st.iframe;
                a.each(f.patterns, function() {
                    return e.indexOf(this.index) > -1 ? (this.id && (e = "string" == typeof this.id ? e.substr(e.lastIndexOf(this.id) + this.id.length, e.length) : this.id.call(this, e)),
                    e = this.src.replace("%id%", e),
                    !1) : void 0
                });
                var g = {};
                return f.srcAction && (g[f.srcAction] = e),
                b._parseMarkup(d, g, c),
                b.updateStatus("ready"),
                d
            }
        }
    });
    var S = function(a) {
        var c = b.items.length;
        return a > c - 1 ? a - c : 0 > a ? c + a : a
    }
      , T = function(a, b, c) {
        return a.replace(/%curr%/gi, b + 1).replace(/%total%/gi, c)
    };
    a.magnificPopup.registerModule("gallery", {
        options: {
            enabled: !1,
            arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
            preload: [0, 2],
            navigateByImgClick: !0,
            arrows: !0,
            tPrev: "Previous (Left arrow key)",
            tNext: "Next (Right arrow key)",
            tCounter: "%curr% of %total%"
        },
        proto: {
            initGallery: function() {
                var c = b.st.gallery
                  , e = ".mfp-gallery";
                return b.direction = !0,
                c && c.enabled ? (f += " mfp-gallery",
                w(m + e, function() {
                    c.navigateByImgClick && b.wrap.on("click" + e, ".mfp-img", function() {
                        return b.items.length > 1 ? (b.next(),
                        !1) : void 0
                    }),
                    d.on("keydown" + e, function(a) {
                        37 === a.keyCode ? b.prev() : 39 === a.keyCode && b.next()
                    })
                }),
                w("UpdateStatus" + e, function(a, c) {
                    c.text && (c.text = T(c.text, b.currItem.index, b.items.length))
                }),
                w(l + e, function(a, d, e, f) {
                    var g = b.items.length;
                    e.counter = g > 1 ? T(c.tCounter, f.index, g) : ""
                }),
                w("BuildControls" + e, function() {
                    if (b.items.length > 1 && c.arrows && !b.arrowLeft) {
                        var d = c.arrowMarkup
                          , e = b.arrowLeft = a(d.replace(/%title%/gi, c.tPrev).replace(/%dir%/gi, "left")).addClass(s)
                          , f = b.arrowRight = a(d.replace(/%title%/gi, c.tNext).replace(/%dir%/gi, "right")).addClass(s);
                        e.click(function() {
                            b.prev()
                        }),
                        f.click(function() {
                            b.next()
                        }),
                        b.container.append(e.add(f))
                    }
                }),
                w(n + e, function() {
                    b._preloadTimeout && clearTimeout(b._preloadTimeout),
                    b._preloadTimeout = setTimeout(function() {
                        b.preloadNearbyImages(),
                        b._preloadTimeout = null
                    }, 16)
                }),
                void w(h + e, function() {
                    d.off(e),
                    b.wrap.off("click" + e),
                    b.arrowRight = b.arrowLeft = null
                })) : !1
            },
            next: function() {
                b.direction = !0,
                b.index = S(b.index + 1),
                b.updateItemHTML()
            },
            prev: function() {
                b.direction = !1,
                b.index = S(b.index - 1),
                b.updateItemHTML()
            },
            goTo: function(a) {
                b.direction = a >= b.index,
                b.index = a,
                b.updateItemHTML()
            },
            preloadNearbyImages: function() {
                var a, c = b.st.gallery.preload, d = Math.min(c[0], b.items.length), e = Math.min(c[1], b.items.length);
                for (a = 1; a <= (b.direction ? e : d); a++)
                    b._preloadItem(b.index + a);
                for (a = 1; a <= (b.direction ? d : e); a++)
                    b._preloadItem(b.index - a)
            },
            _preloadItem: function(c) {
                if (c = S(c),
                !b.items[c].preloaded) {
                    var d = b.items[c];
                    d.parsed || (d = b.parseEl(c)),
                    y("LazyLoad", d),
                    "image" === d.type && (d.img = a('<img class="mfp-img" />').on("load.mfploader", function() {
                        d.hasSize = !0
                    }).on("error.mfploader", function() {
                        d.hasSize = !0,
                        d.loadError = !0,
                        y("LazyLoadError", d)
                    }).attr("src", d.src)),
                    d.preloaded = !0
                }
            }
        }
    });
    var U = "retina";
    a.magnificPopup.registerModule(U, {
        options: {
            replaceSrc: function(a) {
                return a.src.replace(/\.\w+$/, function(a) {
                    return "@2x" + a
                })
            },
            ratio: 1
        },
        proto: {
            initRetina: function() {
                if (window.devicePixelRatio > 1) {
                    var a = b.st.retina
                      , c = a.ratio;
                    c = isNaN(c) ? c() : c,
                    c > 1 && (w("ImageHasSize." + U, function(a, b) {
                        b.img.css({
                            "max-width": b.img[0].naturalWidth / c,
                            width: "100%"
                        })
                    }),
                    w("ElementParse." + U, function(b, d) {
                        d.src = a.replaceSrc(d, c)
                    }))
                }
            }
        }
    }),
    A()
});
/*!
  * Bootstrap v5.3.3 (https://getbootstrap.com/)
  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = e()
}(this, (function() {
    "use strict";
    const t = new Map
      , e = {
        set(e, i, n) {
            t.has(e) || t.set(e, new Map);
            const s = t.get(e);
            s.has(i) || 0 === s.size ? s.set(i, n) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)
        },
        get: (e, i) => t.has(e) && t.get(e).get(i) || null,
        remove(e, i) {
            if (!t.has(e))
                return;
            const n = t.get(e);
            n.delete(i),
            0 === n.size && t.delete(e)
        }
    }
      , i = "transitionend"
      , n = t => (t && window.CSS && window.CSS.escape && (t = t.replace(/#([^\s"#']+)/g, ( (t, e) => `#${CSS.escape(e)}`))),
    t)
      , s = t => {
        t.dispatchEvent(new Event(i))
    }
      , o = t => !(!t || "object" != typeof t) && (void 0 !== t.jquery && (t = t[0]),
    void 0 !== t.nodeType)
      , r = t => o(t) ? t.jquery ? t[0] : t : "string" == typeof t && t.length > 0 ? document.querySelector(n(t)) : null
      , a = t => {
        if (!o(t) || 0 === t.getClientRects().length)
            return !1;
        const e = "visible" === getComputedStyle(t).getPropertyValue("visibility")
          , i = t.closest("details:not([open])");
        if (!i)
            return e;
        if (i !== t) {
            const e = t.closest("summary");
            if (e && e.parentNode !== i)
                return !1;
            if (null === e)
                return !1
        }
        return e
    }
      , l = t => !t || t.nodeType !== Node.ELEMENT_NODE || !!t.classList.contains("disabled") || (void 0 !== t.disabled ? t.disabled : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled"))
      , c = t => {
        if (!document.documentElement.attachShadow)
            return null;
        if ("function" == typeof t.getRootNode) {
            const e = t.getRootNode();
            return e instanceof ShadowRoot ? e : null
        }
        return t instanceof ShadowRoot ? t : t.parentNode ? c(t.parentNode) : null
    }
      , h = () => {}
      , d = t => {
        t.offsetHeight
    }
      , u = () => window.jQuery && !document.body.hasAttribute("data-bs-no-jquery") ? window.jQuery : null
      , f = []
      , p = () => "rtl" === document.documentElement.dir
      , m = t => {
        var e;
        e = () => {
            const e = u();
            if (e) {
                const i = t.NAME
                  , n = e.fn[i];
                e.fn[i] = t.jQueryInterface,
                e.fn[i].Constructor = t,
                e.fn[i].noConflict = () => (e.fn[i] = n,
                t.jQueryInterface)
            }
        }
        ,
        "loading" === document.readyState ? (f.length || document.addEventListener("DOMContentLoaded", ( () => {
            for (const t of f)
                t()
        }
        )),
        f.push(e)) : e()
    }
      , g = (t, e=[], i=t) => "function" == typeof t ? t(...e) : i
      , _ = (t, e, n=!0) => {
        if (!n)
            return void g(t);
        const o = (t => {
            if (!t)
                return 0;
            let {transitionDuration: e, transitionDelay: i} = window.getComputedStyle(t);
            const n = Number.parseFloat(e)
              , s = Number.parseFloat(i);
            return n || s ? (e = e.split(",")[0],
            i = i.split(",")[0],
            1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) : 0
        }
        )(e) + 5;
        let r = !1;
        const a = ({target: n}) => {
            n === e && (r = !0,
            e.removeEventListener(i, a),
            g(t))
        }
        ;
        e.addEventListener(i, a),
        setTimeout(( () => {
            r || s(e)
        }
        ), o)
    }
      , b = (t, e, i, n) => {
        const s = t.length;
        let o = t.indexOf(e);
        return -1 === o ? !i && n ? t[s - 1] : t[0] : (o += i ? 1 : -1,
        n && (o = (o + s) % s),
        t[Math.max(0, Math.min(o, s - 1))])
    }
      , v = /[^.]*(?=\..*)\.|.*/
      , y = /\..*/
      , w = /::\d+$/
      , A = {};
    let E = 1;
    const T = {
        mouseenter: "mouseover",
        mouseleave: "mouseout"
    }
      , C = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]);
    function O(t, e) {
        return e && `${e}::${E++}` || t.uidEvent || E++
    }
    function x(t) {
        const e = O(t);
        return t.uidEvent = e,
        A[e] = A[e] || {},
        A[e]
    }
    function k(t, e, i=null) {
        return Object.values(t).find((t => t.callable === e && t.delegationSelector === i))
    }
    function L(t, e, i) {
        const n = "string" == typeof e
          , s = n ? i : e || i;
        let o = I(t);
        return C.has(o) || (o = t),
        [n, s, o]
    }
    function S(t, e, i, n, s) {
        if ("string" != typeof e || !t)
            return;
        let[o,r,a] = L(e, i, n);
        if (e in T) {
            const t = t => function(e) {
                if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget))
                    return t.call(this, e)
            }
            ;
            r = t(r)
        }
        const l = x(t)
          , c = l[a] || (l[a] = {})
          , h = k(c, r, o ? i : null);
        if (h)
            return void (h.oneOff = h.oneOff && s);
        const d = O(r, e.replace(v, ""))
          , u = o ? function(t, e, i) {
            return function n(s) {
                const o = t.querySelectorAll(e);
                for (let {target: r} = s; r && r !== this; r = r.parentNode)
                    for (const a of o)
                        if (a === r)
                            return P(s, {
                                delegateTarget: r
                            }),
                            n.oneOff && N.off(t, s.type, e, i),
                            i.apply(r, [s])
            }
        }(t, i, r) : function(t, e) {
            return function i(n) {
                return P(n, {
                    delegateTarget: t
                }),
                i.oneOff && N.off(t, n.type, e),
                e.apply(t, [n])
            }
        }(t, r);
        u.delegationSelector = o ? i : null,
        u.callable = r,
        u.oneOff = s,
        u.uidEvent = d,
        c[d] = u,
        t.addEventListener(a, u, o)
    }
    function D(t, e, i, n, s) {
        const o = k(e[i], n, s);
        o && (t.removeEventListener(i, o, Boolean(s)),
        delete e[i][o.uidEvent])
    }
    function $(t, e, i, n) {
        const s = e[i] || {};
        for (const [o,r] of Object.entries(s))
            o.includes(n) && D(t, e, i, r.callable, r.delegationSelector)
    }
    function I(t) {
        return t = t.replace(y, ""),
        T[t] || t
    }
    const N = {
        on(t, e, i, n) {
            S(t, e, i, n, !1)
        },
        one(t, e, i, n) {
            S(t, e, i, n, !0)
        },
        off(t, e, i, n) {
            if ("string" != typeof e || !t)
                return;
            const [s,o,r] = L(e, i, n)
              , a = r !== e
              , l = x(t)
              , c = l[r] || {}
              , h = e.startsWith(".");
            if (void 0 === o) {
                if (h)
                    for (const i of Object.keys(l))
                        $(t, l, i, e.slice(1));
                for (const [i,n] of Object.entries(c)) {
                    const s = i.replace(w, "");
                    a && !e.includes(s) || D(t, l, r, n.callable, n.delegationSelector)
                }
            } else {
                if (!Object.keys(c).length)
                    return;
                D(t, l, r, o, s ? i : null)
            }
        },
        trigger(t, e, i) {
            if ("string" != typeof e || !t)
                return null;
            const n = u();
            let s = null
              , o = !0
              , r = !0
              , a = !1;
            e !== I(e) && n && (s = n.Event(e, i),
            n(t).trigger(s),
            o = !s.isPropagationStopped(),
            r = !s.isImmediatePropagationStopped(),
            a = s.isDefaultPrevented());
            const l = P(new Event(e,{
                bubbles: o,
                cancelable: !0
            }), i);
            return a && l.preventDefault(),
            r && t.dispatchEvent(l),
            l.defaultPrevented && s && s.preventDefault(),
            l
        }
    };
    function P(t, e={}) {
        for (const [i,n] of Object.entries(e))
            try {
                t[i] = n
            } catch (e) {
                Object.defineProperty(t, i, {
                    configurable: !0,
                    get: () => n
                })
            }
        return t
    }
    function j(t) {
        if ("true" === t)
            return !0;
        if ("false" === t)
            return !1;
        if (t === Number(t).toString())
            return Number(t);
        if ("" === t || "null" === t)
            return null;
        if ("string" != typeof t)
            return t;
        try {
            return JSON.parse(decodeURIComponent(t))
        } catch (e) {
            return t
        }
    }
    function M(t) {
        return t.replace(/[A-Z]/g, (t => `-${t.toLowerCase()}`))
    }
    const F = {
        setDataAttribute(t, e, i) {
            t.setAttribute(`data-bs-${M(e)}`, i)
        },
        removeDataAttribute(t, e) {
            t.removeAttribute(`data-bs-${M(e)}`)
        },
        getDataAttributes(t) {
            if (!t)
                return {};
            const e = {}
              , i = Object.keys(t.dataset).filter((t => t.startsWith("bs") && !t.startsWith("bsConfig")));
            for (const n of i) {
                let i = n.replace(/^bs/, "");
                i = i.charAt(0).toLowerCase() + i.slice(1, i.length),
                e[i] = j(t.dataset[n])
            }
            return e
        },
        getDataAttribute: (t, e) => j(t.getAttribute(`data-bs-${M(e)}`))
    };
    class H {
        static get Default() {
            return {}
        }
        static get DefaultType() {
            return {}
        }
        static get NAME() {
            throw new Error('You have to implement the static method "NAME", for each component!')
        }
        _getConfig(t) {
            return t = this._mergeConfigObj(t),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        _configAfterMerge(t) {
            return t
        }
        _mergeConfigObj(t, e) {
            const i = o(e) ? F.getDataAttribute(e, "config") : {};
            return {
                ...this.constructor.Default,
                ..."object" == typeof i ? i : {},
                ...o(e) ? F.getDataAttributes(e) : {},
                ..."object" == typeof t ? t : {}
            }
        }
        _typeCheckConfig(t, e=this.constructor.DefaultType) {
            for (const [n,s] of Object.entries(e)) {
                const e = t[n]
                  , r = o(e) ? "element" : null == (i = e) ? `${i}` : Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();
                if (!new RegExp(s).test(r))
                    throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)
            }
            var i
        }
    }
    class W extends H {
        constructor(t, i) {
            super(),
            (t = r(t)) && (this._element = t,
            this._config = this._getConfig(i),
            e.set(this._element, this.constructor.DATA_KEY, this))
        }
        dispose() {
            e.remove(this._element, this.constructor.DATA_KEY),
            N.off(this._element, this.constructor.EVENT_KEY);
            for (const t of Object.getOwnPropertyNames(this))
                this[t] = null
        }
        _queueCallback(t, e, i=!0) {
            _(t, e, i)
        }
        _getConfig(t) {
            return t = this._mergeConfigObj(t, this._element),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        static getInstance(t) {
            return e.get(r(t), this.DATA_KEY)
        }
        static getOrCreateInstance(t, e={}) {
            return this.getInstance(t) || new this(t,"object" == typeof e ? e : null)
        }
        static get VERSION() {
            return "5.3.3"
        }
        static get DATA_KEY() {
            return `bs.${this.NAME}`
        }
        static get EVENT_KEY() {
            return `.${this.DATA_KEY}`
        }
        static eventName(t) {
            return `${t}${this.EVENT_KEY}`
        }
    }
    const B = t => {
        let e = t.getAttribute("data-bs-target");
        if (!e || "#" === e) {
            let i = t.getAttribute("href");
            if (!i || !i.includes("#") && !i.startsWith("."))
                return null;
            i.includes("#") && !i.startsWith("#") && (i = `#${i.split("#")[1]}`),
            e = i && "#" !== i ? i.trim() : null
        }
        return e ? e.split(",").map((t => n(t))).join(",") : null
    }
      , z = {
        find: (t, e=document.documentElement) => [].concat(...Element.prototype.querySelectorAll.call(e, t)),
        findOne: (t, e=document.documentElement) => Element.prototype.querySelector.call(e, t),
        children: (t, e) => [].concat(...t.children).filter((t => t.matches(e))),
        parents(t, e) {
            const i = [];
            let n = t.parentNode.closest(e);
            for (; n; )
                i.push(n),
                n = n.parentNode.closest(e);
            return i
        },
        prev(t, e) {
            let i = t.previousElementSibling;
            for (; i; ) {
                if (i.matches(e))
                    return [i];
                i = i.previousElementSibling
            }
            return []
        },
        next(t, e) {
            let i = t.nextElementSibling;
            for (; i; ) {
                if (i.matches(e))
                    return [i];
                i = i.nextElementSibling
            }
            return []
        },
        focusableChildren(t) {
            const e = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((t => `${t}:not([tabindex^="-"])`)).join(",");
            return this.find(e, t).filter((t => !l(t) && a(t)))
        },
        getSelectorFromElement(t) {
            const e = B(t);
            return e && z.findOne(e) ? e : null
        },
        getElementFromSelector(t) {
            const e = B(t);
            return e ? z.findOne(e) : null
        },
        getMultipleElementsFromSelector(t) {
            const e = B(t);
            return e ? z.find(e) : []
        }
    }
      , R = (t, e="hide") => {
        const i = `click.dismiss${t.EVENT_KEY}`
          , n = t.NAME;
        N.on(document, i, `[data-bs-dismiss="${n}"]`, (function(i) {
            if (["A", "AREA"].includes(this.tagName) && i.preventDefault(),
            l(this))
                return;
            const s = z.getElementFromSelector(this) || this.closest(`.${n}`);
            t.getOrCreateInstance(s)[e]()
        }
        ))
    }
      , q = ".bs.alert"
      , V = `close${q}`
      , K = `closed${q}`;
    class Q extends W {
        static get NAME() {
            return "alert"
        }
        close() {
            if (N.trigger(this._element, V).defaultPrevented)
                return;
            this._element.classList.remove("show");
            const t = this._element.classList.contains("fade");
            this._queueCallback(( () => this._destroyElement()), this._element, t)
        }
        _destroyElement() {
            this._element.remove(),
            N.trigger(this._element, K),
            this.dispose()
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = Q.getOrCreateInstance(this);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    R(Q, "close"),
    m(Q);
    const X = '[data-bs-toggle="button"]';
    class Y extends W {
        static get NAME() {
            return "button"
        }
        toggle() {
            this._element.setAttribute("aria-pressed", this._element.classList.toggle("active"))
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = Y.getOrCreateInstance(this);
                "toggle" === t && e[t]()
            }
            ))
        }
    }
    N.on(document, "click.bs.button.data-api", X, (t => {
        t.preventDefault();
        const e = t.target.closest(X);
        Y.getOrCreateInstance(e).toggle()
    }
    )),
    m(Y);
    const U = ".bs.swipe"
      , G = `touchstart${U}`
      , J = `touchmove${U}`
      , Z = `touchend${U}`
      , tt = `pointerdown${U}`
      , et = `pointerup${U}`
      , it = {
        endCallback: null,
        leftCallback: null,
        rightCallback: null
    }
      , nt = {
        endCallback: "(function|null)",
        leftCallback: "(function|null)",
        rightCallback: "(function|null)"
    };
    class st extends H {
        constructor(t, e) {
            super(),
            this._element = t,
            t && st.isSupported() && (this._config = this._getConfig(e),
            this._deltaX = 0,
            this._supportPointerEvents = Boolean(window.PointerEvent),
            this._initEvents())
        }
        static get Default() {
            return it
        }
        static get DefaultType() {
            return nt
        }
        static get NAME() {
            return "swipe"
        }
        dispose() {
            N.off(this._element, U)
        }
        _start(t) {
            this._supportPointerEvents ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX) : this._deltaX = t.touches[0].clientX
        }
        _end(t) {
            this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX - this._deltaX),
            this._handleSwipe(),
            g(this._config.endCallback)
        }
        _move(t) {
            this._deltaX = t.touches && t.touches.length > 1 ? 0 : t.touches[0].clientX - this._deltaX
        }
        _handleSwipe() {
            const t = Math.abs(this._deltaX);
            if (t <= 40)
                return;
            const e = t / this._deltaX;
            this._deltaX = 0,
            e && g(e > 0 ? this._config.rightCallback : this._config.leftCallback)
        }
        _initEvents() {
            this._supportPointerEvents ? (N.on(this._element, tt, (t => this._start(t))),
            N.on(this._element, et, (t => this._end(t))),
            this._element.classList.add("pointer-event")) : (N.on(this._element, G, (t => this._start(t))),
            N.on(this._element, J, (t => this._move(t))),
            N.on(this._element, Z, (t => this._end(t))))
        }
        _eventIsPointerPenTouch(t) {
            return this._supportPointerEvents && ("pen" === t.pointerType || "touch" === t.pointerType)
        }
        static isSupported() {
            return "ontouchstart"in document.documentElement || navigator.maxTouchPoints > 0
        }
    }
    const ot = ".bs.carousel"
      , rt = ".data-api"
      , at = "next"
      , lt = "prev"
      , ct = "left"
      , ht = "right"
      , dt = `slide${ot}`
      , ut = `slid${ot}`
      , ft = `keydown${ot}`
      , pt = `mouseenter${ot}`
      , mt = `mouseleave${ot}`
      , gt = `dragstart${ot}`
      , _t = `load${ot}${rt}`
      , bt = `click${ot}${rt}`
      , vt = "carousel"
      , yt = "active"
      , wt = ".active"
      , At = ".carousel-item"
      , Et = wt + At
      , Tt = {
        ArrowLeft: ht,
        ArrowRight: ct
    }
      , Ct = {
        interval: 5e3,
        keyboard: !0,
        pause: "hover",
        ride: !1,
        touch: !0,
        wrap: !0
    }
      , Ot = {
        interval: "(number|boolean)",
        keyboard: "boolean",
        pause: "(string|boolean)",
        ride: "(boolean|string)",
        touch: "boolean",
        wrap: "boolean"
    };
    class xt extends W {
        constructor(t, e) {
            super(t, e),
            this._interval = null,
            this._activeElement = null,
            this._isSliding = !1,
            this.touchTimeout = null,
            this._swipeHelper = null,
            this._indicatorsElement = z.findOne(".carousel-indicators", this._element),
            this._addEventListeners(),
            this._config.ride === vt && this.cycle()
        }
        static get Default() {
            return Ct
        }
        static get DefaultType() {
            return Ot
        }
        static get NAME() {
            return "carousel"
        }
        next() {
            this._slide(at)
        }
        nextWhenVisible() {
            !document.hidden && a(this._element) && this.next()
        }
        prev() {
            this._slide(lt)
        }
        pause() {
            this._isSliding && s(this._element),
            this._clearInterval()
        }
        cycle() {
            this._clearInterval(),
            this._updateInterval(),
            this._interval = setInterval(( () => this.nextWhenVisible()), this._config.interval)
        }
        _maybeEnableCycle() {
            this._config.ride && (this._isSliding ? N.one(this._element, ut, ( () => this.cycle())) : this.cycle())
        }
        to(t) {
            const e = this._getItems();
            if (t > e.length - 1 || t < 0)
                return;
            if (this._isSliding)
                return void N.one(this._element, ut, ( () => this.to(t)));
            const i = this._getItemIndex(this._getActive());
            if (i === t)
                return;
            const n = t > i ? at : lt;
            this._slide(n, e[t])
        }
        dispose() {
            this._swipeHelper && this._swipeHelper.dispose(),
            super.dispose()
        }
        _configAfterMerge(t) {
            return t.defaultInterval = t.interval,
            t
        }
        _addEventListeners() {
            this._config.keyboard && N.on(this._element, ft, (t => this._keydown(t))),
            "hover" === this._config.pause && (N.on(this._element, pt, ( () => this.pause())),
            N.on(this._element, mt, ( () => this._maybeEnableCycle()))),
            this._config.touch && st.isSupported() && this._addTouchEventListeners()
        }
        _addTouchEventListeners() {
            for (const t of z.find(".carousel-item img", this._element))
                N.on(t, gt, (t => t.preventDefault()));
            const t = {
                leftCallback: () => this._slide(this._directionToOrder(ct)),
                rightCallback: () => this._slide(this._directionToOrder(ht)),
                endCallback: () => {
                    "hover" === this._config.pause && (this.pause(),
                    this.touchTimeout && clearTimeout(this.touchTimeout),
                    this.touchTimeout = setTimeout(( () => this._maybeEnableCycle()), 500 + this._config.interval))
                }
            };
            this._swipeHelper = new st(this._element,t)
        }
        _keydown(t) {
            if (/input|textarea/i.test(t.target.tagName))
                return;
            const e = Tt[t.key];
            e && (t.preventDefault(),
            this._slide(this._directionToOrder(e)))
        }
        _getItemIndex(t) {
            return this._getItems().indexOf(t)
        }
        _setActiveIndicatorElement(t) {
            if (!this._indicatorsElement)
                return;
            const e = z.findOne(wt, this._indicatorsElement);
            e.classList.remove(yt),
            e.removeAttribute("aria-current");
            const i = z.findOne(`[data-bs-slide-to="${t}"]`, this._indicatorsElement);
            i && (i.classList.add(yt),
            i.setAttribute("aria-current", "true"))
        }
        _updateInterval() {
            const t = this._activeElement || this._getActive();
            if (!t)
                return;
            const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10);
            this._config.interval = e || this._config.defaultInterval
        }
        _slide(t, e=null) {
            if (this._isSliding)
                return;
            const i = this._getActive()
              , n = t === at
              , s = e || b(this._getItems(), i, n, this._config.wrap);
            if (s === i)
                return;
            const o = this._getItemIndex(s)
              , r = e => N.trigger(this._element, e, {
                relatedTarget: s,
                direction: this._orderToDirection(t),
                from: this._getItemIndex(i),
                to: o
            });
            if (r(dt).defaultPrevented)
                return;
            if (!i || !s)
                return;
            const a = Boolean(this._interval);
            this.pause(),
            this._isSliding = !0,
            this._setActiveIndicatorElement(o),
            this._activeElement = s;
            const l = n ? "carousel-item-start" : "carousel-item-end"
              , c = n ? "carousel-item-next" : "carousel-item-prev";
            s.classList.add(c),
            d(s),
            i.classList.add(l),
            s.classList.add(l),
            this._queueCallback(( () => {
                s.classList.remove(l, c),
                s.classList.add(yt),
                i.classList.remove(yt, c, l),
                this._isSliding = !1,
                r(ut)
            }
            ), i, this._isAnimated()),
            a && this.cycle()
        }
        _isAnimated() {
            return this._element.classList.contains("slide")
        }
        _getActive() {
            return z.findOne(Et, this._element)
        }
        _getItems() {
            return z.find(At, this._element)
        }
        _clearInterval() {
            this._interval && (clearInterval(this._interval),
            this._interval = null)
        }
        _directionToOrder(t) {
            return p() ? t === ct ? lt : at : t === ct ? at : lt
        }
        _orderToDirection(t) {
            return p() ? t === lt ? ct : ht : t === lt ? ht : ct
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = xt.getOrCreateInstance(this, t);
                if ("number" != typeof t) {
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                            throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                } else
                    e.to(t)
            }
            ))
        }
    }
    N.on(document, bt, "[data-bs-slide], [data-bs-slide-to]", (function(t) {
        const e = z.getElementFromSelector(this);
        if (!e || !e.classList.contains(vt))
            return;
        t.preventDefault();
        const i = xt.getOrCreateInstance(e)
          , n = this.getAttribute("data-bs-slide-to");
        return n ? (i.to(n),
        void i._maybeEnableCycle()) : "next" === F.getDataAttribute(this, "slide") ? (i.next(),
        void i._maybeEnableCycle()) : (i.prev(),
        void i._maybeEnableCycle())
    }
    )),
    N.on(window, _t, ( () => {
        const t = z.find('[data-bs-ride="carousel"]');
        for (const e of t)
            xt.getOrCreateInstance(e)
    }
    )),
    m(xt);
    const kt = ".bs.collapse"
      , Lt = `show${kt}`
      , St = `shown${kt}`
      , Dt = `hide${kt}`
      , $t = `hidden${kt}`
      , It = `click${kt}.data-api`
      , Nt = "show"
      , Pt = "collapse"
      , jt = "collapsing"
      , Mt = `:scope .${Pt} .${Pt}`
      , Ft = '[data-bs-toggle="collapse"]'
      , Ht = {
        parent: null,
        toggle: !0
    }
      , Wt = {
        parent: "(null|element)",
        toggle: "boolean"
    };
    class Bt extends W {
        constructor(t, e) {
            super(t, e),
            this._isTransitioning = !1,
            this._triggerArray = [];
            const i = z.find(Ft);
            for (const t of i) {
                const e = z.getSelectorFromElement(t)
                  , i = z.find(e).filter((t => t === this._element));
                null !== e && i.length && this._triggerArray.push(t)
            }
            this._initializeChildren(),
            this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
            this._config.toggle && this.toggle()
        }
        static get Default() {
            return Ht
        }
        static get DefaultType() {
            return Wt
        }
        static get NAME() {
            return "collapse"
        }
        toggle() {
            this._isShown() ? this.hide() : this.show()
        }
        show() {
            if (this._isTransitioning || this._isShown())
                return;
            let t = [];
            if (this._config.parent && (t = this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t => t !== this._element)).map((t => Bt.getOrCreateInstance(t, {
                toggle: !1
            })))),
            t.length && t[0]._isTransitioning)
                return;
            if (N.trigger(this._element, Lt).defaultPrevented)
                return;
            for (const e of t)
                e.hide();
            const e = this._getDimension();
            this._element.classList.remove(Pt),
            this._element.classList.add(jt),
            this._element.style[e] = 0,
            this._addAriaAndCollapsedClass(this._triggerArray, !0),
            this._isTransitioning = !0;
            const i = `scroll${e[0].toUpperCase() + e.slice(1)}`;
            this._queueCallback(( () => {
                this._isTransitioning = !1,
                this._element.classList.remove(jt),
                this._element.classList.add(Pt, Nt),
                this._element.style[e] = "",
                N.trigger(this._element, St)
            }
            ), this._element, !0),
            this._element.style[e] = `${this._element[i]}px`
        }
        hide() {
            if (this._isTransitioning || !this._isShown())
                return;
            if (N.trigger(this._element, Dt).defaultPrevented)
                return;
            const t = this._getDimension();
            this._element.style[t] = `${this._element.getBoundingClientRect()[t]}px`,
            d(this._element),
            this._element.classList.add(jt),
            this._element.classList.remove(Pt, Nt);
            for (const t of this._triggerArray) {
                const e = z.getElementFromSelector(t);
                e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1)
            }
            this._isTransitioning = !0,
            this._element.style[t] = "",
            this._queueCallback(( () => {
                this._isTransitioning = !1,
                this._element.classList.remove(jt),
                this._element.classList.add(Pt),
                N.trigger(this._element, $t)
            }
            ), this._element, !0)
        }
        _isShown(t=this._element) {
            return t.classList.contains(Nt)
        }
        _configAfterMerge(t) {
            return t.toggle = Boolean(t.toggle),
            t.parent = r(t.parent),
            t
        }
        _getDimension() {
            return this._element.classList.contains("collapse-horizontal") ? "width" : "height"
        }
        _initializeChildren() {
            if (!this._config.parent)
                return;
            const t = this._getFirstLevelChildren(Ft);
            for (const e of t) {
                const t = z.getElementFromSelector(e);
                t && this._addAriaAndCollapsedClass([e], this._isShown(t))
            }
        }
        _getFirstLevelChildren(t) {
            const e = z.find(Mt, this._config.parent);
            return z.find(t, this._config.parent).filter((t => !e.includes(t)))
        }
        _addAriaAndCollapsedClass(t, e) {
            if (t.length)
                for (const i of t)
                    i.classList.toggle("collapsed", !e),
                    i.setAttribute("aria-expanded", e)
        }
        static jQueryInterface(t) {
            const e = {};
            return "string" == typeof t && /show|hide/.test(t) && (e.toggle = !1),
            this.each((function() {
                const i = Bt.getOrCreateInstance(this, e);
                if ("string" == typeof t) {
                    if (void 0 === i[t])
                        throw new TypeError(`No method named "${t}"`);
                    i[t]()
                }
            }
            ))
        }
    }
    N.on(document, It, Ft, (function(t) {
        ("A" === t.target.tagName || t.delegateTarget && "A" === t.delegateTarget.tagName) && t.preventDefault();
        for (const t of z.getMultipleElementsFromSelector(this))
            Bt.getOrCreateInstance(t, {
                toggle: !1
            }).toggle()
    }
    )),
    m(Bt);
    var zt = "top"
      , Rt = "bottom"
      , qt = "right"
      , Vt = "left"
      , Kt = "auto"
      , Qt = [zt, Rt, qt, Vt]
      , Xt = "start"
      , Yt = "end"
      , Ut = "clippingParents"
      , Gt = "viewport"
      , Jt = "popper"
      , Zt = "reference"
      , te = Qt.reduce((function(t, e) {
        return t.concat([e + "-" + Xt, e + "-" + Yt])
    }
    ), [])
      , ee = [].concat(Qt, [Kt]).reduce((function(t, e) {
        return t.concat([e, e + "-" + Xt, e + "-" + Yt])
    }
    ), [])
      , ie = "beforeRead"
      , ne = "read"
      , se = "afterRead"
      , oe = "beforeMain"
      , re = "main"
      , ae = "afterMain"
      , le = "beforeWrite"
      , ce = "write"
      , he = "afterWrite"
      , de = [ie, ne, se, oe, re, ae, le, ce, he];
    function ue(t) {
        return t ? (t.nodeName || "").toLowerCase() : null
    }
    function fe(t) {
        if (null == t)
            return window;
        if ("[object Window]" !== t.toString()) {
            var e = t.ownerDocument;
            return e && e.defaultView || window
        }
        return t
    }
    function pe(t) {
        return t instanceof fe(t).Element || t instanceof Element
    }
    function me(t) {
        return t instanceof fe(t).HTMLElement || t instanceof HTMLElement
    }
    function ge(t) {
        return "undefined" != typeof ShadowRoot && (t instanceof fe(t).ShadowRoot || t instanceof ShadowRoot)
    }
    const _e = {
        name: "applyStyles",
        enabled: !0,
        phase: "write",
        fn: function(t) {
            var e = t.state;
            Object.keys(e.elements).forEach((function(t) {
                var i = e.styles[t] || {}
                  , n = e.attributes[t] || {}
                  , s = e.elements[t];
                me(s) && ue(s) && (Object.assign(s.style, i),
                Object.keys(n).forEach((function(t) {
                    var e = n[t];
                    !1 === e ? s.removeAttribute(t) : s.setAttribute(t, !0 === e ? "" : e)
                }
                )))
            }
            ))
        },
        effect: function(t) {
            var e = t.state
              , i = {
                popper: {
                    position: e.options.strategy,
                    left: "0",
                    top: "0",
                    margin: "0"
                },
                arrow: {
                    position: "absolute"
                },
                reference: {}
            };
            return Object.assign(e.elements.popper.style, i.popper),
            e.styles = i,
            e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow),
            function() {
                Object.keys(e.elements).forEach((function(t) {
                    var n = e.elements[t]
                      , s = e.attributes[t] || {}
                      , o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function(t, e) {
                        return t[e] = "",
                        t
                    }
                    ), {});
                    me(n) && ue(n) && (Object.assign(n.style, o),
                    Object.keys(s).forEach((function(t) {
                        n.removeAttribute(t)
                    }
                    )))
                }
                ))
            }
        },
        requires: ["computeStyles"]
    };
    function be(t) {
        return t.split("-")[0]
    }
    var ve = Math.max
      , ye = Math.min
      , we = Math.round;
    function Ae() {
        var t = navigator.userAgentData;
        return null != t && t.brands && Array.isArray(t.brands) ? t.brands.map((function(t) {
            return t.brand + "/" + t.version
        }
        )).join(" ") : navigator.userAgent
    }
    function Ee() {
        return !/^((?!chrome|android).)*safari/i.test(Ae())
    }
    function Te(t, e, i) {
        void 0 === e && (e = !1),
        void 0 === i && (i = !1);
        var n = t.getBoundingClientRect()
          , s = 1
          , o = 1;
        e && me(t) && (s = t.offsetWidth > 0 && we(n.width) / t.offsetWidth || 1,
        o = t.offsetHeight > 0 && we(n.height) / t.offsetHeight || 1);
        var r = (pe(t) ? fe(t) : window).visualViewport
          , a = !Ee() && i
          , l = (n.left + (a && r ? r.offsetLeft : 0)) / s
          , c = (n.top + (a && r ? r.offsetTop : 0)) / o
          , h = n.width / s
          , d = n.height / o;
        return {
            width: h,
            height: d,
            top: c,
            right: l + h,
            bottom: c + d,
            left: l,
            x: l,
            y: c
        }
    }
    function Ce(t) {
        var e = Te(t)
          , i = t.offsetWidth
          , n = t.offsetHeight;
        return Math.abs(e.width - i) <= 1 && (i = e.width),
        Math.abs(e.height - n) <= 1 && (n = e.height),
        {
            x: t.offsetLeft,
            y: t.offsetTop,
            width: i,
            height: n
        }
    }
    function Oe(t, e) {
        var i = e.getRootNode && e.getRootNode();
        if (t.contains(e))
            return !0;
        if (i && ge(i)) {
            var n = e;
            do {
                if (n && t.isSameNode(n))
                    return !0;
                n = n.parentNode || n.host
            } while (n)
        }
        return !1
    }
    function xe(t) {
        return fe(t).getComputedStyle(t)
    }
    function ke(t) {
        return ["table", "td", "th"].indexOf(ue(t)) >= 0
    }
    function Le(t) {
        return ((pe(t) ? t.ownerDocument : t.document) || window.document).documentElement
    }
    function Se(t) {
        return "html" === ue(t) ? t : t.assignedSlot || t.parentNode || (ge(t) ? t.host : null) || Le(t)
    }
    function De(t) {
        return me(t) && "fixed" !== xe(t).position ? t.offsetParent : null
    }
    function $e(t) {
        for (var e = fe(t), i = De(t); i && ke(i) && "static" === xe(i).position; )
            i = De(i);
        return i && ("html" === ue(i) || "body" === ue(i) && "static" === xe(i).position) ? e : i || function(t) {
            var e = /firefox/i.test(Ae());
            if (/Trident/i.test(Ae()) && me(t) && "fixed" === xe(t).position)
                return null;
            var i = Se(t);
            for (ge(i) && (i = i.host); me(i) && ["html", "body"].indexOf(ue(i)) < 0; ) {
                var n = xe(i);
                if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || e && "filter" === n.willChange || e && n.filter && "none" !== n.filter)
                    return i;
                i = i.parentNode
            }
            return null
        }(t) || e
    }
    function Ie(t) {
        return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"
    }
    function Ne(t, e, i) {
        return ve(t, ye(e, i))
    }
    function Pe(t) {
        return Object.assign({}, {
            top: 0,
            right: 0,
            bottom: 0,
            left: 0
        }, t)
    }
    function je(t, e) {
        return e.reduce((function(e, i) {
            return e[i] = t,
            e
        }
        ), {})
    }
    const Me = {
        name: "arrow",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e, i = t.state, n = t.name, s = t.options, o = i.elements.arrow, r = i.modifiersData.popperOffsets, a = be(i.placement), l = Ie(a), c = [Vt, qt].indexOf(a) >= 0 ? "height" : "width";
            if (o && r) {
                var h = function(t, e) {
                    return Pe("number" != typeof (t = "function" == typeof t ? t(Object.assign({}, e.rects, {
                        placement: e.placement
                    })) : t) ? t : je(t, Qt))
                }(s.padding, i)
                  , d = Ce(o)
                  , u = "y" === l ? zt : Vt
                  , f = "y" === l ? Rt : qt
                  , p = i.rects.reference[c] + i.rects.reference[l] - r[l] - i.rects.popper[c]
                  , m = r[l] - i.rects.reference[l]
                  , g = $e(o)
                  , _ = g ? "y" === l ? g.clientHeight || 0 : g.clientWidth || 0 : 0
                  , b = p / 2 - m / 2
                  , v = h[u]
                  , y = _ - d[c] - h[f]
                  , w = _ / 2 - d[c] / 2 + b
                  , A = Ne(v, w, y)
                  , E = l;
                i.modifiersData[n] = ((e = {})[E] = A,
                e.centerOffset = A - w,
                e)
            }
        },
        effect: function(t) {
            var e = t.state
              , i = t.options.element
              , n = void 0 === i ? "[data-popper-arrow]" : i;
            null != n && ("string" != typeof n || (n = e.elements.popper.querySelector(n))) && Oe(e.elements.popper, n) && (e.elements.arrow = n)
        },
        requires: ["popperOffsets"],
        requiresIfExists: ["preventOverflow"]
    };
    function Fe(t) {
        return t.split("-")[1]
    }
    var He = {
        top: "auto",
        right: "auto",
        bottom: "auto",
        left: "auto"
    };
    function We(t) {
        var e, i = t.popper, n = t.popperRect, s = t.placement, o = t.variation, r = t.offsets, a = t.position, l = t.gpuAcceleration, c = t.adaptive, h = t.roundOffsets, d = t.isFixed, u = r.x, f = void 0 === u ? 0 : u, p = r.y, m = void 0 === p ? 0 : p, g = "function" == typeof h ? h({
            x: f,
            y: m
        }) : {
            x: f,
            y: m
        };
        f = g.x,
        m = g.y;
        var _ = r.hasOwnProperty("x")
          , b = r.hasOwnProperty("y")
          , v = Vt
          , y = zt
          , w = window;
        if (c) {
            var A = $e(i)
              , E = "clientHeight"
              , T = "clientWidth";
            A === fe(i) && "static" !== xe(A = Le(i)).position && "absolute" === a && (E = "scrollHeight",
            T = "scrollWidth"),
            (s === zt || (s === Vt || s === qt) && o === Yt) && (y = Rt,
            m -= (d && A === w && w.visualViewport ? w.visualViewport.height : A[E]) - n.height,
            m *= l ? 1 : -1),
            s !== Vt && (s !== zt && s !== Rt || o !== Yt) || (v = qt,
            f -= (d && A === w && w.visualViewport ? w.visualViewport.width : A[T]) - n.width,
            f *= l ? 1 : -1)
        }
        var C, O = Object.assign({
            position: a
        }, c && He), x = !0 === h ? function(t, e) {
            var i = t.x
              , n = t.y
              , s = e.devicePixelRatio || 1;
            return {
                x: we(i * s) / s || 0,
                y: we(n * s) / s || 0
            }
        }({
            x: f,
            y: m
        }, fe(i)) : {
            x: f,
            y: m
        };
        return f = x.x,
        m = x.y,
        l ? Object.assign({}, O, ((C = {})[y] = b ? "0" : "",
        C[v] = _ ? "0" : "",
        C.transform = (w.devicePixelRatio || 1) <= 1 ? "translate(" + f + "px, " + m + "px)" : "translate3d(" + f + "px, " + m + "px, 0)",
        C)) : Object.assign({}, O, ((e = {})[y] = b ? m + "px" : "",
        e[v] = _ ? f + "px" : "",
        e.transform = "",
        e))
    }
    const Be = {
        name: "computeStyles",
        enabled: !0,
        phase: "beforeWrite",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = i.gpuAcceleration
              , s = void 0 === n || n
              , o = i.adaptive
              , r = void 0 === o || o
              , a = i.roundOffsets
              , l = void 0 === a || a
              , c = {
                placement: be(e.placement),
                variation: Fe(e.placement),
                popper: e.elements.popper,
                popperRect: e.rects.popper,
                gpuAcceleration: s,
                isFixed: "fixed" === e.options.strategy
            };
            null != e.modifiersData.popperOffsets && (e.styles.popper = Object.assign({}, e.styles.popper, We(Object.assign({}, c, {
                offsets: e.modifiersData.popperOffsets,
                position: e.options.strategy,
                adaptive: r,
                roundOffsets: l
            })))),
            null != e.modifiersData.arrow && (e.styles.arrow = Object.assign({}, e.styles.arrow, We(Object.assign({}, c, {
                offsets: e.modifiersData.arrow,
                position: "absolute",
                adaptive: !1,
                roundOffsets: l
            })))),
            e.attributes.popper = Object.assign({}, e.attributes.popper, {
                "data-popper-placement": e.placement
            })
        },
        data: {}
    };
    var ze = {
        passive: !0
    };
    const Re = {
        name: "eventListeners",
        enabled: !0,
        phase: "write",
        fn: function() {},
        effect: function(t) {
            var e = t.state
              , i = t.instance
              , n = t.options
              , s = n.scroll
              , o = void 0 === s || s
              , r = n.resize
              , a = void 0 === r || r
              , l = fe(e.elements.popper)
              , c = [].concat(e.scrollParents.reference, e.scrollParents.popper);
            return o && c.forEach((function(t) {
                t.addEventListener("scroll", i.update, ze)
            }
            )),
            a && l.addEventListener("resize", i.update, ze),
            function() {
                o && c.forEach((function(t) {
                    t.removeEventListener("scroll", i.update, ze)
                }
                )),
                a && l.removeEventListener("resize", i.update, ze)
            }
        },
        data: {}
    };
    var qe = {
        left: "right",
        right: "left",
        bottom: "top",
        top: "bottom"
    };
    function Ve(t) {
        return t.replace(/left|right|bottom|top/g, (function(t) {
            return qe[t]
        }
        ))
    }
    var Ke = {
        start: "end",
        end: "start"
    };
    function Qe(t) {
        return t.replace(/start|end/g, (function(t) {
            return Ke[t]
        }
        ))
    }
    function Xe(t) {
        var e = fe(t);
        return {
            scrollLeft: e.pageXOffset,
            scrollTop: e.pageYOffset
        }
    }
    function Ye(t) {
        return Te(Le(t)).left + Xe(t).scrollLeft
    }
    function Ue(t) {
        var e = xe(t)
          , i = e.overflow
          , n = e.overflowX
          , s = e.overflowY;
        return /auto|scroll|overlay|hidden/.test(i + s + n)
    }
    function Ge(t) {
        return ["html", "body", "#document"].indexOf(ue(t)) >= 0 ? t.ownerDocument.body : me(t) && Ue(t) ? t : Ge(Se(t))
    }
    function Je(t, e) {
        var i;
        void 0 === e && (e = []);
        var n = Ge(t)
          , s = n === (null == (i = t.ownerDocument) ? void 0 : i.body)
          , o = fe(n)
          , r = s ? [o].concat(o.visualViewport || [], Ue(n) ? n : []) : n
          , a = e.concat(r);
        return s ? a : a.concat(Je(Se(r)))
    }
    function Ze(t) {
        return Object.assign({}, t, {
            left: t.x,
            top: t.y,
            right: t.x + t.width,
            bottom: t.y + t.height
        })
    }
    function ti(t, e, i) {
        return e === Gt ? Ze(function(t, e) {
            var i = fe(t)
              , n = Le(t)
              , s = i.visualViewport
              , o = n.clientWidth
              , r = n.clientHeight
              , a = 0
              , l = 0;
            if (s) {
                o = s.width,
                r = s.height;
                var c = Ee();
                (c || !c && "fixed" === e) && (a = s.offsetLeft,
                l = s.offsetTop)
            }
            return {
                width: o,
                height: r,
                x: a + Ye(t),
                y: l
            }
        }(t, i)) : pe(e) ? function(t, e) {
            var i = Te(t, !1, "fixed" === e);
            return i.top = i.top + t.clientTop,
            i.left = i.left + t.clientLeft,
            i.bottom = i.top + t.clientHeight,
            i.right = i.left + t.clientWidth,
            i.width = t.clientWidth,
            i.height = t.clientHeight,
            i.x = i.left,
            i.y = i.top,
            i
        }(e, i) : Ze(function(t) {
            var e, i = Le(t), n = Xe(t), s = null == (e = t.ownerDocument) ? void 0 : e.body, o = ve(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0, s ? s.clientWidth : 0), r = ve(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0, s ? s.clientHeight : 0), a = -n.scrollLeft + Ye(t), l = -n.scrollTop;
            return "rtl" === xe(s || i).direction && (a += ve(i.clientWidth, s ? s.clientWidth : 0) - o),
            {
                width: o,
                height: r,
                x: a,
                y: l
            }
        }(Le(t)))
    }
    function ei(t) {
        var e, i = t.reference, n = t.element, s = t.placement, o = s ? be(s) : null, r = s ? Fe(s) : null, a = i.x + i.width / 2 - n.width / 2, l = i.y + i.height / 2 - n.height / 2;
        switch (o) {
        case zt:
            e = {
                x: a,
                y: i.y - n.height
            };
            break;
        case Rt:
            e = {
                x: a,
                y: i.y + i.height
            };
            break;
        case qt:
            e = {
                x: i.x + i.width,
                y: l
            };
            break;
        case Vt:
            e = {
                x: i.x - n.width,
                y: l
            };
            break;
        default:
            e = {
                x: i.x,
                y: i.y
            }
        }
        var c = o ? Ie(o) : null;
        if (null != c) {
            var h = "y" === c ? "height" : "width";
            switch (r) {
            case Xt:
                e[c] = e[c] - (i[h] / 2 - n[h] / 2);
                break;
            case Yt:
                e[c] = e[c] + (i[h] / 2 - n[h] / 2)
            }
        }
        return e
    }
    function ii(t, e) {
        void 0 === e && (e = {});
        var i = e
          , n = i.placement
          , s = void 0 === n ? t.placement : n
          , o = i.strategy
          , r = void 0 === o ? t.strategy : o
          , a = i.boundary
          , l = void 0 === a ? Ut : a
          , c = i.rootBoundary
          , h = void 0 === c ? Gt : c
          , d = i.elementContext
          , u = void 0 === d ? Jt : d
          , f = i.altBoundary
          , p = void 0 !== f && f
          , m = i.padding
          , g = void 0 === m ? 0 : m
          , _ = Pe("number" != typeof g ? g : je(g, Qt))
          , b = u === Jt ? Zt : Jt
          , v = t.rects.popper
          , y = t.elements[p ? b : u]
          , w = function(t, e, i, n) {
            var s = "clippingParents" === e ? function(t) {
                var e = Je(Se(t))
                  , i = ["absolute", "fixed"].indexOf(xe(t).position) >= 0 && me(t) ? $e(t) : t;
                return pe(i) ? e.filter((function(t) {
                    return pe(t) && Oe(t, i) && "body" !== ue(t)
                }
                )) : []
            }(t) : [].concat(e)
              , o = [].concat(s, [i])
              , r = o[0]
              , a = o.reduce((function(e, i) {
                var s = ti(t, i, n);
                return e.top = ve(s.top, e.top),
                e.right = ye(s.right, e.right),
                e.bottom = ye(s.bottom, e.bottom),
                e.left = ve(s.left, e.left),
                e
            }
            ), ti(t, r, n));
            return a.width = a.right - a.left,
            a.height = a.bottom - a.top,
            a.x = a.left,
            a.y = a.top,
            a
        }(pe(y) ? y : y.contextElement || Le(t.elements.popper), l, h, r)
          , A = Te(t.elements.reference)
          , E = ei({
            reference: A,
            element: v,
            strategy: "absolute",
            placement: s
        })
          , T = Ze(Object.assign({}, v, E))
          , C = u === Jt ? T : A
          , O = {
            top: w.top - C.top + _.top,
            bottom: C.bottom - w.bottom + _.bottom,
            left: w.left - C.left + _.left,
            right: C.right - w.right + _.right
        }
          , x = t.modifiersData.offset;
        if (u === Jt && x) {
            var k = x[s];
            Object.keys(O).forEach((function(t) {
                var e = [qt, Rt].indexOf(t) >= 0 ? 1 : -1
                  , i = [zt, Rt].indexOf(t) >= 0 ? "y" : "x";
                O[t] += k[i] * e
            }
            ))
        }
        return O
    }
    function ni(t, e) {
        void 0 === e && (e = {});
        var i = e
          , n = i.placement
          , s = i.boundary
          , o = i.rootBoundary
          , r = i.padding
          , a = i.flipVariations
          , l = i.allowedAutoPlacements
          , c = void 0 === l ? ee : l
          , h = Fe(n)
          , d = h ? a ? te : te.filter((function(t) {
            return Fe(t) === h
        }
        )) : Qt
          , u = d.filter((function(t) {
            return c.indexOf(t) >= 0
        }
        ));
        0 === u.length && (u = d);
        var f = u.reduce((function(e, i) {
            return e[i] = ii(t, {
                placement: i,
                boundary: s,
                rootBoundary: o,
                padding: r
            })[be(i)],
            e
        }
        ), {});
        return Object.keys(f).sort((function(t, e) {
            return f[t] - f[e]
        }
        ))
    }
    const si = {
        name: "flip",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name;
            if (!e.modifiersData[n]._skip) {
                for (var s = i.mainAxis, o = void 0 === s || s, r = i.altAxis, a = void 0 === r || r, l = i.fallbackPlacements, c = i.padding, h = i.boundary, d = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 === f || f, m = i.allowedAutoPlacements, g = e.options.placement, _ = be(g), b = l || (_ !== g && p ? function(t) {
                    if (be(t) === Kt)
                        return [];
                    var e = Ve(t);
                    return [Qe(t), e, Qe(e)]
                }(g) : [Ve(g)]), v = [g].concat(b).reduce((function(t, i) {
                    return t.concat(be(i) === Kt ? ni(e, {
                        placement: i,
                        boundary: h,
                        rootBoundary: d,
                        padding: c,
                        flipVariations: p,
                        allowedAutoPlacements: m
                    }) : i)
                }
                ), []), y = e.rects.reference, w = e.rects.popper, A = new Map, E = !0, T = v[0], C = 0; C < v.length; C++) {
                    var O = v[C]
                      , x = be(O)
                      , k = Fe(O) === Xt
                      , L = [zt, Rt].indexOf(x) >= 0
                      , S = L ? "width" : "height"
                      , D = ii(e, {
                        placement: O,
                        boundary: h,
                        rootBoundary: d,
                        altBoundary: u,
                        padding: c
                    })
                      , $ = L ? k ? qt : Vt : k ? Rt : zt;
                    y[S] > w[S] && ($ = Ve($));
                    var I = Ve($)
                      , N = [];
                    if (o && N.push(D[x] <= 0),
                    a && N.push(D[$] <= 0, D[I] <= 0),
                    N.every((function(t) {
                        return t
                    }
                    ))) {
                        T = O,
                        E = !1;
                        break
                    }
                    A.set(O, N)
                }
                if (E)
                    for (var P = function(t) {
                        var e = v.find((function(e) {
                            var i = A.get(e);
                            if (i)
                                return i.slice(0, t).every((function(t) {
                                    return t
                                }
                                ))
                        }
                        ));
                        if (e)
                            return T = e,
                            "break"
                    }, j = p ? 3 : 1; j > 0 && "break" !== P(j); j--)
                        ;
                e.placement !== T && (e.modifiersData[n]._skip = !0,
                e.placement = T,
                e.reset = !0)
            }
        },
        requiresIfExists: ["offset"],
        data: {
            _skip: !1
        }
    };
    function oi(t, e, i) {
        return void 0 === i && (i = {
            x: 0,
            y: 0
        }),
        {
            top: t.top - e.height - i.y,
            right: t.right - e.width + i.x,
            bottom: t.bottom - e.height + i.y,
            left: t.left - e.width - i.x
        }
    }
    function ri(t) {
        return [zt, qt, Rt, Vt].some((function(e) {
            return t[e] >= 0
        }
        ))
    }
    const ai = {
        name: "hide",
        enabled: !0,
        phase: "main",
        requiresIfExists: ["preventOverflow"],
        fn: function(t) {
            var e = t.state
              , i = t.name
              , n = e.rects.reference
              , s = e.rects.popper
              , o = e.modifiersData.preventOverflow
              , r = ii(e, {
                elementContext: "reference"
            })
              , a = ii(e, {
                altBoundary: !0
            })
              , l = oi(r, n)
              , c = oi(a, s, o)
              , h = ri(l)
              , d = ri(c);
            e.modifiersData[i] = {
                referenceClippingOffsets: l,
                popperEscapeOffsets: c,
                isReferenceHidden: h,
                hasPopperEscaped: d
            },
            e.attributes.popper = Object.assign({}, e.attributes.popper, {
                "data-popper-reference-hidden": h,
                "data-popper-escaped": d
            })
        }
    }
      , li = {
        name: "offset",
        enabled: !0,
        phase: "main",
        requires: ["popperOffsets"],
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name
              , s = i.offset
              , o = void 0 === s ? [0, 0] : s
              , r = ee.reduce((function(t, i) {
                return t[i] = function(t, e, i) {
                    var n = be(t)
                      , s = [Vt, zt].indexOf(n) >= 0 ? -1 : 1
                      , o = "function" == typeof i ? i(Object.assign({}, e, {
                        placement: t
                    })) : i
                      , r = o[0]
                      , a = o[1];
                    return r = r || 0,
                    a = (a || 0) * s,
                    [Vt, qt].indexOf(n) >= 0 ? {
                        x: a,
                        y: r
                    } : {
                        x: r,
                        y: a
                    }
                }(i, e.rects, o),
                t
            }
            ), {})
              , a = r[e.placement]
              , l = a.x
              , c = a.y;
            null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += l,
            e.modifiersData.popperOffsets.y += c),
            e.modifiersData[n] = r
        }
    }
      , ci = {
        name: "popperOffsets",
        enabled: !0,
        phase: "read",
        fn: function(t) {
            var e = t.state
              , i = t.name;
            e.modifiersData[i] = ei({
                reference: e.rects.reference,
                element: e.rects.popper,
                strategy: "absolute",
                placement: e.placement
            })
        },
        data: {}
    }
      , hi = {
        name: "preventOverflow",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name
              , s = i.mainAxis
              , o = void 0 === s || s
              , r = i.altAxis
              , a = void 0 !== r && r
              , l = i.boundary
              , c = i.rootBoundary
              , h = i.altBoundary
              , d = i.padding
              , u = i.tether
              , f = void 0 === u || u
              , p = i.tetherOffset
              , m = void 0 === p ? 0 : p
              , g = ii(e, {
                boundary: l,
                rootBoundary: c,
                padding: d,
                altBoundary: h
            })
              , _ = be(e.placement)
              , b = Fe(e.placement)
              , v = !b
              , y = Ie(_)
              , w = "x" === y ? "y" : "x"
              , A = e.modifiersData.popperOffsets
              , E = e.rects.reference
              , T = e.rects.popper
              , C = "function" == typeof m ? m(Object.assign({}, e.rects, {
                placement: e.placement
            })) : m
              , O = "number" == typeof C ? {
                mainAxis: C,
                altAxis: C
            } : Object.assign({
                mainAxis: 0,
                altAxis: 0
            }, C)
              , x = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null
              , k = {
                x: 0,
                y: 0
            };
            if (A) {
                if (o) {
                    var L, S = "y" === y ? zt : Vt, D = "y" === y ? Rt : qt, $ = "y" === y ? "height" : "width", I = A[y], N = I + g[S], P = I - g[D], j = f ? -T[$] / 2 : 0, M = b === Xt ? E[$] : T[$], F = b === Xt ? -T[$] : -E[$], H = e.elements.arrow, W = f && H ? Ce(H) : {
                        width: 0,
                        height: 0
                    }, B = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : {
                        top: 0,
                        right: 0,
                        bottom: 0,
                        left: 0
                    }, z = B[S], R = B[D], q = Ne(0, E[$], W[$]), V = v ? E[$] / 2 - j - q - z - O.mainAxis : M - q - z - O.mainAxis, K = v ? -E[$] / 2 + j + q + R + O.mainAxis : F + q + R + O.mainAxis, Q = e.elements.arrow && $e(e.elements.arrow), X = Q ? "y" === y ? Q.clientTop || 0 : Q.clientLeft || 0 : 0, Y = null != (L = null == x ? void 0 : x[y]) ? L : 0, U = I + K - Y, G = Ne(f ? ye(N, I + V - Y - X) : N, I, f ? ve(P, U) : P);
                    A[y] = G,
                    k[y] = G - I
                }
                if (a) {
                    var J, Z = "x" === y ? zt : Vt, tt = "x" === y ? Rt : qt, et = A[w], it = "y" === w ? "height" : "width", nt = et + g[Z], st = et - g[tt], ot = -1 !== [zt, Vt].indexOf(_), rt = null != (J = null == x ? void 0 : x[w]) ? J : 0, at = ot ? nt : et - E[it] - T[it] - rt + O.altAxis, lt = ot ? et + E[it] + T[it] - rt - O.altAxis : st, ct = f && ot ? function(t, e, i) {
                        var n = Ne(t, e, i);
                        return n > i ? i : n
                    }(at, et, lt) : Ne(f ? at : nt, et, f ? lt : st);
                    A[w] = ct,
                    k[w] = ct - et
                }
                e.modifiersData[n] = k
            }
        },
        requiresIfExists: ["offset"]
    };
    function di(t, e, i) {
        void 0 === i && (i = !1);
        var n, s, o = me(e), r = me(e) && function(t) {
            var e = t.getBoundingClientRect()
              , i = we(e.width) / t.offsetWidth || 1
              , n = we(e.height) / t.offsetHeight || 1;
            return 1 !== i || 1 !== n
        }(e), a = Le(e), l = Te(t, r, i), c = {
            scrollLeft: 0,
            scrollTop: 0
        }, h = {
            x: 0,
            y: 0
        };
        return (o || !o && !i) && (("body" !== ue(e) || Ue(a)) && (c = (n = e) !== fe(n) && me(n) ? {
            scrollLeft: (s = n).scrollLeft,
            scrollTop: s.scrollTop
        } : Xe(n)),
        me(e) ? ((h = Te(e, !0)).x += e.clientLeft,
        h.y += e.clientTop) : a && (h.x = Ye(a))),
        {
            x: l.left + c.scrollLeft - h.x,
            y: l.top + c.scrollTop - h.y,
            width: l.width,
            height: l.height
        }
    }
    function ui(t) {
        var e = new Map
          , i = new Set
          , n = [];
        function s(t) {
            i.add(t.name),
            [].concat(t.requires || [], t.requiresIfExists || []).forEach((function(t) {
                if (!i.has(t)) {
                    var n = e.get(t);
                    n && s(n)
                }
            }
            )),
            n.push(t)
        }
        return t.forEach((function(t) {
            e.set(t.name, t)
        }
        )),
        t.forEach((function(t) {
            i.has(t.name) || s(t)
        }
        )),
        n
    }
    var fi = {
        placement: "bottom",
        modifiers: [],
        strategy: "absolute"
    };
    function pi() {
        for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++)
            e[i] = arguments[i];
        return !e.some((function(t) {
            return !(t && "function" == typeof t.getBoundingClientRect)
        }
        ))
    }
    function mi(t) {
        void 0 === t && (t = {});
        var e = t
          , i = e.defaultModifiers
          , n = void 0 === i ? [] : i
          , s = e.defaultOptions
          , o = void 0 === s ? fi : s;
        return function(t, e, i) {
            void 0 === i && (i = o);
            var s, r, a = {
                placement: "bottom",
                orderedModifiers: [],
                options: Object.assign({}, fi, o),
                modifiersData: {},
                elements: {
                    reference: t,
                    popper: e
                },
                attributes: {},
                styles: {}
            }, l = [], c = !1, h = {
                state: a,
                setOptions: function(i) {
                    var s = "function" == typeof i ? i(a.options) : i;
                    d(),
                    a.options = Object.assign({}, o, a.options, s),
                    a.scrollParents = {
                        reference: pe(t) ? Je(t) : t.contextElement ? Je(t.contextElement) : [],
                        popper: Je(e)
                    };
                    var r, c, u = function(t) {
                        var e = ui(t);
                        return de.reduce((function(t, i) {
                            return t.concat(e.filter((function(t) {
                                return t.phase === i
                            }
                            )))
                        }
                        ), [])
                    }((r = [].concat(n, a.options.modifiers),
                    c = r.reduce((function(t, e) {
                        var i = t[e.name];
                        return t[e.name] = i ? Object.assign({}, i, e, {
                            options: Object.assign({}, i.options, e.options),
                            data: Object.assign({}, i.data, e.data)
                        }) : e,
                        t
                    }
                    ), {}),
                    Object.keys(c).map((function(t) {
                        return c[t]
                    }
                    ))));
                    return a.orderedModifiers = u.filter((function(t) {
                        return t.enabled
                    }
                    )),
                    a.orderedModifiers.forEach((function(t) {
                        var e = t.name
                          , i = t.options
                          , n = void 0 === i ? {} : i
                          , s = t.effect;
                        if ("function" == typeof s) {
                            var o = s({
                                state: a,
                                name: e,
                                instance: h,
                                options: n
                            });
                            l.push(o || function() {}
                            )
                        }
                    }
                    )),
                    h.update()
                },
                forceUpdate: function() {
                    if (!c) {
                        var t = a.elements
                          , e = t.reference
                          , i = t.popper;
                        if (pi(e, i)) {
                            a.rects = {
                                reference: di(e, $e(i), "fixed" === a.options.strategy),
                                popper: Ce(i)
                            },
                            a.reset = !1,
                            a.placement = a.options.placement,
                            a.orderedModifiers.forEach((function(t) {
                                return a.modifiersData[t.name] = Object.assign({}, t.data)
                            }
                            ));
                            for (var n = 0; n < a.orderedModifiers.length; n++)
                                if (!0 !== a.reset) {
                                    var s = a.orderedModifiers[n]
                                      , o = s.fn
                                      , r = s.options
                                      , l = void 0 === r ? {} : r
                                      , d = s.name;
                                    "function" == typeof o && (a = o({
                                        state: a,
                                        options: l,
                                        name: d,
                                        instance: h
                                    }) || a)
                                } else
                                    a.reset = !1,
                                    n = -1
                        }
                    }
                },
                update: (s = function() {
                    return new Promise((function(t) {
                        h.forceUpdate(),
                        t(a)
                    }
                    ))
                }
                ,
                function() {
                    return r || (r = new Promise((function(t) {
                        Promise.resolve().then((function() {
                            r = void 0,
                            t(s())
                        }
                        ))
                    }
                    ))),
                    r
                }
                ),
                destroy: function() {
                    d(),
                    c = !0
                }
            };
            if (!pi(t, e))
                return h;
            function d() {
                l.forEach((function(t) {
                    return t()
                }
                )),
                l = []
            }
            return h.setOptions(i).then((function(t) {
                !c && i.onFirstUpdate && i.onFirstUpdate(t)
            }
            )),
            h
        }
    }
    var gi = mi()
      , _i = mi({
        defaultModifiers: [Re, ci, Be, _e]
    })
      , bi = mi({
        defaultModifiers: [Re, ci, Be, _e, li, si, hi, Me, ai]
    });
    const vi = Object.freeze(Object.defineProperty({
        __proto__: null,
        afterMain: ae,
        afterRead: se,
        afterWrite: he,
        applyStyles: _e,
        arrow: Me,
        auto: Kt,
        basePlacements: Qt,
        beforeMain: oe,
        beforeRead: ie,
        beforeWrite: le,
        bottom: Rt,
        clippingParents: Ut,
        computeStyles: Be,
        createPopper: bi,
        createPopperBase: gi,
        createPopperLite: _i,
        detectOverflow: ii,
        end: Yt,
        eventListeners: Re,
        flip: si,
        hide: ai,
        left: Vt,
        main: re,
        modifierPhases: de,
        offset: li,
        placements: ee,
        popper: Jt,
        popperGenerator: mi,
        popperOffsets: ci,
        preventOverflow: hi,
        read: ne,
        reference: Zt,
        right: qt,
        start: Xt,
        top: zt,
        variationPlacements: te,
        viewport: Gt,
        write: ce
    }, Symbol.toStringTag, {
        value: "Module"
    }))
      , yi = "dropdown"
      , wi = ".bs.dropdown"
      , Ai = ".data-api"
      , Ei = "ArrowUp"
      , Ti = "ArrowDown"
      , Ci = `hide${wi}`
      , Oi = `hidden${wi}`
      , xi = `show${wi}`
      , ki = `shown${wi}`
      , Li = `click${wi}${Ai}`
      , Si = `keydown${wi}${Ai}`
      , Di = `keyup${wi}${Ai}`
      , $i = "show"
      , Ii = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'
      , Ni = `${Ii}.${$i}`
      , Pi = ".dropdown-menu"
      , ji = p() ? "top-end" : "top-start"
      , Mi = p() ? "top-start" : "top-end"
      , Fi = p() ? "bottom-end" : "bottom-start"
      , Hi = p() ? "bottom-start" : "bottom-end"
      , Wi = p() ? "left-start" : "right-start"
      , Bi = p() ? "right-start" : "left-start"
      , zi = {
        autoClose: !0,
        boundary: "clippingParents",
        display: "dynamic",
        offset: [0, 2],
        popperConfig: null,
        reference: "toggle"
    }
      , Ri = {
        autoClose: "(boolean|string)",
        boundary: "(string|element)",
        display: "string",
        offset: "(array|string|function)",
        popperConfig: "(null|object|function)",
        reference: "(string|element|object)"
    };
    class qi extends W {
        constructor(t, e) {
            super(t, e),
            this._popper = null,
            this._parent = this._element.parentNode,
            this._menu = z.next(this._element, Pi)[0] || z.prev(this._element, Pi)[0] || z.findOne(Pi, this._parent),
            this._inNavbar = this._detectNavbar()
        }
        static get Default() {
            return zi
        }
        static get DefaultType() {
            return Ri
        }
        static get NAME() {
            return yi
        }
        toggle() {
            return this._isShown() ? this.hide() : this.show()
        }
        show() {
            if (l(this._element) || this._isShown())
                return;
            const t = {
                relatedTarget: this._element
            };
            if (!N.trigger(this._element, xi, t).defaultPrevented) {
                if (this._createPopper(),
                "ontouchstart"in document.documentElement && !this._parent.closest(".navbar-nav"))
                    for (const t of [].concat(...document.body.children))
                        N.on(t, "mouseover", h);
                this._element.focus(),
                this._element.setAttribute("aria-expanded", !0),
                this._menu.classList.add($i),
                this._element.classList.add($i),
                N.trigger(this._element, ki, t)
            }
        }
        hide() {
            if (l(this._element) || !this._isShown())
                return;
            const t = {
                relatedTarget: this._element
            };
            this._completeHide(t)
        }
        dispose() {
            this._popper && this._popper.destroy(),
            super.dispose()
        }
        update() {
            this._inNavbar = this._detectNavbar(),
            this._popper && this._popper.update()
        }
        _completeHide(t) {
            if (!N.trigger(this._element, Ci, t).defaultPrevented) {
                if ("ontouchstart"in document.documentElement)
                    for (const t of [].concat(...document.body.children))
                        N.off(t, "mouseover", h);
                this._popper && this._popper.destroy(),
                this._menu.classList.remove($i),
                this._element.classList.remove($i),
                this._element.setAttribute("aria-expanded", "false"),
                F.removeDataAttribute(this._menu, "popper"),
                N.trigger(this._element, Oi, t)
            }
        }
        _getConfig(t) {
            if ("object" == typeof (t = super._getConfig(t)).reference && !o(t.reference) && "function" != typeof t.reference.getBoundingClientRect)
                throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
            return t
        }
        _createPopper() {
            if (void 0 === vi)
                throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
            let t = this._element;
            "parent" === this._config.reference ? t = this._parent : o(this._config.reference) ? t = r(this._config.reference) : "object" == typeof this._config.reference && (t = this._config.reference);
            const e = this._getPopperConfig();
            this._popper = bi(t, this._menu, e)
        }
        _isShown() {
            return this._menu.classList.contains($i)
        }
        _getPlacement() {
            const t = this._parent;
            if (t.classList.contains("dropend"))
                return Wi;
            if (t.classList.contains("dropstart"))
                return Bi;
            if (t.classList.contains("dropup-center"))
                return "top";
            if (t.classList.contains("dropdown-center"))
                return "bottom";
            const e = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();
            return t.classList.contains("dropup") ? e ? Mi : ji : e ? Hi : Fi
        }
        _detectNavbar() {
            return null !== this._element.closest(".navbar")
        }
        _getOffset() {
            const {offset: t} = this._config;
            return "string" == typeof t ? t.split(",").map((t => Number.parseInt(t, 10))) : "function" == typeof t ? e => t(e, this._element) : t
        }
        _getPopperConfig() {
            const t = {
                placement: this._getPlacement(),
                modifiers: [{
                    name: "preventOverflow",
                    options: {
                        boundary: this._config.boundary
                    }
                }, {
                    name: "offset",
                    options: {
                        offset: this._getOffset()
                    }
                }]
            };
            return (this._inNavbar || "static" === this._config.display) && (F.setDataAttribute(this._menu, "popper", "static"),
            t.modifiers = [{
                name: "applyStyles",
                enabled: !1
            }]),
            {
                ...t,
                ...g(this._config.popperConfig, [t])
            }
        }
        _selectMenuItem({key: t, target: e}) {
            const i = z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", this._menu).filter((t => a(t)));
            i.length && b(i, e, t === Ti, !i.includes(e)).focus()
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = qi.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
        static clearMenus(t) {
            if (2 === t.button || "keyup" === t.type && "Tab" !== t.key)
                return;
            const e = z.find(Ni);
            for (const i of e) {
                const e = qi.getInstance(i);
                if (!e || !1 === e._config.autoClose)
                    continue;
                const n = t.composedPath()
                  , s = n.includes(e._menu);
                if (n.includes(e._element) || "inside" === e._config.autoClose && !s || "outside" === e._config.autoClose && s)
                    continue;
                if (e._menu.contains(t.target) && ("keyup" === t.type && "Tab" === t.key || /input|select|option|textarea|form/i.test(t.target.tagName)))
                    continue;
                const o = {
                    relatedTarget: e._element
                };
                "click" === t.type && (o.clickEvent = t),
                e._completeHide(o)
            }
        }
        static dataApiKeydownHandler(t) {
            const e = /input|textarea/i.test(t.target.tagName)
              , i = "Escape" === t.key
              , n = [Ei, Ti].includes(t.key);
            if (!n && !i)
                return;
            if (e && !i)
                return;
            t.preventDefault();
            const s = this.matches(Ii) ? this : z.prev(this, Ii)[0] || z.next(this, Ii)[0] || z.findOne(Ii, t.delegateTarget.parentNode)
              , o = qi.getOrCreateInstance(s);
            if (n)
                return t.stopPropagation(),
                o.show(),
                void o._selectMenuItem(t);
            o._isShown() && (t.stopPropagation(),
            o.hide(),
            s.focus())
        }
    }
    N.on(document, Si, Ii, qi.dataApiKeydownHandler),
    N.on(document, Si, Pi, qi.dataApiKeydownHandler),
    N.on(document, Li, qi.clearMenus),
    N.on(document, Di, qi.clearMenus),
    N.on(document, Li, Ii, (function(t) {
        t.preventDefault(),
        qi.getOrCreateInstance(this).toggle()
    }
    )),
    m(qi);
    const Vi = "backdrop"
      , Ki = "show"
      , Qi = `mousedown.bs.${Vi}`
      , Xi = {
        className: "modal-backdrop",
        clickCallback: null,
        isAnimated: !1,
        isVisible: !0,
        rootElement: "body"
    }
      , Yi = {
        className: "string",
        clickCallback: "(function|null)",
        isAnimated: "boolean",
        isVisible: "boolean",
        rootElement: "(element|string)"
    };
    class Ui extends H {
        constructor(t) {
            super(),
            this._config = this._getConfig(t),
            this._isAppended = !1,
            this._element = null
        }
        static get Default() {
            return Xi
        }
        static get DefaultType() {
            return Yi
        }
        static get NAME() {
            return Vi
        }
        show(t) {
            if (!this._config.isVisible)
                return void g(t);
            this._append();
            const e = this._getElement();
            this._config.isAnimated && d(e),
            e.classList.add(Ki),
            this._emulateAnimation(( () => {
                g(t)
            }
            ))
        }
        hide(t) {
            this._config.isVisible ? (this._getElement().classList.remove(Ki),
            this._emulateAnimation(( () => {
                this.dispose(),
                g(t)
            }
            ))) : g(t)
        }
        dispose() {
            this._isAppended && (N.off(this._element, Qi),
            this._element.remove(),
            this._isAppended = !1)
        }
        _getElement() {
            if (!this._element) {
                const t = document.createElement("div");
                t.className = this._config.className,
                this._config.isAnimated && t.classList.add("fade"),
                this._element = t
            }
            return this._element
        }
        _configAfterMerge(t) {
            return t.rootElement = r(t.rootElement),
            t
        }
        _append() {
            if (this._isAppended)
                return;
            const t = this._getElement();
            this._config.rootElement.append(t),
            N.on(t, Qi, ( () => {
                g(this._config.clickCallback)
            }
            )),
            this._isAppended = !0
        }
        _emulateAnimation(t) {
            _(t, this._getElement(), this._config.isAnimated)
        }
    }
    const Gi = ".bs.focustrap"
      , Ji = `focusin${Gi}`
      , Zi = `keydown.tab${Gi}`
      , tn = "backward"
      , en = {
        autofocus: !0,
        trapElement: null
    }
      , nn = {
        autofocus: "boolean",
        trapElement: "element"
    };
    class sn extends H {
        constructor(t) {
            super(),
            this._config = this._getConfig(t),
            this._isActive = !1,
            this._lastTabNavDirection = null
        }
        static get Default() {
            return en
        }
        static get DefaultType() {
            return nn
        }
        static get NAME() {
            return "focustrap"
        }
        activate() {
            this._isActive || (this._config.autofocus && this._config.trapElement.focus(),
            N.off(document, Gi),
            N.on(document, Ji, (t => this._handleFocusin(t))),
            N.on(document, Zi, (t => this._handleKeydown(t))),
            this._isActive = !0)
        }
        deactivate() {
            this._isActive && (this._isActive = !1,
            N.off(document, Gi))
        }
        _handleFocusin(t) {
            const {trapElement: e} = this._config;
            if (t.target === document || t.target === e || e.contains(t.target))
                return;
            const i = z.focusableChildren(e);
            0 === i.length ? e.focus() : this._lastTabNavDirection === tn ? i[i.length - 1].focus() : i[0].focus()
        }
        _handleKeydown(t) {
            "Tab" === t.key && (this._lastTabNavDirection = t.shiftKey ? tn : "forward")
        }
    }
    const on = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"
      , rn = ".sticky-top"
      , an = "padding-right"
      , ln = "margin-right";
    class cn {
        constructor() {
            this._element = document.body
        }
        getWidth() {
            const t = document.documentElement.clientWidth;
            return Math.abs(window.innerWidth - t)
        }
        hide() {
            const t = this.getWidth();
            this._disableOverFlow(),
            this._setElementAttributes(this._element, an, (e => e + t)),
            this._setElementAttributes(on, an, (e => e + t)),
            this._setElementAttributes(rn, ln, (e => e - t))
        }
        reset() {
            this._resetElementAttributes(this._element, "overflow"),
            this._resetElementAttributes(this._element, an),
            this._resetElementAttributes(on, an),
            this._resetElementAttributes(rn, ln)
        }
        isOverflowing() {
            return this.getWidth() > 0
        }
        _disableOverFlow() {
            this._saveInitialAttribute(this._element, "overflow"),
            this._element.style.overflow = "hidden"
        }
        _setElementAttributes(t, e, i) {
            const n = this.getWidth();
            this._applyManipulationCallback(t, (t => {
                if (t !== this._element && window.innerWidth > t.clientWidth + n)
                    return;
                this._saveInitialAttribute(t, e);
                const s = window.getComputedStyle(t).getPropertyValue(e);
                t.style.setProperty(e, `${i(Number.parseFloat(s))}px`)
            }
            ))
        }
        _saveInitialAttribute(t, e) {
            const i = t.style.getPropertyValue(e);
            i && F.setDataAttribute(t, e, i)
        }
        _resetElementAttributes(t, e) {
            this._applyManipulationCallback(t, (t => {
                const i = F.getDataAttribute(t, e);
                null !== i ? (F.removeDataAttribute(t, e),
                t.style.setProperty(e, i)) : t.style.removeProperty(e)
            }
            ))
        }
        _applyManipulationCallback(t, e) {
            if (o(t))
                e(t);
            else
                for (const i of z.find(t, this._element))
                    e(i)
        }
    }
    const hn = ".bs.modal"
      , dn = `hide${hn}`
      , un = `hidePrevented${hn}`
      , fn = `hidden${hn}`
      , pn = `show${hn}`
      , mn = `shown${hn}`
      , gn = `resize${hn}`
      , _n = `click.dismiss${hn}`
      , bn = `mousedown.dismiss${hn}`
      , vn = `keydown.dismiss${hn}`
      , yn = `click${hn}.data-api`
      , wn = "modal-open"
      , An = "show"
      , En = "modal-static"
      , Tn = {
        backdrop: !0,
        focus: !0,
        keyboard: !0
    }
      , Cn = {
        backdrop: "(boolean|string)",
        focus: "boolean",
        keyboard: "boolean"
    };
    class On extends W {
        constructor(t, e) {
            super(t, e),
            this._dialog = z.findOne(".modal-dialog", this._element),
            this._backdrop = this._initializeBackDrop(),
            this._focustrap = this._initializeFocusTrap(),
            this._isShown = !1,
            this._isTransitioning = !1,
            this._scrollBar = new cn,
            this._addEventListeners()
        }
        static get Default() {
            return Tn
        }
        static get DefaultType() {
            return Cn
        }
        static get NAME() {
            return "modal"
        }
        toggle(t) {
            return this._isShown ? this.hide() : this.show(t)
        }
        show(t) {
            this._isShown || this._isTransitioning || N.trigger(this._element, pn, {
                relatedTarget: t
            }).defaultPrevented || (this._isShown = !0,
            this._isTransitioning = !0,
            this._scrollBar.hide(),
            document.body.classList.add(wn),
            this._adjustDialog(),
            this._backdrop.show(( () => this._showElement(t))))
        }
        hide() {
            this._isShown && !this._isTransitioning && (N.trigger(this._element, dn).defaultPrevented || (this._isShown = !1,
            this._isTransitioning = !0,
            this._focustrap.deactivate(),
            this._element.classList.remove(An),
            this._queueCallback(( () => this._hideModal()), this._element, this._isAnimated())))
        }
        dispose() {
            N.off(window, hn),
            N.off(this._dialog, hn),
            this._backdrop.dispose(),
            this._focustrap.deactivate(),
            super.dispose()
        }
        handleUpdate() {
            this._adjustDialog()
        }
        _initializeBackDrop() {
            return new Ui({
                isVisible: Boolean(this._config.backdrop),
                isAnimated: this._isAnimated()
            })
        }
        _initializeFocusTrap() {
            return new sn({
                trapElement: this._element
            })
        }
        _showElement(t) {
            document.body.contains(this._element) || document.body.append(this._element),
            this._element.style.display = "block",
            this._element.removeAttribute("aria-hidden"),
            this._element.setAttribute("aria-modal", !0),
            this._element.setAttribute("role", "dialog"),
            this._element.scrollTop = 0;
            const e = z.findOne(".modal-body", this._dialog);
            e && (e.scrollTop = 0),
            d(this._element),
            this._element.classList.add(An),
            this._queueCallback(( () => {
                this._config.focus && this._focustrap.activate(),
                this._isTransitioning = !1,
                N.trigger(this._element, mn, {
                    relatedTarget: t
                })
            }
            ), this._dialog, this._isAnimated())
        }
        _addEventListeners() {
            N.on(this._element, vn, (t => {
                "Escape" === t.key && (this._config.keyboard ? this.hide() : this._triggerBackdropTransition())
            }
            )),
            N.on(window, gn, ( () => {
                this._isShown && !this._isTransitioning && this._adjustDialog()
            }
            )),
            N.on(this._element, bn, (t => {
                N.one(this._element, _n, (e => {
                    this._element === t.target && this._element === e.target && ("static" !== this._config.backdrop ? this._config.backdrop && this.hide() : this._triggerBackdropTransition())
                }
                ))
            }
            ))
        }
        _hideModal() {
            this._element.style.display = "none",
            this._element.setAttribute("aria-hidden", !0),
            this._element.removeAttribute("aria-modal"),
            this._element.removeAttribute("role"),
            this._isTransitioning = !1,
            this._backdrop.hide(( () => {
                document.body.classList.remove(wn),
                this._resetAdjustments(),
                this._scrollBar.reset(),
                N.trigger(this._element, fn)
            }
            ))
        }
        _isAnimated() {
            return this._element.classList.contains("fade")
        }
        _triggerBackdropTransition() {
            if (N.trigger(this._element, un).defaultPrevented)
                return;
            const t = this._element.scrollHeight > document.documentElement.clientHeight
              , e = this._element.style.overflowY;
            "hidden" === e || this._element.classList.contains(En) || (t || (this._element.style.overflowY = "hidden"),
            this._element.classList.add(En),
            this._queueCallback(( () => {
                this._element.classList.remove(En),
                this._queueCallback(( () => {
                    this._element.style.overflowY = e
                }
                ), this._dialog)
            }
            ), this._dialog),
            this._element.focus())
        }
        _adjustDialog() {
            const t = this._element.scrollHeight > document.documentElement.clientHeight
              , e = this._scrollBar.getWidth()
              , i = e > 0;
            if (i && !t) {
                const t = p() ? "paddingLeft" : "paddingRight";
                this._element.style[t] = `${e}px`
            }
            if (!i && t) {
                const t = p() ? "paddingRight" : "paddingLeft";
                this._element.style[t] = `${e}px`
            }
        }
        _resetAdjustments() {
            this._element.style.paddingLeft = "",
            this._element.style.paddingRight = ""
        }
        static jQueryInterface(t, e) {
            return this.each((function() {
                const i = On.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === i[t])
                        throw new TypeError(`No method named "${t}"`);
                    i[t](e)
                }
            }
            ))
        }
    }
    N.on(document, yn, '[data-bs-toggle="modal"]', (function(t) {
        const e = z.getElementFromSelector(this);
        ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        N.one(e, pn, (t => {
            t.defaultPrevented || N.one(e, fn, ( () => {
                a(this) && this.focus()
            }
            ))
        }
        ));
        const i = z.findOne(".modal.show");
        i && On.getInstance(i).hide(),
        On.getOrCreateInstance(e).toggle(this)
    }
    )),
    R(On),
    m(On);
    const xn = ".bs.offcanvas"
      , kn = ".data-api"
      , Ln = `load${xn}${kn}`
      , Sn = "show"
      , Dn = "showing"
      , $n = "hiding"
      , In = ".offcanvas.show"
      , Nn = `show${xn}`
      , Pn = `shown${xn}`
      , jn = `hide${xn}`
      , Mn = `hidePrevented${xn}`
      , Fn = `hidden${xn}`
      , Hn = `resize${xn}`
      , Wn = `click${xn}${kn}`
      , Bn = `keydown.dismiss${xn}`
      , zn = {
        backdrop: !0,
        keyboard: !0,
        scroll: !1
    }
      , Rn = {
        backdrop: "(boolean|string)",
        keyboard: "boolean",
        scroll: "boolean"
    };
    class qn extends W {
        constructor(t, e) {
            super(t, e),
            this._isShown = !1,
            this._backdrop = this._initializeBackDrop(),
            this._focustrap = this._initializeFocusTrap(),
            this._addEventListeners()
        }
        static get Default() {
            return zn
        }
        static get DefaultType() {
            return Rn
        }
        static get NAME() {
            return "offcanvas"
        }
        toggle(t) {
            return this._isShown ? this.hide() : this.show(t)
        }
        show(t) {
            this._isShown || N.trigger(this._element, Nn, {
                relatedTarget: t
            }).defaultPrevented || (this._isShown = !0,
            this._backdrop.show(),
            this._config.scroll || (new cn).hide(),
            this._element.setAttribute("aria-modal", !0),
            this._element.setAttribute("role", "dialog"),
            this._element.classList.add(Dn),
            this._queueCallback(( () => {
                this._config.scroll && !this._config.backdrop || this._focustrap.activate(),
                this._element.classList.add(Sn),
                this._element.classList.remove(Dn),
                N.trigger(this._element, Pn, {
                    relatedTarget: t
                })
            }
            ), this._element, !0))
        }
        hide() {
            this._isShown && (N.trigger(this._element, jn).defaultPrevented || (this._focustrap.deactivate(),
            this._element.blur(),
            this._isShown = !1,
            this._element.classList.add($n),
            this._backdrop.hide(),
            this._queueCallback(( () => {
                this._element.classList.remove(Sn, $n),
                this._element.removeAttribute("aria-modal"),
                this._element.removeAttribute("role"),
                this._config.scroll || (new cn).reset(),
                N.trigger(this._element, Fn)
            }
            ), this._element, !0)))
        }
        dispose() {
            this._backdrop.dispose(),
            this._focustrap.deactivate(),
            super.dispose()
        }
        _initializeBackDrop() {
            const t = Boolean(this._config.backdrop);
            return new Ui({
                className: "offcanvas-backdrop",
                isVisible: t,
                isAnimated: !0,
                rootElement: this._element.parentNode,
                clickCallback: t ? () => {
                    "static" !== this._config.backdrop ? this.hide() : N.trigger(this._element, Mn)
                }
                : null
            })
        }
        _initializeFocusTrap() {
            return new sn({
                trapElement: this._element
            })
        }
        _addEventListeners() {
            N.on(this._element, Bn, (t => {
                "Escape" === t.key && (this._config.keyboard ? this.hide() : N.trigger(this._element, Mn))
            }
            ))
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = qn.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    N.on(document, Wn, '[data-bs-toggle="offcanvas"]', (function(t) {
        const e = z.getElementFromSelector(this);
        if (["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        l(this))
            return;
        N.one(e, Fn, ( () => {
            a(this) && this.focus()
        }
        ));
        const i = z.findOne(In);
        i && i !== e && qn.getInstance(i).hide(),
        qn.getOrCreateInstance(e).toggle(this)
    }
    )),
    N.on(window, Ln, ( () => {
        for (const t of z.find(In))
            qn.getOrCreateInstance(t).show()
    }
    )),
    N.on(window, Hn, ( () => {
        for (const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))
            "fixed" !== getComputedStyle(t).position && qn.getOrCreateInstance(t).hide()
    }
    )),
    R(qn),
    m(qn);
    const Vn = {
        "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
        a: ["target", "href", "title", "rel"],
        area: [],
        b: [],
        br: [],
        col: [],
        code: [],
        dd: [],
        div: [],
        dl: [],
        dt: [],
        em: [],
        hr: [],
        h1: [],
        h2: [],
        h3: [],
        h4: [],
        h5: [],
        h6: [],
        i: [],
        img: ["src", "srcset", "alt", "title", "width", "height"],
        li: [],
        ol: [],
        p: [],
        pre: [],
        s: [],
        small: [],
        span: [],
        sub: [],
        sup: [],
        strong: [],
        u: [],
        ul: []
    }
      , Kn = new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"])
      , Qn = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i
      , Xn = (t, e) => {
        const i = t.nodeName.toLowerCase();
        return e.includes(i) ? !Kn.has(i) || Boolean(Qn.test(t.nodeValue)) : e.filter((t => t instanceof RegExp)).some((t => t.test(i)))
    }
      , Yn = {
        allowList: Vn,
        content: {},
        extraClass: "",
        html: !1,
        sanitize: !0,
        sanitizeFn: null,
        template: "<div></div>"
    }
      , Un = {
        allowList: "object",
        content: "object",
        extraClass: "(string|function)",
        html: "boolean",
        sanitize: "boolean",
        sanitizeFn: "(null|function)",
        template: "string"
    }
      , Gn = {
        entry: "(string|element|function|null)",
        selector: "(string|element)"
    };
    class Jn extends H {
        constructor(t) {
            super(),
            this._config = this._getConfig(t)
        }
        static get Default() {
            return Yn
        }
        static get DefaultType() {
            return Un
        }
        static get NAME() {
            return "TemplateFactory"
        }
        getContent() {
            return Object.values(this._config.content).map((t => this._resolvePossibleFunction(t))).filter(Boolean)
        }
        hasContent() {
            return this.getContent().length > 0
        }
        changeContent(t) {
            return this._checkContent(t),
            this._config.content = {
                ...this._config.content,
                ...t
            },
            this
        }
        toHtml() {
            const t = document.createElement("div");
            t.innerHTML = this._maybeSanitize(this._config.template);
            for (const [e,i] of Object.entries(this._config.content))
                this._setContent(t, i, e);
            const e = t.children[0]
              , i = this._resolvePossibleFunction(this._config.extraClass);
            return i && e.classList.add(...i.split(" ")),
            e
        }
        _typeCheckConfig(t) {
            super._typeCheckConfig(t),
            this._checkContent(t.content)
        }
        _checkContent(t) {
            for (const [e,i] of Object.entries(t))
                super._typeCheckConfig({
                    selector: e,
                    entry: i
                }, Gn)
        }
        _setContent(t, e, i) {
            const n = z.findOne(i, t);
            n && ((e = this._resolvePossibleFunction(e)) ? o(e) ? this._putElementInTemplate(r(e), n) : this._config.html ? n.innerHTML = this._maybeSanitize(e) : n.textContent = e : n.remove())
        }
        _maybeSanitize(t) {
            return this._config.sanitize ? function(t, e, i) {
                if (!t.length)
                    return t;
                if (i && "function" == typeof i)
                    return i(t);
                const n = (new window.DOMParser).parseFromString(t, "text/html")
                  , s = [].concat(...n.body.querySelectorAll("*"));
                for (const t of s) {
                    const i = t.nodeName.toLowerCase();
                    if (!Object.keys(e).includes(i)) {
                        t.remove();
                        continue
                    }
                    const n = [].concat(...t.attributes)
                      , s = [].concat(e["*"] || [], e[i] || []);
                    for (const e of n)
                        Xn(e, s) || t.removeAttribute(e.nodeName)
                }
                return n.body.innerHTML
            }(t, this._config.allowList, this._config.sanitizeFn) : t
        }
        _resolvePossibleFunction(t) {
            return g(t, [this])
        }
        _putElementInTemplate(t, e) {
            if (this._config.html)
                return e.innerHTML = "",
                void e.append(t);
            e.textContent = t.textContent
        }
    }
    const Zn = new Set(["sanitize", "allowList", "sanitizeFn"])
      , ts = "fade"
      , es = "show"
      , is = ".modal"
      , ns = "hide.bs.modal"
      , ss = "hover"
      , os = "focus"
      , rs = {
        AUTO: "auto",
        TOP: "top",
        RIGHT: p() ? "left" : "right",
        BOTTOM: "bottom",
        LEFT: p() ? "right" : "left"
    }
      , as = {
        allowList: Vn,
        animation: !0,
        boundary: "clippingParents",
        container: !1,
        customClass: "",
        delay: 0,
        fallbackPlacements: ["top", "right", "bottom", "left"],
        html: !1,
        offset: [0, 6],
        placement: "top",
        popperConfig: null,
        sanitize: !0,
        sanitizeFn: null,
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        title: "",
        trigger: "hover focus"
    }
      , ls = {
        allowList: "object",
        animation: "boolean",
        boundary: "(string|element)",
        container: "(string|element|boolean)",
        customClass: "(string|function)",
        delay: "(number|object)",
        fallbackPlacements: "array",
        html: "boolean",
        offset: "(array|string|function)",
        placement: "(string|function)",
        popperConfig: "(null|object|function)",
        sanitize: "boolean",
        sanitizeFn: "(null|function)",
        selector: "(string|boolean)",
        template: "string",
        title: "(string|element|function)",
        trigger: "string"
    };
    class cs extends W {
        constructor(t, e) {
            if (void 0 === vi)
                throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
            super(t, e),
            this._isEnabled = !0,
            this._timeout = 0,
            this._isHovered = null,
            this._activeTrigger = {},
            this._popper = null,
            this._templateFactory = null,
            this._newContent = null,
            this.tip = null,
            this._setListeners(),
            this._config.selector || this._fixTitle()
        }
        static get Default() {
            return as
        }
        static get DefaultType() {
            return ls
        }
        static get NAME() {
            return "tooltip"
        }
        enable() {
            this._isEnabled = !0
        }
        disable() {
            this._isEnabled = !1
        }
        toggleEnabled() {
            this._isEnabled = !this._isEnabled
        }
        toggle() {
            this._isEnabled && (this._activeTrigger.click = !this._activeTrigger.click,
            this._isShown() ? this._leave() : this._enter())
        }
        dispose() {
            clearTimeout(this._timeout),
            N.off(this._element.closest(is), ns, this._hideModalHandler),
            this._element.getAttribute("data-bs-original-title") && this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")),
            this._disposePopper(),
            super.dispose()
        }
        show() {
            if ("none" === this._element.style.display)
                throw new Error("Please use show on visible elements");
            if (!this._isWithContent() || !this._isEnabled)
                return;
            const t = N.trigger(this._element, this.constructor.eventName("show"))
              , e = (c(this._element) || this._element.ownerDocument.documentElement).contains(this._element);
            if (t.defaultPrevented || !e)
                return;
            this._disposePopper();
            const i = this._getTipElement();
            this._element.setAttribute("aria-describedby", i.getAttribute("id"));
            const {container: n} = this._config;
            if (this._element.ownerDocument.documentElement.contains(this.tip) || (n.append(i),
            N.trigger(this._element, this.constructor.eventName("inserted"))),
            this._popper = this._createPopper(i),
            i.classList.add(es),
            "ontouchstart"in document.documentElement)
                for (const t of [].concat(...document.body.children))
                    N.on(t, "mouseover", h);
            this._queueCallback(( () => {
                N.trigger(this._element, this.constructor.eventName("shown")),
                !1 === this._isHovered && this._leave(),
                this._isHovered = !1
            }
            ), this.tip, this._isAnimated())
        }
        hide() {
            if (this._isShown() && !N.trigger(this._element, this.constructor.eventName("hide")).defaultPrevented) {
                if (this._getTipElement().classList.remove(es),
                "ontouchstart"in document.documentElement)
                    for (const t of [].concat(...document.body.children))
                        N.off(t, "mouseover", h);
                this._activeTrigger.click = !1,
                this._activeTrigger[os] = !1,
                this._activeTrigger[ss] = !1,
                this._isHovered = null,
                this._queueCallback(( () => {
                    this._isWithActiveTrigger() || (this._isHovered || this._disposePopper(),
                    this._element.removeAttribute("aria-describedby"),
                    N.trigger(this._element, this.constructor.eventName("hidden")))
                }
                ), this.tip, this._isAnimated())
            }
        }
        update() {
            this._popper && this._popper.update()
        }
        _isWithContent() {
            return Boolean(this._getTitle())
        }
        _getTipElement() {
            return this.tip || (this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())),
            this.tip
        }
        _createTipElement(t) {
            const e = this._getTemplateFactory(t).toHtml();
            if (!e)
                return null;
            e.classList.remove(ts, es),
            e.classList.add(`bs-${this.constructor.NAME}-auto`);
            const i = (t => {
                do {
                    t += Math.floor(1e6 * Math.random())
                } while (document.getElementById(t));
                return t
            }
            )(this.constructor.NAME).toString();
            return e.setAttribute("id", i),
            this._isAnimated() && e.classList.add(ts),
            e
        }
        setContent(t) {
            this._newContent = t,
            this._isShown() && (this._disposePopper(),
            this.show())
        }
        _getTemplateFactory(t) {
            return this._templateFactory ? this._templateFactory.changeContent(t) : this._templateFactory = new Jn({
                ...this._config,
                content: t,
                extraClass: this._resolvePossibleFunction(this._config.customClass)
            }),
            this._templateFactory
        }
        _getContentForTemplate() {
            return {
                ".tooltip-inner": this._getTitle()
            }
        }
        _getTitle() {
            return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title")
        }
        _initializeOnDelegatedTarget(t) {
            return this.constructor.getOrCreateInstance(t.delegateTarget, this._getDelegateConfig())
        }
        _isAnimated() {
            return this._config.animation || this.tip && this.tip.classList.contains(ts)
        }
        _isShown() {
            return this.tip && this.tip.classList.contains(es)
        }
        _createPopper(t) {
            const e = g(this._config.placement, [this, t, this._element])
              , i = rs[e.toUpperCase()];
            return bi(this._element, t, this._getPopperConfig(i))
        }
        _getOffset() {
            const {offset: t} = this._config;
            return "string" == typeof t ? t.split(",").map((t => Number.parseInt(t, 10))) : "function" == typeof t ? e => t(e, this._element) : t
        }
        _resolvePossibleFunction(t) {
            return g(t, [this._element])
        }
        _getPopperConfig(t) {
            const e = {
                placement: t,
                modifiers: [{
                    name: "flip",
                    options: {
                        fallbackPlacements: this._config.fallbackPlacements
                    }
                }, {
                    name: "offset",
                    options: {
                        offset: this._getOffset()
                    }
                }, {
                    name: "preventOverflow",
                    options: {
                        boundary: this._config.boundary
                    }
                }, {
                    name: "arrow",
                    options: {
                        element: `.${this.constructor.NAME}-arrow`
                    }
                }, {
                    name: "preSetPlacement",
                    enabled: !0,
                    phase: "beforeMain",
                    fn: t => {
                        this._getTipElement().setAttribute("data-popper-placement", t.state.placement)
                    }
                }]
            };
            return {
                ...e,
                ...g(this._config.popperConfig, [e])
            }
        }
        _setListeners() {
            const t = this._config.trigger.split(" ");
            for (const e of t)
                if ("click" === e)
                    N.on(this._element, this.constructor.eventName("click"), this._config.selector, (t => {
                        this._initializeOnDelegatedTarget(t).toggle()
                    }
                    ));
                else if ("manual" !== e) {
                    const t = e === ss ? this.constructor.eventName("mouseenter") : this.constructor.eventName("focusin")
                      , i = e === ss ? this.constructor.eventName("mouseleave") : this.constructor.eventName("focusout");
                    N.on(this._element, t, this._config.selector, (t => {
                        const e = this._initializeOnDelegatedTarget(t);
                        e._activeTrigger["focusin" === t.type ? os : ss] = !0,
                        e._enter()
                    }
                    )),
                    N.on(this._element, i, this._config.selector, (t => {
                        const e = this._initializeOnDelegatedTarget(t);
                        e._activeTrigger["focusout" === t.type ? os : ss] = e._element.contains(t.relatedTarget),
                        e._leave()
                    }
                    ))
                }
            this._hideModalHandler = () => {
                this._element && this.hide()
            }
            ,
            N.on(this._element.closest(is), ns, this._hideModalHandler)
        }
        _fixTitle() {
            const t = this._element.getAttribute("title");
            t && (this._element.getAttribute("aria-label") || this._element.textContent.trim() || this._element.setAttribute("aria-label", t),
            this._element.setAttribute("data-bs-original-title", t),
            this._element.removeAttribute("title"))
        }
        _enter() {
            this._isShown() || this._isHovered ? this._isHovered = !0 : (this._isHovered = !0,
            this._setTimeout(( () => {
                this._isHovered && this.show()
            }
            ), this._config.delay.show))
        }
        _leave() {
            this._isWithActiveTrigger() || (this._isHovered = !1,
            this._setTimeout(( () => {
                this._isHovered || this.hide()
            }
            ), this._config.delay.hide))
        }
        _setTimeout(t, e) {
            clearTimeout(this._timeout),
            this._timeout = setTimeout(t, e)
        }
        _isWithActiveTrigger() {
            return Object.values(this._activeTrigger).includes(!0)
        }
        _getConfig(t) {
            const e = F.getDataAttributes(this._element);
            for (const t of Object.keys(e))
                Zn.has(t) && delete e[t];
            return t = {
                ...e,
                ..."object" == typeof t && t ? t : {}
            },
            t = this._mergeConfigObj(t),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        _configAfterMerge(t) {
            return t.container = !1 === t.container ? document.body : r(t.container),
            "number" == typeof t.delay && (t.delay = {
                show: t.delay,
                hide: t.delay
            }),
            "number" == typeof t.title && (t.title = t.title.toString()),
            "number" == typeof t.content && (t.content = t.content.toString()),
            t
        }
        _getDelegateConfig() {
            const t = {};
            for (const [e,i] of Object.entries(this._config))
                this.constructor.Default[e] !== i && (t[e] = i);
            return t.selector = !1,
            t.trigger = "manual",
            t
        }
        _disposePopper() {
            this._popper && (this._popper.destroy(),
            this._popper = null),
            this.tip && (this.tip.remove(),
            this.tip = null)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = cs.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    m(cs);
    const hs = {
        ...cs.Default,
        content: "",
        offset: [0, 8],
        placement: "right",
        template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
        trigger: "click"
    }
      , ds = {
        ...cs.DefaultType,
        content: "(null|string|element|function)"
    };
    class us extends cs {
        static get Default() {
            return hs
        }
        static get DefaultType() {
            return ds
        }
        static get NAME() {
            return "popover"
        }
        _isWithContent() {
            return this._getTitle() || this._getContent()
        }
        _getContentForTemplate() {
            return {
                ".popover-header": this._getTitle(),
                ".popover-body": this._getContent()
            }
        }
        _getContent() {
            return this._resolvePossibleFunction(this._config.content)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = us.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    m(us);
    const fs = ".bs.scrollspy"
      , ps = `activate${fs}`
      , ms = `click${fs}`
      , gs = `load${fs}.data-api`
      , _s = "active"
      , bs = "[href]"
      , vs = ".nav-link"
      , ys = `${vs}, .nav-item > ${vs}, .list-group-item`
      , ws = {
        offset: null,
        rootMargin: "0px 0px -25%",
        smoothScroll: !1,
        target: null,
        threshold: [.1, .5, 1]
    }
      , As = {
        offset: "(number|null)",
        rootMargin: "string",
        smoothScroll: "boolean",
        target: "element",
        threshold: "array"
    };
    class Es extends W {
        constructor(t, e) {
            super(t, e),
            this._targetLinks = new Map,
            this._observableSections = new Map,
            this._rootElement = "visible" === getComputedStyle(this._element).overflowY ? null : this._element,
            this._activeTarget = null,
            this._observer = null,
            this._previousScrollData = {
                visibleEntryTop: 0,
                parentScrollTop: 0
            },
            this.refresh()
        }
        static get Default() {
            return ws
        }
        static get DefaultType() {
            return As
        }
        static get NAME() {
            return "scrollspy"
        }
        refresh() {
            this._initializeTargetsAndObservables(),
            this._maybeEnableSmoothScroll(),
            this._observer ? this._observer.disconnect() : this._observer = this._getNewObserver();
            for (const t of this._observableSections.values())
                this._observer.observe(t)
        }
        dispose() {
            this._observer.disconnect(),
            super.dispose()
        }
        _configAfterMerge(t) {
            return t.target = r(t.target) || document.body,
            t.rootMargin = t.offset ? `${t.offset}px 0px -30%` : t.rootMargin,
            "string" == typeof t.threshold && (t.threshold = t.threshold.split(",").map((t => Number.parseFloat(t)))),
            t
        }
        _maybeEnableSmoothScroll() {
            this._config.smoothScroll && (N.off(this._config.target, ms),
            N.on(this._config.target, ms, bs, (t => {
                const e = this._observableSections.get(t.target.hash);
                if (e) {
                    t.preventDefault();
                    const i = this._rootElement || window
                      , n = e.offsetTop - this._element.offsetTop;
                    if (i.scrollTo)
                        return void i.scrollTo({
                            top: n,
                            behavior: "smooth"
                        });
                    i.scrollTop = n
                }
            }
            )))
        }
        _getNewObserver() {
            const t = {
                root: this._rootElement,
                threshold: this._config.threshold,
                rootMargin: this._config.rootMargin
            };
            return new IntersectionObserver((t => this._observerCallback(t)),t)
        }
        _observerCallback(t) {
            const e = t => this._targetLinks.get(`#${t.target.id}`)
              , i = t => {
                this._previousScrollData.visibleEntryTop = t.target.offsetTop,
                this._process(e(t))
            }
              , n = (this._rootElement || document.documentElement).scrollTop
              , s = n >= this._previousScrollData.parentScrollTop;
            this._previousScrollData.parentScrollTop = n;
            for (const o of t) {
                if (!o.isIntersecting) {
                    this._activeTarget = null,
                    this._clearActiveClass(e(o));
                    continue
                }
                const t = o.target.offsetTop >= this._previousScrollData.visibleEntryTop;
                if (s && t) {
                    if (i(o),
                    !n)
                        return
                } else
                    s || t || i(o)
            }
        }
        _initializeTargetsAndObservables() {
            this._targetLinks = new Map,
            this._observableSections = new Map;
            const t = z.find(bs, this._config.target);
            for (const e of t) {
                if (!e.hash || l(e))
                    continue;
                const t = z.findOne(decodeURI(e.hash), this._element);
                a(t) && (this._targetLinks.set(decodeURI(e.hash), e),
                this._observableSections.set(e.hash, t))
            }
        }
        _process(t) {
            this._activeTarget !== t && (this._clearActiveClass(this._config.target),
            this._activeTarget = t,
            t.classList.add(_s),
            this._activateParents(t),
            N.trigger(this._element, ps, {
                relatedTarget: t
            }))
        }
        _activateParents(t) {
            if (t.classList.contains("dropdown-item"))
                z.findOne(".dropdown-toggle", t.closest(".dropdown")).classList.add(_s);
            else
                for (const e of z.parents(t, ".nav, .list-group"))
                    for (const t of z.prev(e, ys))
                        t.classList.add(_s)
        }
        _clearActiveClass(t) {
            t.classList.remove(_s);
            const e = z.find(`${bs}.${_s}`, t);
            for (const t of e)
                t.classList.remove(_s)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = Es.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    N.on(window, gs, ( () => {
        for (const t of z.find('[data-bs-spy="scroll"]'))
            Es.getOrCreateInstance(t)
    }
    )),
    m(Es);
    const Ts = ".bs.tab"
      , Cs = `hide${Ts}`
      , Os = `hidden${Ts}`
      , xs = `show${Ts}`
      , ks = `shown${Ts}`
      , Ls = `click${Ts}`
      , Ss = `keydown${Ts}`
      , Ds = `load${Ts}`
      , $s = "ArrowLeft"
      , Is = "ArrowRight"
      , Ns = "ArrowUp"
      , Ps = "ArrowDown"
      , js = "Home"
      , Ms = "End"
      , Fs = "active"
      , Hs = "fade"
      , Ws = "show"
      , Bs = ".dropdown-toggle"
      , zs = `:not(${Bs})`
      , Rs = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'
      , qs = `.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`
      , Vs = `.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;
    class Ks extends W {
        constructor(t) {
            super(t),
            this._parent = this._element.closest('.list-group, .nav, [role="tablist"]'),
            this._parent && (this._setInitialAttributes(this._parent, this._getChildren()),
            N.on(this._element, Ss, (t => this._keydown(t))))
        }
        static get NAME() {
            return "tab"
        }
        show() {
            const t = this._element;
            if (this._elemIsActive(t))
                return;
            const e = this._getActiveElem()
              , i = e ? N.trigger(e, Cs, {
                relatedTarget: t
            }) : null;
            N.trigger(t, xs, {
                relatedTarget: e
            }).defaultPrevented || i && i.defaultPrevented || (this._deactivate(e, t),
            this._activate(t, e))
        }
        _activate(t, e) {
            t && (t.classList.add(Fs),
            this._activate(z.getElementFromSelector(t)),
            this._queueCallback(( () => {
                "tab" === t.getAttribute("role") ? (t.removeAttribute("tabindex"),
                t.setAttribute("aria-selected", !0),
                this._toggleDropDown(t, !0),
                N.trigger(t, ks, {
                    relatedTarget: e
                })) : t.classList.add(Ws)
            }
            ), t, t.classList.contains(Hs)))
        }
        _deactivate(t, e) {
            t && (t.classList.remove(Fs),
            t.blur(),
            this._deactivate(z.getElementFromSelector(t)),
            this._queueCallback(( () => {
                "tab" === t.getAttribute("role") ? (t.setAttribute("aria-selected", !1),
                t.setAttribute("tabindex", "-1"),
                this._toggleDropDown(t, !1),
                N.trigger(t, Os, {
                    relatedTarget: e
                })) : t.classList.remove(Ws)
            }
            ), t, t.classList.contains(Hs)))
        }
        _keydown(t) {
            if (![$s, Is, Ns, Ps, js, Ms].includes(t.key))
                return;
            t.stopPropagation(),
            t.preventDefault();
            const e = this._getChildren().filter((t => !l(t)));
            let i;
            if ([js, Ms].includes(t.key))
                i = e[t.key === js ? 0 : e.length - 1];
            else {
                const n = [Is, Ps].includes(t.key);
                i = b(e, t.target, n, !0)
            }
            i && (i.focus({
                preventScroll: !0
            }),
            Ks.getOrCreateInstance(i).show())
        }
        _getChildren() {
            return z.find(qs, this._parent)
        }
        _getActiveElem() {
            return this._getChildren().find((t => this._elemIsActive(t))) || null
        }
        _setInitialAttributes(t, e) {
            this._setAttributeIfNotExists(t, "role", "tablist");
            for (const t of e)
                this._setInitialAttributesOnChild(t)
        }
        _setInitialAttributesOnChild(t) {
            t = this._getInnerElement(t);
            const e = this._elemIsActive(t)
              , i = this._getOuterElement(t);
            t.setAttribute("aria-selected", e),
            i !== t && this._setAttributeIfNotExists(i, "role", "presentation"),
            e || t.setAttribute("tabindex", "-1"),
            this._setAttributeIfNotExists(t, "role", "tab"),
            this._setInitialAttributesOnTargetPanel(t)
        }
        _setInitialAttributesOnTargetPanel(t) {
            const e = z.getElementFromSelector(t);
            e && (this._setAttributeIfNotExists(e, "role", "tabpanel"),
            t.id && this._setAttributeIfNotExists(e, "aria-labelledby", `${t.id}`))
        }
        _toggleDropDown(t, e) {
            const i = this._getOuterElement(t);
            if (!i.classList.contains("dropdown"))
                return;
            const n = (t, n) => {
                const s = z.findOne(t, i);
                s && s.classList.toggle(n, e)
            }
            ;
            n(Bs, Fs),
            n(".dropdown-menu", Ws),
            i.setAttribute("aria-expanded", e)
        }
        _setAttributeIfNotExists(t, e, i) {
            t.hasAttribute(e) || t.setAttribute(e, i)
        }
        _elemIsActive(t) {
            return t.classList.contains(Fs)
        }
        _getInnerElement(t) {
            return t.matches(qs) ? t : z.findOne(qs, t)
        }
        _getOuterElement(t) {
            return t.closest(".nav-item, .list-group-item") || t
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = Ks.getOrCreateInstance(this);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    N.on(document, Ls, Rs, (function(t) {
        ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        l(this) || Ks.getOrCreateInstance(this).show()
    }
    )),
    N.on(window, Ds, ( () => {
        for (const t of z.find(Vs))
            Ks.getOrCreateInstance(t)
    }
    )),
    m(Ks);
    const Qs = ".bs.toast"
      , Xs = `mouseover${Qs}`
      , Ys = `mouseout${Qs}`
      , Us = `focusin${Qs}`
      , Gs = `focusout${Qs}`
      , Js = `hide${Qs}`
      , Zs = `hidden${Qs}`
      , to = `show${Qs}`
      , eo = `shown${Qs}`
      , io = "hide"
      , no = "show"
      , so = "showing"
      , oo = {
        animation: "boolean",
        autohide: "boolean",
        delay: "number"
    }
      , ro = {
        animation: !0,
        autohide: !0,
        delay: 5e3
    };
    class ao extends W {
        constructor(t, e) {
            super(t, e),
            this._timeout = null,
            this._hasMouseInteraction = !1,
            this._hasKeyboardInteraction = !1,
            this._setListeners()
        }
        static get Default() {
            return ro
        }
        static get DefaultType() {
            return oo
        }
        static get NAME() {
            return "toast"
        }
        show() {
            N.trigger(this._element, to).defaultPrevented || (this._clearTimeout(),
            this._config.animation && this._element.classList.add("fade"),
            this._element.classList.remove(io),
            d(this._element),
            this._element.classList.add(no, so),
            this._queueCallback(( () => {
                this._element.classList.remove(so),
                N.trigger(this._element, eo),
                this._maybeScheduleHide()
            }
            ), this._element, this._config.animation))
        }
        hide() {
            this.isShown() && (N.trigger(this._element, Js).defaultPrevented || (this._element.classList.add(so),
            this._queueCallback(( () => {
                this._element.classList.add(io),
                this._element.classList.remove(so, no),
                N.trigger(this._element, Zs)
            }
            ), this._element, this._config.animation)))
        }
        dispose() {
            this._clearTimeout(),
            this.isShown() && this._element.classList.remove(no),
            super.dispose()
        }
        isShown() {
            return this._element.classList.contains(no)
        }
        _maybeScheduleHide() {
            this._config.autohide && (this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout(( () => {
                this.hide()
            }
            ), this._config.delay)))
        }
        _onInteraction(t, e) {
            switch (t.type) {
            case "mouseover":
            case "mouseout":
                this._hasMouseInteraction = e;
                break;
            case "focusin":
            case "focusout":
                this._hasKeyboardInteraction = e
            }
            if (e)
                return void this._clearTimeout();
            const i = t.relatedTarget;
            this._element === i || this._element.contains(i) || this._maybeScheduleHide()
        }
        _setListeners() {
            N.on(this._element, Xs, (t => this._onInteraction(t, !0))),
            N.on(this._element, Ys, (t => this._onInteraction(t, !1))),
            N.on(this._element, Us, (t => this._onInteraction(t, !0))),
            N.on(this._element, Gs, (t => this._onInteraction(t, !1)))
        }
        _clearTimeout() {
            clearTimeout(this._timeout),
            this._timeout = null
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = ao.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    return R(ao),
    m(ao),
    {
        Alert: Q,
        Button: Y,
        Carousel: xt,
        Collapse: Bt,
        Dropdown: qi,
        Modal: On,
        Offcanvas: qn,
        Popover: us,
        ScrollSpy: Es,
        Tab: Ks,
        Toast: ao,
        Tooltip: cs
    }
}
));
//# sourceMappingURL=bootstrap.bundle.min.js.map
( () => {
    "use strict";
    var e = {};
    function t(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    e.amdO = {};
    var n = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var n, i, o;
        return n = e,
        o = [{
            key: "load",
            value: function(t, n) {
                return (new e).loadCollection(t, n)
            }
        }],
        (i = [{
            key: "loadCollection",
            value: function(e, t) {
                var n = this
                  , i = e.js ? e.js : []
                  , o = e.css ? e.css : []
                  , a = e.img ? e.img : [];
                i = r(i, (function(e) {
                    return !document.querySelector('head script[src="' + e + '"]')
                }
                )),
                o = r(o, (function(e) {
                    return !document.querySelector('head link[href="' + e + '"]')
                }
                ));
                var s = 0
                  , u = !1
                  , l = !1;
                function c() {
                    return !!l && !!u && !(s < o.length) && void (t && t())
                }
                0 !== i.length || 0 !== o.length || 0 !== a.length ? (this.loadJavaScript(i, (function() {
                    u = !0,
                    c()
                }
                )),
                o.forEach((function(e) {
                    n.loadStyleSheet(e, (function() {
                        s++,
                        c()
                    }
                    ))
                }
                )),
                this.loadImage(a, (function() {
                    l = !0,
                    c()
                }
                ))) : t && t()
            }
        }, {
            key: "loadStyleSheet",
            value: function(e, t) {
                var n = document.createElement("link");
                return n.setAttribute("rel", "stylesheet"),
                n.setAttribute("type", "text/css"),
                n.setAttribute("href", e),
                n.addEventListener("load", t, !1),
                void 0 !== n && document.getElementsByTagName("head")[0].appendChild(n),
                n
            }
        }, {
            key: "loadJavaScript",
            value: function(e, t) {
                if (e.length <= 0)
                    return t();
                var n = this
                  , r = e.shift()
                  , i = document.createElement("script");
                i.setAttribute("type", "text/javascript"),
                i.setAttribute("src", r),
                i.addEventListener("load", (function() {
                    n.loadJavaScript(e, t)
                }
                ), !1),
                void 0 !== i && document.getElementsByTagName("head")[0].appendChild(i)
            }
        }, {
            key: "loadImage",
            value: function(e, t) {
                if (e.length <= 0)
                    return t();
                var n = 0;
                e.forEach((function(r) {
                    var i = new Image;
                    i.onload = function() {
                        ++n == e.length && t && t()
                    }
                    ,
                    i.src = r
                }
                ))
            }
        }]) && t(n.prototype, i),
        o && t(n, o),
        Object.defineProperty(n, "prototype", {
            writable: !1
        }),
        e
    }();
    function r(e, t) {
        for (var n = [], r = e.length, i = 0; i < r; i++)
            t(e[i]) && n.push(e[i]);
        return n
    }
    function i(e) {
        return i = "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
        }
        ,
        i(e)
    }
    function o(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var a = function() {
        function e(t, n) {
            if (function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            !t)
                throw new Error("The request handler name is not specified.");
            if (!t.match(/^(?:\w+\:{2})?on*/))
                throw new Error('Invalid handler name. The correct handler name format is: "onEvent".');
            if ("undefined" == typeof FormData)
                throw new Error("The browser does not support the FormData interface.");
            this.options = n,
            this.handler = t
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "getRequestOptions",
            value: function() {
                return {
                    method: "POST",
                    url: this.options.url ? this.options.url : window.location.href,
                    headers: this.buildHeaders(),
                    responseType: !1 === this.options.download ? "" : "blob"
                }
            }
        }, {
            key: "buildHeaders",
            value: function() {
                var e = this.handler
                  , t = this.options
                  , n = {
                    "X-Requested-With": "XMLHttpRequest",
                    "X-OCTOBER-REQUEST-HANDLER": e
                };
                t.files || (n["Content-Type"] = t.bulk ? "application/json" : "application/x-www-form-urlencoded"),
                t.flash && (n["X-OCTOBER-REQUEST-FLASH"] = 1),
                t.partial && (n["X-OCTOBER-REQUEST-PARTIAL"] = t.partial);
                var r = this.extractPartials(t.update, t.partial);
                r && (n["X-OCTOBER-REQUEST-PARTIALS"] = r);
                var i = this.getXSRFToken();
                i && (n["X-XSRF-TOKEN"] = i);
                var o = this.getCSRFToken();
                return o && (n["X-CSRF-TOKEN"] = o),
                t.headers && t.headers.constructor === {}.constructor && Object.assign(n, t.headers),
                n
            }
        }, {
            key: "extractPartials",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                  , t = arguments.length > 1 ? arguments[1] : void 0
                  , n = [];
                if (e) {
                    if ("object" !== i(e))
                        throw new Error("Invalid update value. The correct format is an object ({...})");
                    for (var r in e)
                        "_self" === r && t ? n.push(t) : n.push(r)
                }
                return n.join("&")
            }
        }, {
            key: "getCSRFToken",
            value: function() {
                var e = document.querySelector('meta[name="csrf-token"]');
                return e ? e.getAttribute("content") : null
            }
        }, {
            key: "getXSRFToken",
            value: function() {
                var e = null;
                if (document.cookie && "" != document.cookie)
                    for (var t = document.cookie.split(";"), n = 0; n < t.length; n++) {
                        var r = t[n].replace(/^([\s]*)|([\s]*)$/g, "");
                        if ("XSRF-TOKEN=" == r.substring(0, 11)) {
                            e = decodeURIComponent(r.substring(11));
                            break
                        }
                    }
                return e
            }
        }],
        r = [{
            key: "fetch",
            value: function(e, t) {
                return new this(e,t).getRequestOptions()
            }
        }],
        n && o(t.prototype, n),
        r && o(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function s(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var u = "pending"
      , l = "rejected"
      , c = "resolved"
      , f = function() {
        function e(t) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.options = t || {},
            this.stateStr = u,
            this.successFuncs = [],
            this.failureFuncs = [],
            this.progressFuncs = [],
            this.resolveArgs = [],
            this.rejectArgs = [],
            this.progressArgs = [],
            this.isProgressNotified = !1
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "resolve",
            value: function() {
                return this.stateStr === u && (this.resolveArgs = arguments,
                this.callFunction.call(this, this.successFuncs, this.resolveArgs),
                this.stateStr = c),
                this
            }
        }, {
            key: "reject",
            value: function() {
                return this.stateStr === u && (this.rejectArgs = arguments,
                this.callFunction.call(this, this.failureFuncs, this.rejectArgs),
                this.stateStr = l),
                this
            }
        }, {
            key: "notify",
            value: function() {
                return this.stateStr === u && (this.progressArgs = arguments,
                this.callFunction.call(this, this.progressFuncs, this.progressArgs),
                this.isProgressNotified = !0),
                this
            }
        }, {
            key: "abort",
            value: function() {
                this.options.delegate && this.options.delegate.abort()
            }
        }, {
            key: "done",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.successFuncs = this.successFuncs.concat(e),
                this.stateStr === c && this.callFunction.call(this, e, this.resolveArgs),
                this
            }
        }, {
            key: "fail",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.failureFuncs = this.failureFuncs.concat(e),
                this.stateStr === l && this.callFunction.call(this, e, this.rejectArgs),
                this
            }
        }, {
            key: "progress",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.progressFuncs = this.progressFuncs.concat(e),
                this.stateStr === u && this.isProgressNotified && this.callFunction.call(this, e, this.progressArgs),
                this
            }
        }, {
            key: "always",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.successFuncs = this.successFuncs.concat(e),
                this.failureFuncs = this.failureFuncs.concat(e),
                this.stateStr !== u && this.callFunction.call(this, e, this.resolveArgs || this.rejectArgs),
                this
            }
        }, {
            key: "then",
            value: function() {
                var e = [];
                for (var t in arguments) {
                    var n;
                    n = Array.isArray(arguments[t]) ? arguments[t] : [arguments[t]],
                    e.push(n)
                }
                return this.done.apply(this, e[0]),
                this.fail.apply(this, e[1]),
                this.progress.apply(this, e[2]),
                this
            }
        }, {
            key: "promise",
            value: function() {
                var e = ["resolve", "reject", "promise", "notify"]
                  , t = {};
                for (var n in this)
                    -1 === e.indexOf(n) && (t[n] = this[n]);
                return t
            }
        }, {
            key: "state",
            value: function() {
                return arguments.length > 0 && (stateStr = arguments[0]),
                stateStr
            }
        }, {
            key: "callFunction",
            value: function(e, t, n) {
                var r = (n = n || {}).scope || this;
                for (var i in e) {
                    var o = e[i];
                    "function" == typeof o && o.apply(r, t)
                }
            }
        }],
        n && s(t.prototype, n),
        r && s(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function d() {
        return oc.useTurbo && oc.useTurbo() ? oc.AjaxTurbo.controller.getLastVisitUrl() : function() {
            if (!document.referrer)
                return null;
            try {
                var e = new URL(document.referrer);
                if (e.origin !== location.origin)
                    return null;
                var t = localStorage.getItem("ocPushStateReferrer");
                return t && 0 === t.indexOf(e.pathname) ? t : document.referrer
            } catch (e) {}
        }()
    }
    function h(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function p(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? h(Object(n), !0).forEach((function(t) {
                y(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function y(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function v(e) {
        return function(e) {
            if (Array.isArray(e))
                return g(e)
        }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                return Array.from(e)
        }(e) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return g(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return g(e, t)
        }(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function g(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function m(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var b = "replace"
      , w = "prepend"
      , E = "append"
      , k = "update"
      , A = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.el = t.el,
            this.delegate = t,
            this.context = n,
            this.options = r,
            this.context.start = this.start.bind(this),
            this.context.success = this.success.bind(this),
            this.context.error = this.error.bind(this),
            this.context.complete = this.complete.bind(this),
            this.context.cancel = this.cancel.bind(this)
        }
        var t, r, i;
        return t = e,
        (r = [{
            key: "invoke",
            value: function(e, t) {
                return this.options[e] ? this.options[e].apply(this.context, t) : this[e] ? this[e].apply(this, v(t)) : void 0
            }
        }, {
            key: "invokeFunc",
            value: function(e, t) {
                if (this.options[e])
                    return this.options[e](this.el, t)
            }
        }, {
            key: "start",
            value: function(e) {
                this.invoke("markAsUpdating", [!0]),
                this.delegate.options.message && this.invoke("handleProgressMessage", [this.delegate.options.message, !1])
            }
        }, {
            key: "success",
            value: function(e, t, n) {
                var r = this
                  , i = new f;
                if (!1 === this.invoke("beforeUpdate", [e, t, n]))
                    return i;
                if (!1 === this.invokeFunc("beforeUpdateFunc", e))
                    return i;
                if (!this.delegate.applicationAllowsUpdate(e, t, n))
                    return i;
                if (this.delegate.options.download && e instanceof Blob)
                    return this.invoke("handleFileDownload", [e, n]),
                    this.delegate.notifyApplicationRequestSuccess(e, t, n),
                    this.invokeFunc("successFunc", e),
                    i;
                if (this.delegate.options.flash && e.X_OCTOBER_FLASH_MESSAGES)
                    for (var o in e.X_OCTOBER_FLASH_MESSAGES)
                        this.invoke("handleFlashMessage", [e.X_OCTOBER_FLASH_MESSAGES[o], o]);
                return e.X_OCTOBER_DISPATCHES && this.invoke("handleBrowserEvents", [e.X_OCTOBER_DISPATCHES]) || (i = this.invoke("handleUpdateResponse", [e, t, n])).done((function() {
                    r.delegate.notifyApplicationRequestSuccess(e, t, n),
                    r.invokeFunc("successFunc", e)
                }
                )),
                i
            }
        }, {
            key: "error",
            value: function(e, t, n) {
                var r, i = this, o = new f;
                if (void 0 !== window.ocUnloading && window.ocUnloading)
                    return o;
                if (this.delegate.toggleRedirect(!1),
                406 == t && e) {
                    if (e.X_OCTOBER_DISPATCHES && this.invoke("handleBrowserEvents", [e.X_OCTOBER_DISPATCHES]))
                        return o;
                    r = e.X_OCTOBER_ERROR_MESSAGE,
                    o = this.invoke("handleUpdateResponse", [e, t, n])
                } else
                    r = e,
                    o.resolve();
                return o.done((function() {
                    i.el !== document && i.el.setAttribute("data-error-message", r),
                    i.delegate.applicationAllowsError(e, t, n) && !1 !== i.invokeFunc("errorFunc", e) && i.invoke("handleErrorMessage", [r])
                }
                )),
                o
            }
        }, {
            key: "complete",
            value: function(e, t, n) {
                this.delegate.notifyApplicationRequestComplete(e, t, n),
                this.invokeFunc("completeFunc", e),
                this.invoke("markAsUpdating", [!1]),
                this.delegate.options.message && this.invoke("handleProgressMessage", [null, !0])
            }
        }, {
            key: "cancel",
            value: function() {
                this.invokeFunc("cancelFunc")
            }
        }, {
            key: "handleConfirmMessage",
            value: function(e) {
                var t = this
                  , n = new f;
                if (n.done((function() {
                    t.delegate.sendInternal()
                }
                )).fail((function() {
                    t.invoke("cancel", [])
                }
                )),
                this.delegate.notifyApplicationConfirmMessage(e, n).defaultPrevented)
                    return !1;
                if (e) {
                    var r = confirm(e);
                    return r || this.invoke("cancel", []),
                    r
                }
            }
        }, {
            key: "handleProgressMessage",
            value: function(e, t) {}
        }, {
            key: "handleFlashMessage",
            value: function(e, t) {}
        }, {
            key: "handleErrorMessage",
            value: function(e) {
                this.delegate.notifyApplicationErrorMessage(e).defaultPrevented || e && alert(e)
            }
        }, {
            key: "handleValidationMessage",
            value: function(e, t) {
                if (this.delegate.notifyApplicationBeforeValidate(e, t),
                this.delegate.formEl) {
                    var n = !0;
                    for (var r in t) {
                        var i, o = [];
                        i = r.replace(/\.(\w+)/g, "[$1]"),
                        o.push('[name="' + i + '"]:not([disabled])'),
                        o.push('[name="' + i + '[]"]:not([disabled])'),
                        i = ("." + r).replace(/\.(\w+)/g, "[$1]"),
                        o.push('[name$="' + i + '"]:not([disabled])'),
                        o.push('[name$="' + i + '[]"]:not([disabled])');
                        var a = r.replace(/\.[0-9]+$/g, "");
                        r !== a && (i = a.replace(/\.(\w+)/g, "[$1]"),
                        o.push('[name="' + i + '[]"]:not([disabled])'),
                        i = ("." + a).replace(/\.(\w+)/g, "[$1]"),
                        o.push('[name$="' + i + '[]"]:not([disabled])'));
                        var s = this.delegate.formEl.querySelector(o.join(", "));
                        if (s) {
                            var u = this.delegate.notifyApplicationFieldInvalid(s, r, t[r], n);
                            n && (u.defaultPrevented || s.focus(),
                            n = !1)
                        }
                    }
                }
            }
        }, {
            key: "handleBrowserEvents",
            value: function(e) {
                var t = this;
                if (!e || !e.length)
                    return !1;
                var n = !1;
                return e.forEach((function(e) {
                    t.delegate.notifyApplicationCustomEvent(e.event, p(p({}, e.data || {}), {}, {
                        context: t.context
                    })).defaultPrevented && (n = !0)
                }
                )),
                n
            }
        }, {
            key: "handleRedirectResponse",
            value: function(e) {
                this.delegate.notifyApplicationBeforeRedirect().defaultPrevented || (this.options.browserRedirectBack && (e = d() || e),
                oc.useTurbo && oc.useTurbo() ? oc.visit(e) : location.assign(e))
            }
        }, {
            key: "markAsUpdating",
            value: function(e) {
                var t = this.options.update || {};
                for (var n in t) {
                    var r = t[n]
                      , i = [];
                    t._self && n == this.options.partial && this.delegate.partialEl ? (r = t._self,
                    i = [this.delegate.partialEl]) : i = j(r, '[data-ajax-partial="' + n + '"]'),
                    i.forEach((function(t) {
                        e ? t.setAttribute("data-ajax-updating", "") : t.removeAttribute("data-ajax-updating")
                    }
                    ))
                }
            }
        }, {
            key: "handleUpdateResponse",
            value: function(e, t, r) {
                var i = this
                  , o = this.options.update || {}
                  , a = new f;
                return a.done((function() {
                    var n = function() {
                        var n = o[a] || a
                          , s = [];
                        o._self && a == i.options.partial && i.delegate.partialEl ? (n = o._self,
                        s = [i.delegate.partialEl]) : s = j(n, '[data-ajax-partial="' + a + '"]'),
                        s.forEach((function(o) {
                            var s = function(e, t) {
                                if ("string" == typeof e) {
                                    if ("!" === e.charAt(0))
                                        return b;
                                    if ("@" === e.charAt(0))
                                        return E;
                                    if ("^" === e.charAt(0))
                                        return w
                                }
                                return void 0 !== t.dataset.ajaxUpdateMode ? t.dataset.ajaxUpdateMode : k
                            }(n, o);
                            if (s === b) {
                                var u = o.parentNode;
                                o.insertAdjacentHTML("afterEnd", e[a]),
                                u.removeChild(o),
                                O(u, e[a])
                            } else
                                s === E ? (o.insertAdjacentHTML("beforeEnd", e[a]),
                                O(o, e[a])) : s === w ? (o.insertAdjacentHTML("afterBegin", e[a]),
                                O(o, e[a])) : (i.delegate.notifyApplicationBeforeReplace(o),
                                o.innerHTML = e[a],
                                function(e) {
                                    Array.from(e.querySelectorAll("script")).forEach((function(e) {
                                        var t = document.createElement("script");
                                        Array.from(e.attributes).forEach((function(e) {
                                            return t.setAttribute(e.name, e.value)
                                        }
                                        )),
                                        t.appendChild(document.createTextNode(e.innerHTML)),
                                        e.parentNode.replaceChild(t, e)
                                    }
                                    ))
                                }(o));
                            i.delegate.notifyApplicationAjaxUpdate(o, e, t, r)
                        }
                        ))
                    };
                    for (var a in e)
                        n();
                    setTimeout((function() {
                        i.delegate.notifyApplicationUpdateComplete(e, t, r),
                        i.invoke("afterUpdate", [e, t, r]),
                        i.invokeFunc("afterUpdateFunc", e)
                    }
                    ), 0)
                }
                )),
                e.X_OCTOBER_REDIRECT && this.delegate.toggleRedirect(e.X_OCTOBER_REDIRECT),
                this.delegate.isRedirect && this.invoke("handleRedirectResponse", [this.delegate.options.redirect]),
                e.X_OCTOBER_ERROR_FIELDS && this.invoke("handleValidationMessage", [e.X_OCTOBER_ERROR_MESSAGE, e.X_OCTOBER_ERROR_FIELDS]),
                e.X_OCTOBER_ASSETS ? n.load(e.X_OCTOBER_ASSETS, (function() {
                    return a.resolve()
                }
                )) : a.resolve(),
                a
            }
        }, {
            key: "handleFileDownload",
            value: function(e, t) {
                if (this.options.browserTarget)
                    window.open(window.URL.createObjectURL(e), this.options.browserTarget);
                else {
                    var n = "string" == typeof this.options.download ? this.options.download : function(e) {
                        var t = e.getResponseHeader("Content-Disposition");
                        if (!t)
                            return null;
                        for (var n = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/g, r = null, i = null; null !== (i = n.exec(t)); )
                            r = i;
                        return null !== r && r[1] ? null === /filename[^;*=\n]*\*=[^']*''/.exec(r[0]) ? r[1].replace(/['"]/g, "") : decodeURIComponent(r[1].substring(r[1].indexOf("''") + 2)) : null
                    }(t);
                    if (n) {
                        var r = document.createElement("a");
                        r.href = window.URL.createObjectURL(e),
                        r.download = n,
                        r.target = "_blank",
                        r.click(),
                        window.URL.revokeObjectURL(r.href)
                    }
                }
            }
        }, {
            key: "applyQueryToUrl",
            value: function(e) {
                for (var t = new URLSearchParams(window.location.search), n = function() {
                    var n = i[r]
                      , o = e[n];
                    Array.isArray(o) ? (t.delete(n),
                    t.delete("".concat(n, "[]")),
                    o.forEach((function(e) {
                        return t.append("".concat(n, "[]"), e)
                    }
                    ))) : null === o ? (t.delete(n),
                    t.delete("".concat(n, "[]"))) : t.set(n, o)
                }, r = 0, i = Object.keys(e); r < i.length; r++)
                    n();
                var o = window.location.pathname
                  , a = t.toString();
                a && (o += "?" + a.replaceAll("%5B%5D=", "[]=")),
                oc.useTurbo && oc.useTurbo() ? oc.visit(o, {
                    action: "swap",
                    scroll: !1
                }) : (history.replaceState(null, "", o),
                localStorage.setItem("ocPushStateReferrer", o))
            }
        }]) && m(t.prototype, r),
        i && m(t, i),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function j(e, t) {
        return !0 === e ? document.querySelectorAll(t) : "string" != typeof e ? [e] : -1 === ["#", ".", "@", "^", "!", "="].indexOf(e.charAt(0)) ? [] : (-1 !== ["@", "^", "!", "="].indexOf(e.charAt(0)) && (e = e.substring(1)),
        e || (e = t),
        document.querySelectorAll(e))
    }
    function O(e, t) {
        var n = document.createElement("div");
        n.innerHTML = t,
        Array.from(n.querySelectorAll("script")).forEach((function(t) {
            var n = document.createElement("script");
            Array.from(t.attributes).forEach((function(e) {
                return n.setAttribute(e.name, e.value)
            }
            )),
            n.appendChild(document.createTextNode(t.innerHTML)),
            e.appendChild(n),
            e.removeChild(n)
        }
        ))
    }
    function x(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var S = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "assignToObj",
            value: function(t, n, r) {
                (new e).assignObjectInternal(t, n, r)
            }
        }, {
            key: "serializeJSON",
            value: function(t) {
                return (new e).parseContainer(t)
            }
        }],
        (n = [{
            key: "parseContainer",
            value: function(e) {
                var t = this
                  , n = {};
                return e.querySelectorAll("input, textarea, select").forEach((function(e) {
                    if (!(!e.name || e.disabled || ["file", "reset", "submit", "button"].indexOf(e.type) > -1) && (!(["checkbox", "radio"].indexOf(e.type) > -1) || e.checked)) {
                        if ("select-multiple" === e.type) {
                            var r = [];
                            return Array.from(e.options).forEach((function(t) {
                                t.selected && r.push({
                                    name: e.name,
                                    value: t.value
                                })
                            }
                            )),
                            void t.assignObjectInternal(n, e.name, r)
                        }
                        t.assignObjectInternal(n, e.name, e.value)
                    }
                }
                )),
                n
            }
        }, {
            key: "assignObjectInternal",
            value: function(e, t, n) {
                this.assignObjectNested(e, this.nameToArray(t), n, t.endsWith("[]"))
            }
        }, {
            key: "assignObjectNested",
            value: function(e, t, n, r) {
                var i = e
                  , o = t.length - 1;
                t.forEach((function(e, t) {
                    r && t === o ? (Array.isArray(i[e]) || (i[e] = []),
                    i[e].push(n)) : (void 0 !== i[e] && i[e].constructor === {}.constructor || (i[e] = {}),
                    t === o && (i[e] = n),
                    i = i[e])
                }
                ))
            }
        }, {
            key: "nameToArray",
            value: function(e) {
                for (var t, n = /([^\]\[]+)/g, r = []; t = n.exec(e); )
                    r.push(t[0]);
                return r
            }
        }]) && x(t.prototype, n),
        r && x(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function T(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var q = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.userData = t || {},
            this.targetEl = n,
            this.formEl = r
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "getRequestData",
            value: function() {
                var e;
                return e = this.formEl ? new FormData(this.formEl) : new FormData,
                this.appendSingleInputElement(e),
                e
            }
        }, {
            key: "getAsFormData",
            value: function() {
                return this.appendJsonToFormData(this.getRequestData(), this.userData)
            }
        }, {
            key: "getAsQueryString",
            value: function() {
                return this.convertFormDataToQuery(this.getAsFormData())
            }
        }, {
            key: "getAsJsonData",
            value: function() {
                return JSON.stringify(this.convertFormDataToJson(this.getAsFormData()))
            }
        }, {
            key: "appendSingleInputElement",
            value: function(e) {
                if (!this.formEl && this.targetEl && (t = this.targetEl,
                ["input", "select", "textarea"].includes((t.tagName || "").toLowerCase()))) {
                    var t, n = this.targetEl.name;
                    n && void 0 === this.userData[n] && ("file" === this.targetEl.type ? this.targetEl.files.forEach((function(t) {
                        e.append(n, t)
                    }
                    )) : e.append(n, this.targetEl.value))
                }
            }
        }, {
            key: "appendJsonToFormData",
            value: function(e, t, n) {
                var r = this;
                for (var i in t) {
                    var o = i;
                    n && (o = n + "[" + i + "]");
                    var a = t[i];
                    a && a.constructor === {}.constructor ? this.appendJsonToFormData(e, a, o) : a && a.constructor === [].constructor ? a.forEach((function(t, n) {
                        t.constructor === {}.constructor || t.constructor === [].constructor ? r.appendJsonToFormData(e, t, o + "[" + n + "]") : e.append(o + "[]", r.castJsonToFormData(t))
                    }
                    )) : e.append(o, this.castJsonToFormData(a))
                }
                return e
            }
        }, {
            key: "convertFormDataToQuery",
            value: function(e) {
                var t = this.formDataToArray(e);
                return Object.keys(t).map((function(e) {
                    return e.endsWith("[]") ? t[e].map((function(t) {
                        return encodeURIComponent(e) + "=" + encodeURIComponent(t)
                    }
                    )).join("&") : encodeURIComponent(e) + "=" + encodeURIComponent(t[e])
                }
                )).join("&")
            }
        }, {
            key: "convertFormDataToJson",
            value: function(e) {
                var t = this.formDataToArray(e)
                  , n = {};
                for (var r in t)
                    S.assignToObj(n, r, t[r]);
                return n
            }
        }, {
            key: "formDataToArray",
            value: function(e) {
                return Object.fromEntries(Array.from(e.keys()).map((function(t) {
                    return [t, t.endsWith("[]") ? e.getAll(t) : e.getAll(t).pop()]
                }
                )))
            }
        }, {
            key: "castJsonToFormData",
            value: function(e) {
                return null === e ? "" : !0 === e ? "1" : !1 === e ? "0" : e
            }
        }]) && T(t.prototype, n),
        r && T(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function R(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
          , n = t.target
          , r = void 0 === n ? document : n
          , i = t.detail
          , o = void 0 === i ? {} : i
          , a = t.bubbles
          , s = void 0 === a || a
          , u = t.cancelable
          , l = void 0 === u || u
          , c = new CustomEvent(e,{
            detail: o,
            bubbles: s,
            cancelable: l
        });
        return r.dispatchEvent(c),
        c
    }
    function C(e) {
        return e.replace(/^\n/, "")
    }
    function P(e, t) {
        return e.reduce((function(e, n, r) {
            return e + n + (null == t[r] ? "" : t[r])
        }
        ), "")
    }
    function F(e, t) {
        var n = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!n) {
            if (Array.isArray(e) || (n = B(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var r = 0
                  , i = function() {};
                return {
                    s: i,
                    n: function() {
                        return r >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[r++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: i
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function() {
                n = n.call(e)
            },
            n: function() {
                var e = n.next();
                return a = e.done,
                e
            },
            e: function(e) {
                s = !0,
                o = e
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
        }
    }
    function D(e, t) {
        return function(e) {
            if (Array.isArray(e))
                return e
        }(e) || function(e, t) {
            var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
            if (null == n)
                return;
            var r, i, o = [], a = !0, s = !1;
            try {
                for (n = n.call(e); !(a = (r = n.next()).done) && (o.push(r.value),
                !t || o.length !== t); a = !0)
                    ;
            } catch (e) {
                s = !0,
                i = e
            } finally {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw i
                }
            }
            return o
        }(e, t) || B(e, t) || function() {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function B(e, t) {
        if (e) {
            if ("string" == typeof e)
                return I(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name),
            "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? I(e, t) : void 0
        }
    }
    function I(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function L(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var U = /[^.]*(?=\..*)\.|.*/
      , N = /\..*/
      , J = /::\d+$/
      , M = {}
      , _ = 1
      , Q = {
        mouseenter: "mouseover",
        mouseleave: "mouseout"
    }
      , H = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"])
      , X = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "on",
            value: function(e, t, n, r, i) {
                G(e, t, n, r, i, !1)
            }
        }, {
            key: "one",
            value: function(e, t, n, r, i) {
                G(e, t, n, r, i, !0)
            }
        }, {
            key: "off",
            value: function(e, t, n, r, i) {
                if ("string" == typeof t && e) {
                    var o = D(z(t, n, r, i), 4)
                      , a = o[0]
                      , s = o[1]
                      , u = o[2]
                      , l = o[3]
                      , c = u !== t
                      , f = K(e)
                      , d = f[u] || {}
                      , h = t.startsWith(".");
                    if (void 0 === s) {
                        if (h)
                            for (var p = 0, y = Object.keys(f); p < y.length; p++)
                                Y(e, f, y[p], t.slice(1));
                        for (var v = 0, g = Object.keys(d); v < g.length; v++) {
                            var m = g[v]
                              , b = m.replace(J, "");
                            if (!c || t.includes(b)) {
                                var w = d[m];
                                Z(e, f, u, w.callable, w.delegationSelector, l)
                            }
                        }
                    } else {
                        if (!d)
                            return;
                        Z(e, f, u, s, a ? n : null, l)
                    }
                }
            }
        }, {
            key: "dispatch",
            value: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
                  , n = t.target
                  , r = void 0 === n ? document : n
                  , i = t.detail
                  , o = void 0 === i ? {} : i
                  , a = t.bubbles
                  , s = void 0 === a || a
                  , u = t.cancelable
                  , l = void 0 === u || u;
                return R(e, {
                    target: r,
                    detail: o,
                    bubbles: s,
                    cancelable: l
                })
            }
        }],
        (n = null) && L(t.prototype, n),
        r && L(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function V(e, t) {
        return t && "".concat(t, "::").concat(_++) || e.uidEvent || _++
    }
    function K(e) {
        var t = V(e);
        return e.uidEvent = t,
        M[t] = M[t] || {},
        M[t]
    }
    function W(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
        return Object.values(e).find((function(e) {
            return e.callable === t && e.delegationSelector === n
        }
        ))
    }
    function z(e, t, n, r) {
        var i, o = "string" == typeof t, a = o ? n : t, s = o ? r : n, u = (i = (i = e).replace(N, ""),
        Q[i] || i);
        return H.has(u) || (u = e),
        [o, a, u, s]
    }
    function G(e, t, n, r, i, o) {
        if ("string" == typeof t && e) {
            var a = D(z(t, n, r, i), 4)
              , s = a[0]
              , u = a[1]
              , l = a[2]
              , c = a[3];
            if (t in Q) {
                u = function(e) {
                    return function(t) {
                        if (!t.relatedTarget || t.relatedTarget !== t.delegateTarget && !t.delegateTarget.contains(t.relatedTarget))
                            return e.call(this, t)
                    }
                }(u)
            }
            var f = K(e)
              , d = f[l] || (f[l] = {})
              , h = W(d, u, s ? n : null);
            if (h)
                h.oneOff = h.oneOff && o;
            else {
                var p = V(u, t.replace(U, ""))
                  , y = s ? function(e, t, n) {
                    return function r(i) {
                        for (var o = e.querySelectorAll(t), a = i.target; a && a !== this; a = a.parentNode) {
                            var s, u = F(o);
                            try {
                                for (u.s(); !(s = u.n()).done; ) {
                                    if (s.value === a)
                                        return i.delegateTarget = a,
                                        r.oneOff && X.off(e, i.type, t, n),
                                        n.apply(a, [i])
                                }
                            } catch (e) {
                                u.e(e)
                            } finally {
                                u.f()
                            }
                        }
                    }
                }(e, n, u) : function(e, t) {
                    return function n(r) {
                        return r.delegateTarget = e,
                        n.oneOff && X.off(e, r.type, t),
                        t.apply(e, [r])
                    }
                }(e, u);
                y.delegationSelector = s ? n : null,
                y.callable = u,
                y.oneOff = o,
                y.uidEvent = p,
                d[p] = y,
                e.addEventListener(l, y, c)
            }
        }
    }
    function Z(e, t, n, r, i, o) {
        var a = W(t[n], r, i);
        a && (e.removeEventListener(n, a, o),
        delete t[n][a.uidEvent])
    }
    function Y(e, t, n, r) {
        for (var i = t[n] || {}, o = 0, a = Object.keys(i); o < a.length; o++) {
            var s = a[o];
            if (s.includes(r)) {
                var u = i[s];
                Z(e, t, n, u.callable, u.delegationSelector)
            }
        }
    }
    function ee(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var te, ne = 0, re = -1, ie = -2, oe = -3, ae = function() {
        function e(t, n, r) {
            var i = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.failed = !1,
            this.progress = 0,
            this.sent = !1,
            this.delegate = t,
            this.url = n,
            this.options = r,
            this.headers = r.headers || {},
            this.method = r.method || "GET",
            this.responseType = r.responseType || "",
            this.data = r.data,
            this.timeout = r.timeout || 0,
            this.requestProgressed = function(e) {
                e.lengthComputable && i.setProgress(e.loaded / e.total)
            }
            ,
            this.requestLoaded = function() {
                i.endRequest((function(e) {
                    i.processResponseData(e, (function(e, t) {
                        var n = e.getResponseHeader("Content-Type")
                          , r = function(e) {
                            return (e || "").includes("application/json")
                        }(n) ? JSON.parse(t) : t;
                        if (i.options.htmlOnly && !function(e) {
                            return (e || "").match(/^text\/html|^application\/xhtml\+xml/)
                        }(n))
                            return i.failed = !0,
                            void i.delegate.requestFailedWithStatusCode(ie);
                        e.status >= 200 && e.status < 300 ? i.delegate.requestCompletedWithResponse(r, e.status, function(e, t) {
                            if (e.getResponseHeader("X-OCTOBER-LOCATION"))
                                return e.getResponseHeader("X-OCTOBER-LOCATION");
                            var n = t.match(/^(.*)#/);
                            return (n ? n[1] : t) !== e.responseURL ? e.responseURL : null
                        }(e, i.url)) : (i.failed = !0,
                        i.delegate.requestFailedWithStatusCode(e.status, r))
                    }
                    ))
                }
                ))
            }
            ,
            this.requestFailed = function() {
                i.endRequest((function() {
                    i.failed = !0,
                    i.delegate.requestFailedWithStatusCode(ne)
                }
                ))
            }
            ,
            this.requestTimedOut = function() {
                i.endRequest((function() {
                    i.failed = !0,
                    i.delegate.requestFailedWithStatusCode(re)
                }
                ))
            }
            ,
            this.requestCanceled = function() {
                i.options.trackAbort ? i.endRequest((function() {
                    i.failed = !0,
                    i.delegate.requestFailedWithStatusCode(oe)
                }
                )) : i.endRequest()
            }
            ,
            this.createXHR()
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "send",
            value: function() {
                this.xhr && !this.sent && (this.notifyApplicationBeforeRequestStart(),
                this.setProgress(0),
                this.xhr.send(this.data || null),
                this.sent = !0,
                this.delegate.requestStarted())
            }
        }, {
            key: "abort",
            value: function() {
                this.xhr && this.sent && this.xhr.abort()
            }
        }, {
            key: "notifyApplicationBeforeRequestStart",
            value: function() {
                X.dispatch("ajax:request-start", {
                    detail: {
                        url: this.url,
                        xhr: this.xhr
                    },
                    cancelable: !1
                })
            }
        }, {
            key: "notifyApplicationAfterRequestEnd",
            value: function() {
                X.dispatch("ajax:request-end", {
                    detail: {
                        url: this.url,
                        xhr: this.xhr
                    },
                    cancelable: !1
                })
            }
        }, {
            key: "createXHR",
            value: function() {
                var e = this.xhr = new XMLHttpRequest;
                for (var t in e.open(this.method, this.url, !0),
                e.responseType = this.responseType,
                e.onprogress = this.requestProgressed,
                e.onload = this.requestLoaded,
                e.onerror = this.requestFailed,
                e.ontimeout = this.requestTimedOut,
                e.onabort = this.requestCanceled,
                this.timeout && (e.timeout = 1e3 * this.timeout),
                this.headers)
                    e.setRequestHeader(t, this.headers[t]);
                return e
            }
        }, {
            key: "endRequest",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : function() {}
                ;
                this.xhr && (this.notifyApplicationAfterRequestEnd(),
                e(this.xhr),
                this.destroy())
            }
        }, {
            key: "setProgress",
            value: function(e) {
                this.progress = e,
                this.delegate.requestProgressed(e)
            }
        }, {
            key: "destroy",
            value: function() {
                this.setProgress(1),
                this.delegate.requestFinished()
            }
        }, {
            key: "processResponseData",
            value: function(e, t) {
                if ("blob" === this.responseType) {
                    var n = e.getResponseHeader("Content-Disposition") || "";
                    if (0 !== n.indexOf("attachment") && 0 !== n.indexOf("inline")) {
                        var r = new FileReader;
                        r.addEventListener("load", (function() {
                            t(e, r.result)
                        }
                        )),
                        r.readAsText(e.response)
                    } else
                        t(e, e.response)
                } else
                    t(e, e.responseText)
            }
        }],
        n && ee(t.prototype, n),
        r && ee(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function se(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    function ue(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    var le = function() {
        function e() {
            var t = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.stylesheetElement = this.createStylesheetElement(),
            this.progressElement = this.createProgressElement(),
            this.hiding = !1,
            this.value = 0,
            this.visible = !1,
            this.trickle = function() {
                t.setValue(t.value + Math.random() / 100)
            }
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "show",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                e.cssClass && this.progressElement.classList.add(e.cssClass),
                this.visible || (this.visible = !0,
                this.installStylesheetElement(),
                this.installProgressElement(),
                this.startTrickling())
            }
        }, {
            key: "hide",
            value: function() {
                var e = this;
                this.visible && !this.hiding && (this.hiding = !0,
                this.fadeProgressElement((function() {
                    e.uninstallProgressElement(),
                    e.stopTrickling(),
                    e.visible = !1,
                    e.hiding = !1
                }
                )))
            }
        }, {
            key: "setValue",
            value: function(e) {
                this.value = e,
                this.refresh()
            }
        }, {
            key: "installStylesheetElement",
            value: function() {
                e.stylesheetReady || (document.head.insertBefore(this.stylesheetElement, document.head.firstChild),
                e.stylesheetReady = !0)
            }
        }, {
            key: "installProgressElement",
            value: function() {
                this.progressElement.style.width = "0",
                this.progressElement.style.opacity = "1",
                document.documentElement.insertBefore(this.progressElement, document.body),
                this.refresh()
            }
        }, {
            key: "fadeProgressElement",
            value: function(t) {
                this.progressElement.style.opacity = "0",
                setTimeout(t, 1.5 * e.animationDuration)
            }
        }, {
            key: "uninstallProgressElement",
            value: function() {
                this.progressElement.parentNode && document.documentElement.removeChild(this.progressElement)
            }
        }, {
            key: "startTrickling",
            value: function() {
                this.trickleInterval || (this.trickleInterval = setInterval(this.trickle, e.animationDuration))
            }
        }, {
            key: "stopTrickling",
            value: function() {
                clearInterval(this.trickleInterval),
                delete this.trickleInterval
            }
        }, {
            key: "refresh",
            value: function() {
                var e = this;
                requestAnimationFrame((function() {
                    e.progressElement.style.width = "".concat(10 + 90 * e.value, "%")
                }
                ))
            }
        }, {
            key: "createStylesheetElement",
            value: function() {
                var t = document.createElement("style");
                return t.textContent = e.defaultCSS,
                t
            }
        }, {
            key: "createProgressElement",
            value: function() {
                var e = document.createElement("div");
                return e.className = "oc-progress-bar",
                e
            }
        }],
        r = [{
            key: "defaultCSS",
            get: function() {
                return function(e) {
                    for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
                        n[r - 1] = arguments[r];
                    var i = C(P(e, n)).split("\n")
                      , o = i[0].match(/^\s+/)
                      , a = o ? o[0].length : 0;
                    return i.map((function(e) {
                        return e.slice(a)
                    }
                    )).join("\n")
                }(te || (t = ["\n        .oc-progress-bar {\n            position: fixed;\n            display: block;\n            top: 0;\n            left: 0;\n            height: 3px;\n            background: #0076ff;\n            z-index: 9999;\n            transition:\n                width ", "ms ease-out,\n                opacity ", "ms ", "ms ease-in;\n            transform: translate3d(0, 0, 0);\n        }\n    "],
                n || (n = t.slice(0)),
                te = Object.freeze(Object.defineProperties(t, {
                    raw: {
                        value: Object.freeze(n)
                    }
                }))), e.animationDuration, e.animationDuration / 2, e.animationDuration / 2);
                var t, n
            }
        }, {
            key: "progressBar",
            get: function() {
                return {
                    show: function() {
                        var e = ce();
                        e.setValue(0),
                        e.show()
                    },
                    hide: function() {
                        var e = ce();
                        e.setValue(100),
                        e.hide()
                    }
                }
            }
        }],
        n && se(t.prototype, n),
        r && se(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function ce() {
        return le.instance || (le.instance = new le),
        le.instance
    }
    function fe(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function de(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? fe(Object(n), !0).forEach((function(t) {
                he(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : fe(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function he(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function pe(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    ue(le, "instance", null),
    ue(le, "stylesheetReady", !1),
    ue(le, "animationDuration", 300);
    const ye = function() {
        function e(t, n, r) {
            var i = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.el = t,
            this.handler = n,
            this.options = de(de({}, this.constructor.DEFAULTS), r || {}),
            this.context = {
                el: t,
                handler: n,
                options: this.options
            },
            this.progressBar = new le,
            this.showProgressBar = function() {
                i.progressBar.show({
                    cssClass: "is-ajax"
                })
            }
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "DEFAULTS",
            get: function() {
                return {
                    handler: null,
                    update: {},
                    files: !1,
                    bulk: !1,
                    download: !1,
                    browserTarget: null,
                    browserValidate: !1,
                    browserRedirectBack: !1,
                    progressBarDelay: 500,
                    progressBar: null
                }
            }
        }, {
            key: "send",
            value: function(t, n) {
                return new e(document,t,n).start()
            }
        }, {
            key: "sendElement",
            value: function(t, n, r) {
                return "string" == typeof t && (t = document.querySelector(t)),
                new e(t,n,r).start()
            }
        }],
        (n = [{
            key: "start",
            value: function() {
                if (this.applicationAllowsSetup() && (this.initOtherElements(),
                this.preprocessOptions(),
                this.actions = new A(this,this.context,this.options),
                this.validateClientSideForm() && this.applicationAllowsRequest() && (!this.options.confirm || this.actions.invoke("handleConfirmMessage", [this.options.confirm]))))
                    return this.sendInternal(),
                    this.options.async ? this.wrapInAsyncPromise(this.promise) : this.promise
            }
        }, {
            key: "sendInternal",
            value: function() {
                var e, t = this, n = new q(this.options.data,this.el,this.formEl);
                e = this.options.files ? n.getAsFormData() : this.options.bulk ? n.getAsJsonData() : n.getAsQueryString(),
                this.options.query && this.actions.invoke("applyQueryToUrl", [!0 !== this.options.query ? this.options.query : JSON.parse(n.getAsJsonData())]);
                var r = a.fetch(this.handler, this.options)
                  , i = r.url
                  , o = r.headers
                  , s = r.method
                  , u = r.responseType;
                this.request = new ae(this,i,{
                    method: s,
                    headers: o,
                    responseType: u,
                    data: e,
                    trackAbort: !0
                }),
                this.promise = new f({
                    delegate: this.request
                }),
                this.isRedirect = this.options.redirect && this.options.redirect.length > 0,
                this.notifyApplicationBeforeSend(),
                this.notifyApplicationAjaxPromise(),
                this.promise.fail((function(e, n, r) {
                    t.isRedirect || t.notifyApplicationAjaxFail(e, n, r)
                }
                )).done((function(e, n, r) {
                    t.isRedirect || t.notifyApplicationAjaxDone(e, n, r)
                }
                )).always((function(e, n, r) {
                    t.notifyApplicationAjaxAlways(e, n, r)
                }
                )),
                this.request.send()
            }
        }, {
            key: "toggleRedirect",
            value: function(e) {
                e ? (this.options.redirect = e,
                this.isRedirect = !0) : (this.options.redirect = null,
                this.isRedirect = !1)
            }
        }, {
            key: "applicationAllowsSetup",
            value: function() {
                return !this.notifyApplicationAjaxSetup().defaultPrevented
            }
        }, {
            key: "applicationAllowsRequest",
            value: function() {
                return !this.notifyApplicationBeforeRequest().defaultPrevented
            }
        }, {
            key: "applicationAllowsUpdate",
            value: function(e, t, n) {
                return !this.notifyApplicationBeforeUpdate(e, t, n).defaultPrevented
            }
        }, {
            key: "applicationAllowsError",
            value: function(e, t, n) {
                return !this.notifyApplicationRequestError(e, t, n).defaultPrevented
            }
        }, {
            key: "notifyApplicationAjaxSetup",
            value: function() {
                return R("ajax:setup", {
                    target: this.el,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxPromise",
            value: function() {
                return R("ajax:promise", {
                    target: this.el,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxFail",
            value: function(e, t, n) {
                return R("ajax:fail", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxDone",
            value: function(e, t, n) {
                return R("ajax:done", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxAlways",
            value: function(e, t, n) {
                return R("ajax:always", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxUpdate",
            value: function(e, t, n, r) {
                return R("ajax:update", {
                    target: e,
                    detail: {
                        context: this.context,
                        data: t,
                        responseCode: n,
                        xhr: r
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeRedirect",
            value: function() {
                return R("ajax:before-redirect", {
                    target: this.el
                })
            }
        }, {
            key: "notifyApplicationBeforeRequest",
            value: function() {
                return R("ajax:before-request", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeUpdate",
            value: function(e, t, n) {
                return R("ajax:before-update", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestSuccess",
            value: function(e, t, n) {
                return R("ajax:request-success", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestError",
            value: function(e, t, n) {
                return R("ajax:request-error", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        message: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestComplete",
            value: function(e, t, n) {
                return R("ajax:request-complete", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeValidate",
            value: function(e, t) {
                return R("ajax:before-validate", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        message: e,
                        fields: t
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeReplace",
            value: function(e) {
                return R("ajax:before-replace", {
                    target: e
                })
            }
        }, {
            key: "notifyApplicationBeforeSend",
            value: function() {
                return R("ajax:before-send", {
                    target: window,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationUpdateComplete",
            value: function(e, t, n) {
                return R("ajax:update-complete", {
                    target: window,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationFieldInvalid",
            value: function(e, t, n, r) {
                return R("ajax:invalid-field", {
                    target: window,
                    detail: {
                        element: e,
                        fieldName: t,
                        errorMsg: n,
                        isFirst: r
                    }
                })
            }
        }, {
            key: "notifyApplicationConfirmMessage",
            value: function(e, t) {
                return R("ajax:confirm-message", {
                    target: window,
                    detail: {
                        message: e,
                        promise: t
                    }
                })
            }
        }, {
            key: "notifyApplicationErrorMessage",
            value: function(e) {
                return R("ajax:error-message", {
                    target: window,
                    detail: {
                        message: e
                    }
                })
            }
        }, {
            key: "notifyApplicationCustomEvent",
            value: function(e, t) {
                return R(e, {
                    target: this.el,
                    detail: t
                })
            }
        }, {
            key: "requestStarted",
            value: function() {
                this.markAsProgress(!0),
                this.toggleLoadingElement(!0),
                this.options.progressBar && this.showProgressBarAfterDelay(),
                this.actions.invoke("start", [this.request.xhr])
            }
        }, {
            key: "requestProgressed",
            value: function(e) {
                this.promise.notify(e)
            }
        }, {
            key: "requestCompletedWithResponse",
            value: function(e, t) {
                this.actions.invoke("success", [e, t, this.request.xhr]),
                this.actions.invoke("complete", [e, t, this.request.xhr]),
                this.promise.resolve(e, t, this.request.xhr)
            }
        }, {
            key: "requestFailedWithStatusCode",
            value: function(e, t) {
                e == oe ? this.actions.invoke("cancel", []) : this.actions.invoke("error", [t, e, this.request.xhr]),
                this.actions.invoke("complete", [t, e, this.request.xhr]),
                this.promise.reject(t, e, this.request.xhr)
            }
        }, {
            key: "requestFinished",
            value: function() {
                this.markAsProgress(!1),
                this.toggleLoadingElement(!1),
                this.options.progressBar && this.hideProgressBar()
            }
        }, {
            key: "initOtherElements",
            value: function() {
                "string" == typeof this.options.form ? this.formEl = document.querySelector(this.options.form) : this.options.form ? this.formEl = this.options.form : this.formEl = this.el && this.el !== document ? this.el.closest("form") : null,
                this.triggerEl = this.formEl ? this.formEl : this.el,
                this.partialEl = this.el && this.el !== document ? this.el.closest("[data-ajax-partial]") : null,
                this.loadingEl = "string" == typeof this.options.loading ? document.querySelector(this.options.loading) : this.options.loading
            }
        }, {
            key: "preprocessOptions",
            value: function() {
                void 0 === this.options.partial && this.partialEl && void 0 !== this.partialEl.dataset.ajaxPartial && (this.options.partial = this.partialEl.dataset.ajaxPartial || !0)
            }
        }, {
            key: "validateClientSideForm",
            value: function() {
                return !(this.options.browserValidate && "function" == typeof document.createElement("input").reportValidity && this.formEl && !this.formEl.checkValidity() && (this.formEl.reportValidity(),
                1))
            }
        }, {
            key: "toggleLoadingElement",
            value: function(e) {
                this.loadingEl && ("function" == typeof this.loadingEl.show && "function" == typeof this.loadingEl.hide ? e ? this.loadingEl.show() : this.loadingEl.hide() : this.loadingEl.style.display = e ? "block" : "none")
            }
        }, {
            key: "showProgressBarAfterDelay",
            value: function() {
                this.progressBar.setValue(0),
                this.progressBarTimeout = window.setTimeout(this.showProgressBar, this.options.progressBarDelay)
            }
        }, {
            key: "hideProgressBar",
            value: function() {
                this.progressBar.setValue(100),
                this.progressBar.hide(),
                null != this.progressBarTimeout && (window.clearTimeout(this.progressBarTimeout),
                delete this.progressBarTimeout)
            }
        }, {
            key: "markAsProgress",
            value: function(e) {
                e ? (document.documentElement.setAttribute("data-ajax-progress", ""),
                this.formEl && this.formEl.setAttribute("data-ajax-progress", this.handler)) : (document.documentElement.removeAttribute("data-ajax-progress"),
                this.formEl && this.formEl.removeAttribute("data-ajax-progress"))
            }
        }, {
            key: "wrapInAsyncPromise",
            value: function(e) {
                return new Promise((function(t, n, r) {
                    e.fail((function(e) {
                        n(e)
                    }
                    )).done((function(e) {
                        t(e)
                    }
                    )),
                    r && r((function() {
                        e.abort()
                    }
                    ))
                }
                ))
            }
        }]) && pe(t.prototype, n),
        r && pe(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function ve(e) {
        return ve = "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
        }
        ,
        ve(e)
    }
    function ge(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxRequest || (window.oc.AjaxRequest = ye,
    window.oc.AssetManager = n,
    window.oc.ajax = ye.send,
    window.oc.request || (window.oc.request = ye.sendElement));
    var me = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "paramToObj",
            value: function(e, t) {
                if (void 0 === t && (t = ""),
                "object" === ve(t))
                    return t;
                "{" !== t.charAt(0) && (t = "{" + t + "}");
                try {
                    return this.parseJSON(t)
                } catch (t) {
                    throw new Error("Error parsing the " + e + " attribute value. " + t)
                }
            }
        }, {
            key: "parseJSON",
            value: function(t) {
                return JSON.parse((new e).parseString(t))
            }
        }],
        (n = [{
            key: "parseString",
            value: function(e) {
                if (!(e = e.trim()).length)
                    throw new Error("Broken JSON object.");
                for (var t = ""; e && "," === e[0]; )
                    e = e.substr(1);
                if ('"' === e[0] || "'" === e[0]) {
                    if (e[e.length - 1] !== e[0])
                        throw new Error("Invalid string JSON object.");
                    for (var n = '"', r = 1; r < e.length; r++)
                        if ("\\" === e[r])
                            "'" === e[r + 1] || (n += e[r]),
                            n += e[r + 1],
                            r++;
                        else {
                            if (e[r] === e[0])
                                return n += '"';
                            '"' === e[r] ? n += '\\"' : n += e[r]
                        }
                    throw new Error("Invalid string JSON object.")
                }
                if ("true" === e || "false" === e)
                    return e;
                if ("null" === e)
                    return "null";
                var i = parseFloat(e);
                if (!isNaN(i))
                    return i.toString();
                if ("{" === e[0]) {
                    var o = "needKey";
                    for (t = "{",
                    r = 1; r < e.length; r++)
                        if (!this.isBlankChar(e[r]))
                            if ("needKey" !== o || '"' !== e[r] && "'" !== e[r]) {
                                if ("needKey" === o && this.canBeKeyHead(e[r])) {
                                    var a;
                                    t += '"',
                                    t += a = this.parseKey(e, r),
                                    t += '"',
                                    r += a.length - 1,
                                    o = "afterKey"
                                } else if ("afterKey" === o && ":" === e[r])
                                    t += ":",
                                    o = ":";
                                else if (":" === o)
                                    r = r + (n = this.getBody(e, r)).originLength - 1,
                                    t += this.parseString(n.body),
                                    o = "afterBody";
                                else if ("afterBody" === o || "needKey" === o) {
                                    for (var s = r; "," === e[s] || this.isBlankChar(e[s]); )
                                        s++;
                                    if ("}" === e[s] && s === e.length - 1) {
                                        for (; "," === t[t.length - 1]; )
                                            t = t.substr(0, t.length - 1);
                                        return t += "}"
                                    }
                                    s !== r && "{" !== t && (t += ",",
                                    o = "needKey",
                                    r = s - 1)
                                }
                            } else
                                t += '"' + (a = this.parseKey(e, r + 1, e[r])) + '"',
                                r += a.length,
                                r += 1,
                                o = "afterKey";
                    throw new Error("Broken JSON object near " + t)
                }
                if ("[" === e[0]) {
                    for (t = "[",
                    o = "needBody",
                    r = 1; r < e.length; r++)
                        if (" " !== e[r] && "\n" !== e[r] && "\t" !== e[r])
                            if ("needBody" === o) {
                                if ("," === e[r]) {
                                    t += "null,";
                                    continue
                                }
                                if ("]" === e[r] && r === e.length - 1)
                                    return "," === t[t.length - 1] && (t = t.substr(0, t.length - 1)),
                                    t += "]";
                                r = r + (n = this.getBody(e, r)).originLength - 1,
                                t += this.parseString(n.body),
                                o = "afterBody"
                            } else if ("afterBody" === o)
                                if ("," === e[r])
                                    for (t += ",",
                                    o = "needBody"; "," === e[r + 1] || this.isBlankChar(e[r + 1]); )
                                        "," === e[r + 1] && (t += "null,"),
                                        r++;
                                else if ("]" === e[r] && r === e.length - 1)
                                    return t += "]";
                    throw new Error("Broken JSON array near " + t)
                }
            }
        }, {
            key: "parseKey",
            value: function(e, t, n) {
                for (var r = "", i = t; i < e.length; i++) {
                    if (n && n === e[i])
                        return r;
                    if (!n && (" " === e[i] || ":" === e[i]))
                        return r;
                    r += e[i],
                    "\\" === e[i] && i + 1 < e.length && (r += e[i + 1],
                    i++)
                }
                throw new Error("Broken JSON syntax near " + r)
            }
        }, {
            key: "getBody",
            value: function(e, t) {
                if ('"' === e[t] || "'" === e[t]) {
                    for (var n = e[t], r = t + 1; r < e.length; r++)
                        if ("\\" === e[r])
                            n += e[r],
                            r + 1 < e.length && (n += e[r + 1]),
                            r++;
                        else {
                            if (e[r] === e[t])
                                return {
                                    originLength: (n += e[t]).length,
                                    body: n
                                };
                            n += e[r]
                        }
                    throw new Error("Broken JSON string body near " + n)
                }
                if ("t" === e[t]) {
                    if (e.indexOf("true", t) === t)
                        return {
                            originLength: "true".length,
                            body: "true"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("f" === e[t]) {
                    if (e.indexOf("f", t) === t)
                        return {
                            originLength: "false".length,
                            body: "false"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("n" === e[t]) {
                    if (e.indexOf("null", t) === t)
                        return {
                            originLength: "null".length,
                            body: "null"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("-" === e[t] || "+" === e[t] || "." === e[t] || e[t] >= "0" && e[t] <= "9") {
                    for (n = "",
                    r = t; r < e.length; r++) {
                        if (!("-" === e[r] || "+" === e[r] || "." === e[r] || e[r] >= "0" && e[r] <= "9"))
                            return {
                                originLength: n.length,
                                body: n
                            };
                        n += e[r]
                    }
                    throw new Error("Broken JSON number body near " + n)
                }
                if ("{" === e[t] || "[" === e[t]) {
                    var i = [e[t]];
                    for (n = e[t],
                    r = t + 1; r < e.length; r++) {
                        if (n += e[r],
                        "\\" === e[r])
                            r + 1 < e.length && (n += e[r + 1]),
                            r++;
                        else if ('"' === e[r])
                            '"' === i[i.length - 1] ? i.pop() : "'" !== i[i.length - 1] && i.push(e[r]);
                        else if ("'" === e[r])
                            "'" === i[i.length - 1] ? i.pop() : '"' !== i[i.length - 1] && i.push(e[r]);
                        else if ('"' !== i[i.length - 1] && "'" !== i[i.length - 1])
                            if ("{" === e[r])
                                i.push("{");
                            else if ("}" === e[r]) {
                                if ("{" !== i[i.length - 1])
                                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n);
                                i.pop()
                            } else if ("[" === e[r])
                                i.push("[");
                            else if ("]" === e[r]) {
                                if ("[" !== i[i.length - 1])
                                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n);
                                i.pop()
                            }
                        if (!i.length)
                            return {
                                originLength: r - t,
                                body: n
                            }
                    }
                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n)
                }
                throw new Error("Broken JSON body near " + e.substr(t - 5 >= 0 ? t - 5 : 0, 50))
            }
        }, {
            key: "canBeKeyHead",
            value: function(e) {
                return "\\" !== e[0] && (e[0] >= "a" && e[0] <= "z" || e[0] >= "A" && e[0] <= "Z" || "_" === e[0] || e[0] >= "0" && e[0] <= "9" || "$" === e[0] || e.charCodeAt(0) > 255)
            }
        }, {
            key: "isBlankChar",
            value: function(e) {
                return " " === e || "\n" === e || "\t" === e
            }
        }]) && ge(t.prototype, n),
        r && ge(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function be(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function we(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? be(Object(n), !0).forEach((function(t) {
                Ee(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : be(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function Ee(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function ke(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Ae = function() {
        function e(t, n, r) {
            return function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.options = r || {},
            this.ogElement = t,
            this.element = this.findElement(t),
            this.element ? (this.assignAsEval("beforeUpdateFunc", "requestBeforeUpdate"),
            this.assignAsEval("afterUpdateFunc", "requestAfterUpdate"),
            this.assignAsEval("successFunc", "requestSuccess"),
            this.assignAsEval("errorFunc", "requestError"),
            this.assignAsEval("cancelFunc", "requestCancel"),
            this.assignAsEval("completeFunc", "requestComplete"),
            this.assignAsData("progressBar", "requestProgressBar"),
            this.assignAsData("message", "requestMessage"),
            this.assignAsData("confirm", "requestConfirm"),
            this.assignAsData("redirect", "requestRedirect"),
            this.assignAsData("loading", "requestLoading"),
            this.assignAsData("form", "requestForm"),
            this.assignAsData("url", "requestUrl"),
            this.assignAsData("bulk", "requestBulk", {
                emptyAsTrue: !0
            }),
            this.assignAsData("files", "requestFiles", {
                emptyAsTrue: !0
            }),
            this.assignAsData("flash", "requestFlash", {
                emptyAsTrue: !0
            }),
            this.assignAsData("download", "requestDownload", {
                emptyAsTrue: !0
            }),
            this.assignAsData("update", "requestUpdate", {
                parseJson: !0
            }),
            this.assignAsData("query", "requestQuery", {
                emptyAsTrue: !0,
                parseJson: !0
            }),
            this.assignAsData("browserTarget", "browserTarget"),
            this.assignAsData("browserValidate", "browserValidate", {
                emptyAsTrue: !0
            }),
            this.assignAsData("browserRedirectBack", "browserRedirectBack", {
                emptyAsTrue: !0
            }),
            this.assignAsMetaData("update", "ajaxRequestUpdate", {
                parseJson: !0,
                mergeValue: !0
            }),
            this.assignRequestData(),
            n || (n = this.getHandlerName()),
            ye.sendElement(this.element, n, this.options)) : ye.send(n, this.options)
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "findElement",
            value: function(e) {
                if (!e || e === document)
                    return null;
                if (e.matches("[data-request]"))
                    return e;
                var t = e.closest("[data-request]");
                return t || e
            }
        }, {
            key: "getHandlerName",
            value: function() {
                return this.element.dataset.dataRequest ? this.element.dataset.dataRequest : this.element.getAttribute("data-request")
            }
        }, {
            key: "assignAsEval",
            value: function(e, t) {
                var n;
                void 0 === this.options[e] && (n = this.element.dataset[t] ? this.element.dataset[t] : this.element.getAttribute("data-" + je(t))) && (this.options[e] = function(e, t) {
                    return new Function("data",n).apply(e, [t])
                }
                )
            }
        }, {
            key: "assignAsData",
            value: function(e, t) {
                var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = r.parseJson, o = void 0 !== i && i, a = r.emptyAsTrue, s = void 0 !== a && a;
                void 0 === this.options[e] && null !== (n = this.element.dataset[t] ? this.element.dataset[t] : this.element.getAttribute("data-" + je(t))) && (n = this.castAttrToOption(n, s),
                o && "string" == typeof n && (n = me.paramToObj("data-" + je(t), n)),
                this.options[e] = n)
            }
        }, {
            key: "assignAsMetaData",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}
                  , r = n.mergeValue
                  , i = void 0 === r || r
                  , o = n.parseJson
                  , a = void 0 !== o && o
                  , s = n.emptyAsTrue
                  , u = void 0 !== s && s
                  , l = document.documentElement.querySelector('head meta[name="' + je(t) + '"]');
                if (l) {
                    var c = l.getAttribute("content");
                    c = a ? me.paramToObj(je(t), c) : this.castAttrToOption(c, u),
                    this.options[e] = i ? we(we({}, this.options[e] || {}), c) : c
                }
            }
        }, {
            key: "castAttrToOption",
            value: function(e, t) {
                return !(!t || "" !== e) || "true" === e || "1" === e || "false" !== e && "0" !== e && e
            }
        }, {
            key: "assignRequestData",
            value: function() {
                var e = {};
                this.options.data && Object.assign(e, this.options.data);
                var t = this.ogElement.getAttribute("data-request-data");
                t && Object.assign(e, me.paramToObj("data-request-data", t)),
                function(e, t) {
                    var n = [];
                    if (!e.parentNode)
                        return n;
                    for (var r = e.parentNode.closest(t); r; )
                        n.push(r),
                        r = r.parentNode.closest(t);
                    return n
                }(this.ogElement, "[data-request-data]").reverse().forEach((function(t) {
                    Object.assign(e, me.paramToObj("data-request-data", t.getAttribute("data-request-data")))
                }
                )),
                this.options.data = e
            }
        }],
        r = [{
            key: "fromElement",
            value: function(t, n, r) {
                return "string" == typeof t && (t = document.querySelector(t)),
                new e(t,n,r)
            }
        }],
        n && ke(t.prototype, n),
        r && ke(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function je(e) {
        return e.replace(/[A-Z]/g, (function(e) {
            return "-".concat(e.toLowerCase())
        }
        ))
    }
    function Oe(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var xe = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.started = !1,
            this.documentVisible = !0
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "start",
            value: function() {
                var e = this;
                this.started || (window.onbeforeunload = this.documentOnBeforeUnload,
                addEventListener("DOMContentLoaded", (function() {
                    return e.render()
                }
                )),
                addEventListener("page:updated", (function() {
                    return e.render()
                }
                )),
                addEventListener("ajax:update-complete", (function() {
                    return e.render()
                }
                )),
                addEventListener("visibilitychange", (function() {
                    return e.documentOnVisibilityChange()
                }
                )),
                X.on(document, "submit", "[data-request]", this.documentOnSubmit),
                X.on(document, "input", "input[data-request][data-track-input]", this.documentOnKeyup),
                X.on(document, "change", "select[data-request], input[type=radio][data-request], input[type=checkbox][data-request], input[type=file][data-request]", this.documentOnChange),
                X.on(document, "keydown", "input[type=text][data-request], input[type=submit][data-request], input[type=password][data-request]", this.documentOnKeydown),
                X.on(document, "click", "a[data-request], button[data-request], input[type=button][data-request], input[type=submit][data-request]", this.documentOnClick),
                this.started = !0)
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (this.started = !1)
            }
        }, {
            key: "render",
            value: function(e) {
                X.dispatch("before-render"),
                X.dispatch("render"),
                dispatchEvent(new Event("resize")),
                this.documentOnRender(e)
            }
        }, {
            key: "documentOnVisibilityChange",
            value: function(e) {
                this.documentVisible = !document.hidden,
                this.documentVisible && this.documentOnRender()
            }
        }, {
            key: "documentOnRender",
            value: function(e) {
                this.documentVisible && document.querySelectorAll("[data-auto-submit]").forEach((function(e) {
                    var t = e.dataset.autoSubmit || 0;
                    e.removeAttribute("data-auto-submit"),
                    setTimeout((function() {
                        Ae.fromElement(e)
                    }
                    ), t)
                }
                ))
            }
        }, {
            key: "documentOnSubmit",
            value: function(e) {
                e.preventDefault(),
                Ae.fromElement(e.target)
            }
        }, {
            key: "documentOnClick",
            value: function(e) {
                e.preventDefault(),
                Ae.fromElement(e.target)
            }
        }, {
            key: "documentOnChange",
            value: function(e) {
                Ae.fromElement(e.target)
            }
        }, {
            key: "documentOnKeyup",
            value: function(e) {
                var t = e.target
                  , n = t.dataset.ocLastValue;
                if (-1 !== ["email", "number", "password", "search", "text"].indexOf(t.type) && (void 0 === n || n != t.value)) {
                    t.dataset.ocLastValue = t.value,
                    void 0 !== this.dataTrackInputTimer && clearTimeout(this.dataTrackInputTimer);
                    var r = t.getAttribute("data-track-input");
                    r || (r = 300);
                    var i = this;
                    this.dataTrackInputTimer = setTimeout((function() {
                        i.lastDataTrackInputRequest && i.lastDataTrackInputRequest.abort(),
                        i.lastDataTrackInputRequest = Ae.fromElement(t)
                    }
                    ), r)
                }
            }
        }, {
            key: "documentOnKeydown",
            value: function(e) {
                "Enter" === e.key && (e.preventDefault(),
                void 0 !== this.dataTrackInputTimer && clearTimeout(this.dataTrackInputTimer),
                Ae.fromElement(e.target))
            }
        }, {
            key: "documentOnBeforeUnload",
            value: function(e) {
                window.ocUnloading = !0
            }
        }]) && Oe(t.prototype, n),
        r && Oe(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Se(e) {
        return Se = "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
        }
        ,
        Se(e)
    }
    function Te(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var qe = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "bind",
            value: function() {
                this.bindRequestFunc(),
                this.bindRenderFunc(),
                this.bindjQueryEvents()
            }
        }, {
            key: "bindRequestFunc",
            value: function() {
                var e = $.fn.request;
                $.fn.request = function(e, t) {
                    var n = "object" === Se(t) ? t : {};
                    return new Ae(this.get(0),e,n)
                }
                ,
                $.fn.request.Constructor = Ae,
                $.request = function(e, t) {
                    return $(document).request(e, t)
                }
                ,
                $.fn.request.noConflict = function() {
                    return $.fn.request = e,
                    this
                }
            }
        }, {
            key: "bindRenderFunc",
            value: function() {
                $.fn.render = function(e) {
                    $(document).on("render", e)
                }
            }
        }, {
            key: "bindjQueryEvents",
            value: function() {
                this.migratejQueryEvent(document, "ajax:setup", "ajaxSetup", ["context"]),
                this.migratejQueryEvent(document, "ajax:promise", "ajaxPromise", ["context"]),
                this.migratejQueryEvent(document, "ajax:fail", "ajaxFail", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:done", "ajaxDone", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:always", "ajaxAlways", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-redirect", "ajaxRedirect"),
                this.migratejQueryEvent(document, "ajax:update", "ajaxUpdate", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-replace", "ajaxBeforeReplace"),
                this.migratejQueryEvent(document, "ajax:before-request", "oc.beforeRequest", ["context"]),
                this.migratejQueryEvent(document, "ajax:before-update", "ajaxBeforeUpdate", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-success", "ajaxSuccess", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-complete", "ajaxComplete", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-error", "ajaxError", ["context", "message", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-validate", "ajaxValidation", ["context", "message", "fields"]),
                this.migratejQueryEvent(window, "ajax:before-send", "ajaxBeforeSend", ["context"]),
                this.migratejQueryEvent(window, "ajax:update-complete", "ajaxUpdateComplete", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(window, "ajax:invalid-field", "ajaxInvalidField", ["element", "fieldName", "errorMsg", "isFirst"]),
                this.migratejQueryEvent(window, "ajax:confirm-message", "ajaxConfirmMessage", ["message", "promise"]),
                this.migratejQueryEvent(window, "ajax:error-message", "ajaxErrorMessage", ["message"]),
                this.migratejQueryAttachData(document, "ajax:setup", "a[data-request], button[data-request], form[data-request], a[data-handler], button[data-handler]")
            }
        }, {
            key: "migratejQueryEvent",
            value: function(e, t, n) {
                var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : []
                  , i = this;
                $(e).on(t, (function(e) {
                    i.triggerjQueryEvent(e.originalEvent, n, r)
                }
                ))
            }
        }, {
            key: "triggerjQueryEvent",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : []
                  , r = $.Event(t)
                  , i = this.buildDetailArgs(e, n);
                $(e.target).trigger(r, i),
                r.isDefaultPrevented() && e.preventDefault()
            }
        }, {
            key: "buildDetailArgs",
            value: function(e, t) {
                var n = [];
                return t.forEach((function(t) {
                    n.push(e.detail[t])
                }
                )),
                n
            }
        }, {
            key: "migratejQueryAttachData",
            value: function(e, t, n) {
                $(e).on(t, n, (function(e) {
                    var t = $(this).data("request-data");
                    if (t) {
                        var n = e.detail.context.options;
                        t.constructor === {}.constructor ? Object.assign(n.data, t) : "string" == typeof t && Object.assign(n.data, me.paramToObj("request-data", t))
                    }
                }
                ))
            }
        }],
        n && Te(t.prototype, n),
        r && Te(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }()
      , Re = new xe;
    const Ce = {
        controller: Re,
        parseJSON: me.parseJSON,
        serializeJSON: S.serializeJSON,
        requestElement: Ae.fromElement,
        start: function() {
            Re.start(),
            window.jQuery && (new qe).bind()
        },
        stop: function() {
            Re.stop()
        }
    };
    function Pe(e) {
        return Pe = "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
        }
        ,
        Pe(e)
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxFramework || (window.oc.AjaxFramework = Ce,
    window.oc.request = Ce.requestElement,
    window.oc.parseJSON = Ce.parseJSON,
    window.oc.serializeJSON = Ce.serializeJSON,
    window.oc.Events = X,
    window.oc.waitFor = function(e, t) {
        return new Promise((function(n, r) {
            var i = function() {
                e() && (clearInterval(o),
                n())
            }
              , o = setInterval(i, 100);
            i(),
            t && setTimeout((function() {
                clearInterval(o),
                r()
            }
            ), t)
        }
        ))
    }
    ,
    window.oc.pageReady = function() {
        return new Promise((function(e) {
            "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", (function() {
                return e()
            }
            )) : e()
        }
        ))
    }
    ,
    window.oc.visit = function(e) {
        return window.location.assign(e)
    }
    ,
    "function" == typeof define && e.amdO || "object" == ("undefined" == typeof exports ? "undefined" : Pe(exports)) || Ce.start())
}
)();
( () => {
    "use strict";
    var e = {};
    function t(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    e.amdO = {};
    var n = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var n, o, i;
        return n = e,
        i = [{
            key: "load",
            value: function(t, n) {
                return (new e).loadCollection(t, n)
            }
        }],
        (o = [{
            key: "loadCollection",
            value: function(e, t) {
                var n = this
                  , o = e.js ? e.js : []
                  , i = e.css ? e.css : []
                  , a = e.img ? e.img : [];
                o = r(o, (function(e) {
                    return !document.querySelector('head script[src="' + e + '"]')
                }
                )),
                i = r(i, (function(e) {
                    return !document.querySelector('head link[href="' + e + '"]')
                }
                ));
                var s = 0
                  , l = !1
                  , u = !1;
                function c() {
                    return !!u && !!l && !(s < i.length) && void (t && t())
                }
                0 !== o.length || 0 !== i.length || 0 !== a.length ? (this.loadJavaScript(o, (function() {
                    l = !0,
                    c()
                }
                )),
                i.forEach((function(e) {
                    n.loadStyleSheet(e, (function() {
                        s++,
                        c()
                    }
                    ))
                }
                )),
                this.loadImage(a, (function() {
                    u = !0,
                    c()
                }
                ))) : t && t()
            }
        }, {
            key: "loadStyleSheet",
            value: function(e, t) {
                var n = document.createElement("link");
                return n.setAttribute("rel", "stylesheet"),
                n.setAttribute("type", "text/css"),
                n.setAttribute("href", e),
                n.addEventListener("load", t, !1),
                void 0 !== n && document.getElementsByTagName("head")[0].appendChild(n),
                n
            }
        }, {
            key: "loadJavaScript",
            value: function(e, t) {
                if (e.length <= 0)
                    return t();
                var n = this
                  , r = e.shift()
                  , o = document.createElement("script");
                o.setAttribute("type", "text/javascript"),
                o.setAttribute("src", r),
                o.addEventListener("load", (function() {
                    n.loadJavaScript(e, t)
                }
                ), !1),
                void 0 !== o && document.getElementsByTagName("head")[0].appendChild(o)
            }
        }, {
            key: "loadImage",
            value: function(e, t) {
                if (e.length <= 0)
                    return t();
                var n = 0;
                e.forEach((function(r) {
                    var o = new Image;
                    o.onload = function() {
                        ++n == e.length && t && t()
                    }
                    ,
                    o.src = r
                }
                ))
            }
        }]) && t(n.prototype, o),
        i && t(n, i),
        Object.defineProperty(n, "prototype", {
            writable: !1
        }),
        e
    }();
    function r(e, t) {
        for (var n = [], r = e.length, o = 0; o < r; o++)
            t(e[o]) && n.push(e[o]);
        return n
    }
    function o(e) {
        return o = "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
        }
        ,
        o(e)
    }
    function i(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var a = function() {
        function e(t, n) {
            if (function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            !t)
                throw new Error("The request handler name is not specified.");
            if (!t.match(/^(?:\w+\:{2})?on*/))
                throw new Error('Invalid handler name. The correct handler name format is: "onEvent".');
            if ("undefined" == typeof FormData)
                throw new Error("The browser does not support the FormData interface.");
            this.options = n,
            this.handler = t
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "getRequestOptions",
            value: function() {
                return {
                    method: "POST",
                    url: this.options.url ? this.options.url : window.location.href,
                    headers: this.buildHeaders(),
                    responseType: !1 === this.options.download ? "" : "blob"
                }
            }
        }, {
            key: "buildHeaders",
            value: function() {
                var e = this.handler
                  , t = this.options
                  , n = {
                    "X-Requested-With": "XMLHttpRequest",
                    "X-OCTOBER-REQUEST-HANDLER": e
                };
                t.files || (n["Content-Type"] = t.bulk ? "application/json" : "application/x-www-form-urlencoded"),
                t.flash && (n["X-OCTOBER-REQUEST-FLASH"] = 1),
                t.partial && (n["X-OCTOBER-REQUEST-PARTIAL"] = t.partial);
                var r = this.extractPartials(t.update, t.partial);
                r && (n["X-OCTOBER-REQUEST-PARTIALS"] = r);
                var o = this.getXSRFToken();
                o && (n["X-XSRF-TOKEN"] = o);
                var i = this.getCSRFToken();
                return i && (n["X-CSRF-TOKEN"] = i),
                t.headers && t.headers.constructor === {}.constructor && Object.assign(n, t.headers),
                n
            }
        }, {
            key: "extractPartials",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                  , t = arguments.length > 1 ? arguments[1] : void 0
                  , n = [];
                if (e) {
                    if ("object" !== o(e))
                        throw new Error("Invalid update value. The correct format is an object ({...})");
                    for (var r in e)
                        "_self" === r && t ? n.push(t) : n.push(r)
                }
                return n.join("&")
            }
        }, {
            key: "getCSRFToken",
            value: function() {
                var e = document.querySelector('meta[name="csrf-token"]');
                return e ? e.getAttribute("content") : null
            }
        }, {
            key: "getXSRFToken",
            value: function() {
                var e = null;
                if (document.cookie && "" != document.cookie)
                    for (var t = document.cookie.split(";"), n = 0; n < t.length; n++) {
                        var r = t[n].replace(/^([\s]*)|([\s]*)$/g, "");
                        if ("XSRF-TOKEN=" == r.substring(0, 11)) {
                            e = decodeURIComponent(r.substring(11));
                            break
                        }
                    }
                return e
            }
        }],
        r = [{
            key: "fetch",
            value: function(e, t) {
                return new this(e,t).getRequestOptions()
            }
        }],
        n && i(t.prototype, n),
        r && i(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function s(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var l = "pending"
      , u = "rejected"
      , c = "resolved"
      , f = function() {
        function e(t) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.options = t || {},
            this.stateStr = l,
            this.successFuncs = [],
            this.failureFuncs = [],
            this.progressFuncs = [],
            this.resolveArgs = [],
            this.rejectArgs = [],
            this.progressArgs = [],
            this.isProgressNotified = !1
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "resolve",
            value: function() {
                return this.stateStr === l && (this.resolveArgs = arguments,
                this.callFunction.call(this, this.successFuncs, this.resolveArgs),
                this.stateStr = c),
                this
            }
        }, {
            key: "reject",
            value: function() {
                return this.stateStr === l && (this.rejectArgs = arguments,
                this.callFunction.call(this, this.failureFuncs, this.rejectArgs),
                this.stateStr = u),
                this
            }
        }, {
            key: "notify",
            value: function() {
                return this.stateStr === l && (this.progressArgs = arguments,
                this.callFunction.call(this, this.progressFuncs, this.progressArgs),
                this.isProgressNotified = !0),
                this
            }
        }, {
            key: "abort",
            value: function() {
                this.options.delegate && this.options.delegate.abort()
            }
        }, {
            key: "done",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.successFuncs = this.successFuncs.concat(e),
                this.stateStr === c && this.callFunction.call(this, e, this.resolveArgs),
                this
            }
        }, {
            key: "fail",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.failureFuncs = this.failureFuncs.concat(e),
                this.stateStr === u && this.callFunction.call(this, e, this.rejectArgs),
                this
            }
        }, {
            key: "progress",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.progressFuncs = this.progressFuncs.concat(e),
                this.stateStr === l && this.isProgressNotified && this.callFunction.call(this, e, this.progressArgs),
                this
            }
        }, {
            key: "always",
            value: function() {
                var e = Array.prototype.slice.call(arguments);
                return this.successFuncs = this.successFuncs.concat(e),
                this.failureFuncs = this.failureFuncs.concat(e),
                this.stateStr !== l && this.callFunction.call(this, e, this.resolveArgs || this.rejectArgs),
                this
            }
        }, {
            key: "then",
            value: function() {
                var e = [];
                for (var t in arguments) {
                    var n;
                    n = Array.isArray(arguments[t]) ? arguments[t] : [arguments[t]],
                    e.push(n)
                }
                return this.done.apply(this, e[0]),
                this.fail.apply(this, e[1]),
                this.progress.apply(this, e[2]),
                this
            }
        }, {
            key: "promise",
            value: function() {
                var e = ["resolve", "reject", "promise", "notify"]
                  , t = {};
                for (var n in this)
                    -1 === e.indexOf(n) && (t[n] = this[n]);
                return t
            }
        }, {
            key: "state",
            value: function() {
                return arguments.length > 0 && (stateStr = arguments[0]),
                stateStr
            }
        }, {
            key: "callFunction",
            value: function(e, t, n) {
                var r = (n = n || {}).scope || this;
                for (var o in e) {
                    var i = e[o];
                    "function" == typeof i && i.apply(r, t)
                }
            }
        }],
        n && s(t.prototype, n),
        r && s(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function h() {
        return oc.useTurbo && oc.useTurbo() ? oc.AjaxTurbo.controller.getLastVisitUrl() : function() {
            if (!document.referrer)
                return null;
            try {
                var e = new URL(document.referrer);
                if (e.origin !== location.origin)
                    return null;
                var t = localStorage.getItem("ocPushStateReferrer");
                return t && 0 === t.indexOf(e.pathname) ? t : document.referrer
            } catch (e) {}
        }()
    }
    function d(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function p(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? d(Object(n), !0).forEach((function(t) {
                y(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function y(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function v(e) {
        return function(e) {
            if (Array.isArray(e))
                return m(e)
        }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                return Array.from(e)
        }(e) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return m(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return m(e, t)
        }(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function m(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function g(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var b = "replace"
      , k = "prepend"
      , w = "append"
      , E = "update"
      , A = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.el = t.el,
            this.delegate = t,
            this.context = n,
            this.options = r,
            this.context.start = this.start.bind(this),
            this.context.success = this.success.bind(this),
            this.context.error = this.error.bind(this),
            this.context.complete = this.complete.bind(this),
            this.context.cancel = this.cancel.bind(this)
        }
        var t, r, o;
        return t = e,
        (r = [{
            key: "invoke",
            value: function(e, t) {
                return this.options[e] ? this.options[e].apply(this.context, t) : this[e] ? this[e].apply(this, v(t)) : void 0
            }
        }, {
            key: "invokeFunc",
            value: function(e, t) {
                if (this.options[e])
                    return this.options[e](this.el, t)
            }
        }, {
            key: "start",
            value: function(e) {
                this.invoke("markAsUpdating", [!0]),
                this.delegate.options.message && this.invoke("handleProgressMessage", [this.delegate.options.message, !1])
            }
        }, {
            key: "success",
            value: function(e, t, n) {
                var r = this
                  , o = new f;
                if (!1 === this.invoke("beforeUpdate", [e, t, n]))
                    return o;
                if (!1 === this.invokeFunc("beforeUpdateFunc", e))
                    return o;
                if (!this.delegate.applicationAllowsUpdate(e, t, n))
                    return o;
                if (this.delegate.options.download && e instanceof Blob)
                    return this.invoke("handleFileDownload", [e, n]),
                    this.delegate.notifyApplicationRequestSuccess(e, t, n),
                    this.invokeFunc("successFunc", e),
                    o;
                if (this.delegate.options.flash && e.X_OCTOBER_FLASH_MESSAGES)
                    for (var i in e.X_OCTOBER_FLASH_MESSAGES)
                        this.invoke("handleFlashMessage", [e.X_OCTOBER_FLASH_MESSAGES[i], i]);
                return e.X_OCTOBER_DISPATCHES && this.invoke("handleBrowserEvents", [e.X_OCTOBER_DISPATCHES]) || (o = this.invoke("handleUpdateResponse", [e, t, n])).done((function() {
                    r.delegate.notifyApplicationRequestSuccess(e, t, n),
                    r.invokeFunc("successFunc", e)
                }
                )),
                o
            }
        }, {
            key: "error",
            value: function(e, t, n) {
                var r, o = this, i = new f;
                if (void 0 !== window.ocUnloading && window.ocUnloading)
                    return i;
                if (this.delegate.toggleRedirect(!1),
                406 == t && e) {
                    if (e.X_OCTOBER_DISPATCHES && this.invoke("handleBrowserEvents", [e.X_OCTOBER_DISPATCHES]))
                        return i;
                    r = e.X_OCTOBER_ERROR_MESSAGE,
                    i = this.invoke("handleUpdateResponse", [e, t, n])
                } else
                    r = e,
                    i.resolve();
                return i.done((function() {
                    o.el !== document && o.el.setAttribute("data-error-message", r),
                    o.delegate.applicationAllowsError(e, t, n) && !1 !== o.invokeFunc("errorFunc", e) && o.invoke("handleErrorMessage", [r])
                }
                )),
                i
            }
        }, {
            key: "complete",
            value: function(e, t, n) {
                this.delegate.notifyApplicationRequestComplete(e, t, n),
                this.invokeFunc("completeFunc", e),
                this.invoke("markAsUpdating", [!1]),
                this.delegate.options.message && this.invoke("handleProgressMessage", [null, !0])
            }
        }, {
            key: "cancel",
            value: function() {
                this.invokeFunc("cancelFunc")
            }
        }, {
            key: "handleConfirmMessage",
            value: function(e) {
                var t = this
                  , n = new f;
                if (n.done((function() {
                    t.delegate.sendInternal()
                }
                )).fail((function() {
                    t.invoke("cancel", [])
                }
                )),
                this.delegate.notifyApplicationConfirmMessage(e, n).defaultPrevented)
                    return !1;
                if (e) {
                    var r = confirm(e);
                    return r || this.invoke("cancel", []),
                    r
                }
            }
        }, {
            key: "handleProgressMessage",
            value: function(e, t) {}
        }, {
            key: "handleFlashMessage",
            value: function(e, t) {}
        }, {
            key: "handleErrorMessage",
            value: function(e) {
                this.delegate.notifyApplicationErrorMessage(e).defaultPrevented || e && alert(e)
            }
        }, {
            key: "handleValidationMessage",
            value: function(e, t) {
                if (this.delegate.notifyApplicationBeforeValidate(e, t),
                this.delegate.formEl) {
                    var n = !0;
                    for (var r in t) {
                        var o, i = [];
                        o = r.replace(/\.(\w+)/g, "[$1]"),
                        i.push('[name="' + o + '"]:not([disabled])'),
                        i.push('[name="' + o + '[]"]:not([disabled])'),
                        o = ("." + r).replace(/\.(\w+)/g, "[$1]"),
                        i.push('[name$="' + o + '"]:not([disabled])'),
                        i.push('[name$="' + o + '[]"]:not([disabled])');
                        var a = r.replace(/\.[0-9]+$/g, "");
                        r !== a && (o = a.replace(/\.(\w+)/g, "[$1]"),
                        i.push('[name="' + o + '[]"]:not([disabled])'),
                        o = ("." + a).replace(/\.(\w+)/g, "[$1]"),
                        i.push('[name$="' + o + '[]"]:not([disabled])'));
                        var s = this.delegate.formEl.querySelector(i.join(", "));
                        if (s) {
                            var l = this.delegate.notifyApplicationFieldInvalid(s, r, t[r], n);
                            n && (l.defaultPrevented || s.focus(),
                            n = !1)
                        }
                    }
                }
            }
        }, {
            key: "handleBrowserEvents",
            value: function(e) {
                var t = this;
                if (!e || !e.length)
                    return !1;
                var n = !1;
                return e.forEach((function(e) {
                    t.delegate.notifyApplicationCustomEvent(e.event, p(p({}, e.data || {}), {}, {
                        context: t.context
                    })).defaultPrevented && (n = !0)
                }
                )),
                n
            }
        }, {
            key: "handleRedirectResponse",
            value: function(e) {
                this.delegate.notifyApplicationBeforeRedirect().defaultPrevented || (this.options.browserRedirectBack && (e = h() || e),
                oc.useTurbo && oc.useTurbo() ? oc.visit(e) : location.assign(e))
            }
        }, {
            key: "markAsUpdating",
            value: function(e) {
                var t = this.options.update || {};
                for (var n in t) {
                    var r = t[n]
                      , o = [];
                    t._self && n == this.options.partial && this.delegate.partialEl ? (r = t._self,
                    o = [this.delegate.partialEl]) : o = O(r, '[data-ajax-partial="' + n + '"]'),
                    o.forEach((function(t) {
                        e ? t.setAttribute("data-ajax-updating", "") : t.removeAttribute("data-ajax-updating")
                    }
                    ))
                }
            }
        }, {
            key: "handleUpdateResponse",
            value: function(e, t, r) {
                var o = this
                  , i = this.options.update || {}
                  , a = new f;
                return a.done((function() {
                    var n = function() {
                        var n = i[a] || a
                          , s = [];
                        i._self && a == o.options.partial && o.delegate.partialEl ? (n = i._self,
                        s = [o.delegate.partialEl]) : s = O(n, '[data-ajax-partial="' + a + '"]'),
                        s.forEach((function(i) {
                            var s = function(e, t) {
                                if ("string" == typeof e) {
                                    if ("!" === e.charAt(0))
                                        return b;
                                    if ("@" === e.charAt(0))
                                        return w;
                                    if ("^" === e.charAt(0))
                                        return k
                                }
                                return void 0 !== t.dataset.ajaxUpdateMode ? t.dataset.ajaxUpdateMode : E
                            }(n, i);
                            if (s === b) {
                                var l = i.parentNode;
                                i.insertAdjacentHTML("afterEnd", e[a]),
                                l.removeChild(i),
                                j(l, e[a])
                            } else
                                s === w ? (i.insertAdjacentHTML("beforeEnd", e[a]),
                                j(i, e[a])) : s === k ? (i.insertAdjacentHTML("afterBegin", e[a]),
                                j(i, e[a])) : (o.delegate.notifyApplicationBeforeReplace(i),
                                i.innerHTML = e[a],
                                function(e) {
                                    Array.from(e.querySelectorAll("script")).forEach((function(e) {
                                        var t = document.createElement("script");
                                        Array.from(e.attributes).forEach((function(e) {
                                            return t.setAttribute(e.name, e.value)
                                        }
                                        )),
                                        t.appendChild(document.createTextNode(e.innerHTML)),
                                        e.parentNode.replaceChild(t, e)
                                    }
                                    ))
                                }(i));
                            o.delegate.notifyApplicationAjaxUpdate(i, e, t, r)
                        }
                        ))
                    };
                    for (var a in e)
                        n();
                    setTimeout((function() {
                        o.delegate.notifyApplicationUpdateComplete(e, t, r),
                        o.invoke("afterUpdate", [e, t, r]),
                        o.invokeFunc("afterUpdateFunc", e)
                    }
                    ), 0)
                }
                )),
                e.X_OCTOBER_REDIRECT && this.delegate.toggleRedirect(e.X_OCTOBER_REDIRECT),
                this.delegate.isRedirect && this.invoke("handleRedirectResponse", [this.delegate.options.redirect]),
                e.X_OCTOBER_ERROR_FIELDS && this.invoke("handleValidationMessage", [e.X_OCTOBER_ERROR_MESSAGE, e.X_OCTOBER_ERROR_FIELDS]),
                e.X_OCTOBER_ASSETS ? n.load(e.X_OCTOBER_ASSETS, (function() {
                    return a.resolve()
                }
                )) : a.resolve(),
                a
            }
        }, {
            key: "handleFileDownload",
            value: function(e, t) {
                if (this.options.browserTarget)
                    window.open(window.URL.createObjectURL(e), this.options.browserTarget);
                else {
                    var n = "string" == typeof this.options.download ? this.options.download : function(e) {
                        var t = e.getResponseHeader("Content-Disposition");
                        if (!t)
                            return null;
                        for (var n = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/g, r = null, o = null; null !== (o = n.exec(t)); )
                            r = o;
                        return null !== r && r[1] ? null === /filename[^;*=\n]*\*=[^']*''/.exec(r[0]) ? r[1].replace(/['"]/g, "") : decodeURIComponent(r[1].substring(r[1].indexOf("''") + 2)) : null
                    }(t);
                    if (n) {
                        var r = document.createElement("a");
                        r.href = window.URL.createObjectURL(e),
                        r.download = n,
                        r.target = "_blank",
                        r.click(),
                        window.URL.revokeObjectURL(r.href)
                    }
                }
            }
        }, {
            key: "applyQueryToUrl",
            value: function(e) {
                for (var t = new URLSearchParams(window.location.search), n = function() {
                    var n = o[r]
                      , i = e[n];
                    Array.isArray(i) ? (t.delete(n),
                    t.delete("".concat(n, "[]")),
                    i.forEach((function(e) {
                        return t.append("".concat(n, "[]"), e)
                    }
                    ))) : null === i ? (t.delete(n),
                    t.delete("".concat(n, "[]"))) : t.set(n, i)
                }, r = 0, o = Object.keys(e); r < o.length; r++)
                    n();
                var i = window.location.pathname
                  , a = t.toString();
                a && (i += "?" + a.replaceAll("%5B%5D=", "[]=")),
                oc.useTurbo && oc.useTurbo() ? oc.visit(i, {
                    action: "swap",
                    scroll: !1
                }) : (history.replaceState(null, "", i),
                localStorage.setItem("ocPushStateReferrer", i))
            }
        }]) && g(t.prototype, r),
        o && g(t, o),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function O(e, t) {
        return !0 === e ? document.querySelectorAll(t) : "string" != typeof e ? [e] : -1 === ["#", ".", "@", "^", "!", "="].indexOf(e.charAt(0)) ? [] : (-1 !== ["@", "^", "!", "="].indexOf(e.charAt(0)) && (e = e.substring(1)),
        e || (e = t),
        document.querySelectorAll(e))
    }
    function j(e, t) {
        var n = document.createElement("div");
        n.innerHTML = t,
        Array.from(n.querySelectorAll("script")).forEach((function(t) {
            var n = document.createElement("script");
            Array.from(t.attributes).forEach((function(e) {
                return n.setAttribute(e.name, e.value)
            }
            )),
            n.appendChild(document.createTextNode(t.innerHTML)),
            e.appendChild(n),
            e.removeChild(n)
        }
        ))
    }
    function x(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var S = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "assignToObj",
            value: function(t, n, r) {
                (new e).assignObjectInternal(t, n, r)
            }
        }, {
            key: "serializeJSON",
            value: function(t) {
                return (new e).parseContainer(t)
            }
        }],
        (n = [{
            key: "parseContainer",
            value: function(e) {
                var t = this
                  , n = {};
                return e.querySelectorAll("input, textarea, select").forEach((function(e) {
                    if (!(!e.name || e.disabled || ["file", "reset", "submit", "button"].indexOf(e.type) > -1) && (!(["checkbox", "radio"].indexOf(e.type) > -1) || e.checked)) {
                        if ("select-multiple" === e.type) {
                            var r = [];
                            return Array.from(e.options).forEach((function(t) {
                                t.selected && r.push({
                                    name: e.name,
                                    value: t.value
                                })
                            }
                            )),
                            void t.assignObjectInternal(n, e.name, r)
                        }
                        t.assignObjectInternal(n, e.name, e.value)
                    }
                }
                )),
                n
            }
        }, {
            key: "assignObjectInternal",
            value: function(e, t, n) {
                this.assignObjectNested(e, this.nameToArray(t), n, t.endsWith("[]"))
            }
        }, {
            key: "assignObjectNested",
            value: function(e, t, n, r) {
                var o = e
                  , i = t.length - 1;
                t.forEach((function(e, t) {
                    r && t === i ? (Array.isArray(o[e]) || (o[e] = []),
                    o[e].push(n)) : (void 0 !== o[e] && o[e].constructor === {}.constructor || (o[e] = {}),
                    t === i && (o[e] = n),
                    o = o[e])
                }
                ))
            }
        }, {
            key: "nameToArray",
            value: function(e) {
                for (var t, n = /([^\]\[]+)/g, r = []; t = n.exec(e); )
                    r.push(t[0]);
                return r
            }
        }]) && x(t.prototype, n),
        r && x(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function T(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var C = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.userData = t || {},
            this.targetEl = n,
            this.formEl = r
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "getRequestData",
            value: function() {
                var e;
                return e = this.formEl ? new FormData(this.formEl) : new FormData,
                this.appendSingleInputElement(e),
                e
            }
        }, {
            key: "getAsFormData",
            value: function() {
                return this.appendJsonToFormData(this.getRequestData(), this.userData)
            }
        }, {
            key: "getAsQueryString",
            value: function() {
                return this.convertFormDataToQuery(this.getAsFormData())
            }
        }, {
            key: "getAsJsonData",
            value: function() {
                return JSON.stringify(this.convertFormDataToJson(this.getAsFormData()))
            }
        }, {
            key: "appendSingleInputElement",
            value: function(e) {
                if (!this.formEl && this.targetEl && (t = this.targetEl,
                ["input", "select", "textarea"].includes((t.tagName || "").toLowerCase()))) {
                    var t, n = this.targetEl.name;
                    n && void 0 === this.userData[n] && ("file" === this.targetEl.type ? this.targetEl.files.forEach((function(t) {
                        e.append(n, t)
                    }
                    )) : e.append(n, this.targetEl.value))
                }
            }
        }, {
            key: "appendJsonToFormData",
            value: function(e, t, n) {
                var r = this;
                for (var o in t) {
                    var i = o;
                    n && (i = n + "[" + o + "]");
                    var a = t[o];
                    a && a.constructor === {}.constructor ? this.appendJsonToFormData(e, a, i) : a && a.constructor === [].constructor ? a.forEach((function(t, n) {
                        t.constructor === {}.constructor || t.constructor === [].constructor ? r.appendJsonToFormData(e, t, i + "[" + n + "]") : e.append(i + "[]", r.castJsonToFormData(t))
                    }
                    )) : e.append(i, this.castJsonToFormData(a))
                }
                return e
            }
        }, {
            key: "convertFormDataToQuery",
            value: function(e) {
                var t = this.formDataToArray(e);
                return Object.keys(t).map((function(e) {
                    return e.endsWith("[]") ? t[e].map((function(t) {
                        return encodeURIComponent(e) + "=" + encodeURIComponent(t)
                    }
                    )).join("&") : encodeURIComponent(e) + "=" + encodeURIComponent(t[e])
                }
                )).join("&")
            }
        }, {
            key: "convertFormDataToJson",
            value: function(e) {
                var t = this.formDataToArray(e)
                  , n = {};
                for (var r in t)
                    S.assignToObj(n, r, t[r]);
                return n
            }
        }, {
            key: "formDataToArray",
            value: function(e) {
                return Object.fromEntries(Array.from(e.keys()).map((function(t) {
                    return [t, t.endsWith("[]") ? e.getAll(t) : e.getAll(t).pop()]
                }
                )))
            }
        }, {
            key: "castJsonToFormData",
            value: function(e) {
                return null === e ? "" : !0 === e ? "1" : !1 === e ? "0" : e
            }
        }]) && T(t.prototype, n),
        r && T(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function q(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
          , n = t.target
          , r = void 0 === n ? document : n
          , o = t.detail
          , i = void 0 === o ? {} : o
          , a = t.bubbles
          , s = void 0 === a || a
          , l = t.cancelable
          , u = void 0 === l || l
          , c = new CustomEvent(e,{
            detail: i,
            bubbles: s,
            cancelable: u
        });
        return r.dispatchEvent(c),
        c
    }
    function B(e) {
        for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
            n[r - 1] = arguments[r];
        var o = P(R(e, n)).split("\n")
          , i = o[0].match(/^\s+/)
          , a = i ? i[0].length : 0;
        return o.map((function(e) {
            return e.slice(a)
        }
        )).join("\n")
    }
    function P(e) {
        return e.replace(/^\n/, "")
    }
    function R(e, t) {
        return e.reduce((function(e, n, r) {
            return e + n + (null == t[r] ? "" : t[r])
        }
        ), "")
    }
    function F(e, t) {
        var n = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!n) {
            if (Array.isArray(e) || (n = M(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var r = 0
                  , o = function() {};
                return {
                    s: o,
                    n: function() {
                        return r >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[r++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: o
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var i, a = !0, s = !1;
        return {
            s: function() {
                n = n.call(e)
            },
            n: function() {
                var e = n.next();
                return a = e.done,
                e
            },
            e: function(e) {
                s = !0,
                i = e
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw i
                }
            }
        }
    }
    function L(e, t) {
        return function(e) {
            if (Array.isArray(e))
                return e
        }(e) || function(e, t) {
            var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
            if (null == n)
                return;
            var r, o, i = [], a = !0, s = !1;
            try {
                for (n = n.call(e); !(a = (r = n.next()).done) && (i.push(r.value),
                !t || i.length !== t); a = !0)
                    ;
            } catch (e) {
                s = !0,
                o = e
            } finally {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
            return i
        }(e, t) || M(e, t) || function() {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function M(e, t) {
        if (e) {
            if ("string" == typeof e)
                return I(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name),
            "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? I(e, t) : void 0
        }
    }
    function I(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function D(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var N = /[^.]*(?=\..*)\.|.*/
      , U = /\..*/
      , J = /::\d+$/
      , Q = {}
      , _ = 1
      , K = {
        mouseenter: "mouseover",
        mouseleave: "mouseout"
    }
      , H = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"])
      , X = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "on",
            value: function(e, t, n, r, o) {
                Y(e, t, n, r, o, !1)
            }
        }, {
            key: "one",
            value: function(e, t, n, r, o) {
                Y(e, t, n, r, o, !0)
            }
        }, {
            key: "off",
            value: function(e, t, n, r, o) {
                if ("string" == typeof t && e) {
                    var i = L(Z(t, n, r, o), 4)
                      , a = i[0]
                      , s = i[1]
                      , l = i[2]
                      , u = i[3]
                      , c = l !== t
                      , f = W(e)
                      , h = f[l] || {}
                      , d = t.startsWith(".");
                    if (void 0 === s) {
                        if (d)
                            for (var p = 0, y = Object.keys(f); p < y.length; p++)
                                te(e, f, y[p], t.slice(1));
                        for (var v = 0, m = Object.keys(h); v < m.length; v++) {
                            var g = m[v]
                              , b = g.replace(J, "");
                            if (!c || t.includes(b)) {
                                var k = h[g];
                                ee(e, f, l, k.callable, k.delegationSelector, u)
                            }
                        }
                    } else {
                        if (!h)
                            return;
                        ee(e, f, l, s, a ? n : null, u)
                    }
                }
            }
        }, {
            key: "dispatch",
            value: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
                  , n = t.target
                  , r = void 0 === n ? document : n
                  , o = t.detail
                  , i = void 0 === o ? {} : o
                  , a = t.bubbles
                  , s = void 0 === a || a
                  , l = t.cancelable
                  , u = void 0 === l || l;
                return q(e, {
                    target: r,
                    detail: i,
                    bubbles: s,
                    cancelable: u
                })
            }
        }],
        (n = null) && D(t.prototype, n),
        r && D(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function z(e, t) {
        return t && "".concat(t, "::").concat(_++) || e.uidEvent || _++
    }
    function W(e) {
        var t = z(e);
        return e.uidEvent = t,
        Q[t] = Q[t] || {},
        Q[t]
    }
    function G(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
        return Object.values(e).find((function(e) {
            return e.callable === t && e.delegationSelector === n
        }
        ))
    }
    function Z(e, t, n, r) {
        var o, i = "string" == typeof t, a = i ? n : t, s = i ? r : n, l = (o = (o = e).replace(U, ""),
        K[o] || o);
        return H.has(l) || (l = e),
        [i, a, l, s]
    }
    function Y(e, t, n, r, o, i) {
        if ("string" == typeof t && e) {
            var a = L(Z(t, n, r, o), 4)
              , s = a[0]
              , l = a[1]
              , u = a[2]
              , c = a[3];
            if (t in K) {
                l = function(e) {
                    return function(t) {
                        if (!t.relatedTarget || t.relatedTarget !== t.delegateTarget && !t.delegateTarget.contains(t.relatedTarget))
                            return e.call(this, t)
                    }
                }(l)
            }
            var f = W(e)
              , h = f[u] || (f[u] = {})
              , d = G(h, l, s ? n : null);
            if (d)
                d.oneOff = d.oneOff && i;
            else {
                var p = z(l, t.replace(N, ""))
                  , y = s ? function(e, t, n) {
                    return function r(o) {
                        for (var i = e.querySelectorAll(t), a = o.target; a && a !== this; a = a.parentNode) {
                            var s, l = F(i);
                            try {
                                for (l.s(); !(s = l.n()).done; ) {
                                    if (s.value === a)
                                        return o.delegateTarget = a,
                                        r.oneOff && X.off(e, o.type, t, n),
                                        n.apply(a, [o])
                                }
                            } catch (e) {
                                l.e(e)
                            } finally {
                                l.f()
                            }
                        }
                    }
                }(e, n, l) : function(e, t) {
                    return function n(r) {
                        return r.delegateTarget = e,
                        n.oneOff && X.off(e, r.type, t),
                        t.apply(e, [r])
                    }
                }(e, l);
                y.delegationSelector = s ? n : null,
                y.callable = l,
                y.oneOff = i,
                y.uidEvent = p,
                h[p] = y,
                e.addEventListener(u, y, c)
            }
        }
    }
    function ee(e, t, n, r, o, i) {
        var a = G(t[n], r, o);
        a && (e.removeEventListener(n, a, i),
        delete t[n][a.uidEvent])
    }
    function te(e, t, n, r) {
        for (var o = t[n] || {}, i = 0, a = Object.keys(o); i < a.length; i++) {
            var s = a[i];
            if (s.includes(r)) {
                var l = o[s];
                ee(e, t, n, l.callable, l.delegationSelector)
            }
        }
    }
    function ne(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var re, oe = 0, ie = -1, ae = -2, se = -3, le = function() {
        function e(t, n, r) {
            var o = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.failed = !1,
            this.progress = 0,
            this.sent = !1,
            this.delegate = t,
            this.url = n,
            this.options = r,
            this.headers = r.headers || {},
            this.method = r.method || "GET",
            this.responseType = r.responseType || "",
            this.data = r.data,
            this.timeout = r.timeout || 0,
            this.requestProgressed = function(e) {
                e.lengthComputable && o.setProgress(e.loaded / e.total)
            }
            ,
            this.requestLoaded = function() {
                o.endRequest((function(e) {
                    o.processResponseData(e, (function(e, t) {
                        var n = e.getResponseHeader("Content-Type")
                          , r = function(e) {
                            return (e || "").includes("application/json")
                        }(n) ? JSON.parse(t) : t;
                        if (o.options.htmlOnly && !function(e) {
                            return (e || "").match(/^text\/html|^application\/xhtml\+xml/)
                        }(n))
                            return o.failed = !0,
                            void o.delegate.requestFailedWithStatusCode(ae);
                        e.status >= 200 && e.status < 300 ? o.delegate.requestCompletedWithResponse(r, e.status, function(e, t) {
                            if (e.getResponseHeader("X-OCTOBER-LOCATION"))
                                return e.getResponseHeader("X-OCTOBER-LOCATION");
                            var n = t.match(/^(.*)#/);
                            return (n ? n[1] : t) !== e.responseURL ? e.responseURL : null
                        }(e, o.url)) : (o.failed = !0,
                        o.delegate.requestFailedWithStatusCode(e.status, r))
                    }
                    ))
                }
                ))
            }
            ,
            this.requestFailed = function() {
                o.endRequest((function() {
                    o.failed = !0,
                    o.delegate.requestFailedWithStatusCode(oe)
                }
                ))
            }
            ,
            this.requestTimedOut = function() {
                o.endRequest((function() {
                    o.failed = !0,
                    o.delegate.requestFailedWithStatusCode(ie)
                }
                ))
            }
            ,
            this.requestCanceled = function() {
                o.options.trackAbort ? o.endRequest((function() {
                    o.failed = !0,
                    o.delegate.requestFailedWithStatusCode(se)
                }
                )) : o.endRequest()
            }
            ,
            this.createXHR()
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "send",
            value: function() {
                this.xhr && !this.sent && (this.notifyApplicationBeforeRequestStart(),
                this.setProgress(0),
                this.xhr.send(this.data || null),
                this.sent = !0,
                this.delegate.requestStarted())
            }
        }, {
            key: "abort",
            value: function() {
                this.xhr && this.sent && this.xhr.abort()
            }
        }, {
            key: "notifyApplicationBeforeRequestStart",
            value: function() {
                X.dispatch("ajax:request-start", {
                    detail: {
                        url: this.url,
                        xhr: this.xhr
                    },
                    cancelable: !1
                })
            }
        }, {
            key: "notifyApplicationAfterRequestEnd",
            value: function() {
                X.dispatch("ajax:request-end", {
                    detail: {
                        url: this.url,
                        xhr: this.xhr
                    },
                    cancelable: !1
                })
            }
        }, {
            key: "createXHR",
            value: function() {
                var e = this.xhr = new XMLHttpRequest;
                for (var t in e.open(this.method, this.url, !0),
                e.responseType = this.responseType,
                e.onprogress = this.requestProgressed,
                e.onload = this.requestLoaded,
                e.onerror = this.requestFailed,
                e.ontimeout = this.requestTimedOut,
                e.onabort = this.requestCanceled,
                this.timeout && (e.timeout = 1e3 * this.timeout),
                this.headers)
                    e.setRequestHeader(t, this.headers[t]);
                return e
            }
        }, {
            key: "endRequest",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : function() {}
                ;
                this.xhr && (this.notifyApplicationAfterRequestEnd(),
                e(this.xhr),
                this.destroy())
            }
        }, {
            key: "setProgress",
            value: function(e) {
                this.progress = e,
                this.delegate.requestProgressed(e)
            }
        }, {
            key: "destroy",
            value: function() {
                this.setProgress(1),
                this.delegate.requestFinished()
            }
        }, {
            key: "processResponseData",
            value: function(e, t) {
                if ("blob" === this.responseType) {
                    var n = e.getResponseHeader("Content-Disposition") || "";
                    if (0 !== n.indexOf("attachment") && 0 !== n.indexOf("inline")) {
                        var r = new FileReader;
                        r.addEventListener("load", (function() {
                            t(e, r.result)
                        }
                        )),
                        r.readAsText(e.response)
                    } else
                        t(e, e.response)
                } else
                    t(e, e.responseText)
            }
        }],
        n && ne(t.prototype, n),
        r && ne(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function ue(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    function ce(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    var fe = function() {
        function e() {
            var t = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.stylesheetElement = this.createStylesheetElement(),
            this.progressElement = this.createProgressElement(),
            this.hiding = !1,
            this.value = 0,
            this.visible = !1,
            this.trickle = function() {
                t.setValue(t.value + Math.random() / 100)
            }
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "show",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                e.cssClass && this.progressElement.classList.add(e.cssClass),
                this.visible || (this.visible = !0,
                this.installStylesheetElement(),
                this.installProgressElement(),
                this.startTrickling())
            }
        }, {
            key: "hide",
            value: function() {
                var e = this;
                this.visible && !this.hiding && (this.hiding = !0,
                this.fadeProgressElement((function() {
                    e.uninstallProgressElement(),
                    e.stopTrickling(),
                    e.visible = !1,
                    e.hiding = !1
                }
                )))
            }
        }, {
            key: "setValue",
            value: function(e) {
                this.value = e,
                this.refresh()
            }
        }, {
            key: "installStylesheetElement",
            value: function() {
                e.stylesheetReady || (document.head.insertBefore(this.stylesheetElement, document.head.firstChild),
                e.stylesheetReady = !0)
            }
        }, {
            key: "installProgressElement",
            value: function() {
                this.progressElement.style.width = "0",
                this.progressElement.style.opacity = "1",
                document.documentElement.insertBefore(this.progressElement, document.body),
                this.refresh()
            }
        }, {
            key: "fadeProgressElement",
            value: function(t) {
                this.progressElement.style.opacity = "0",
                setTimeout(t, 1.5 * e.animationDuration)
            }
        }, {
            key: "uninstallProgressElement",
            value: function() {
                this.progressElement.parentNode && document.documentElement.removeChild(this.progressElement)
            }
        }, {
            key: "startTrickling",
            value: function() {
                this.trickleInterval || (this.trickleInterval = setInterval(this.trickle, e.animationDuration))
            }
        }, {
            key: "stopTrickling",
            value: function() {
                clearInterval(this.trickleInterval),
                delete this.trickleInterval
            }
        }, {
            key: "refresh",
            value: function() {
                var e = this;
                requestAnimationFrame((function() {
                    e.progressElement.style.width = "".concat(10 + 90 * e.value, "%")
                }
                ))
            }
        }, {
            key: "createStylesheetElement",
            value: function() {
                var t = document.createElement("style");
                return t.textContent = e.defaultCSS,
                t
            }
        }, {
            key: "createProgressElement",
            value: function() {
                var e = document.createElement("div");
                return e.className = "oc-progress-bar",
                e
            }
        }],
        r = [{
            key: "defaultCSS",
            get: function() {
                return B(re || (t = ["\n        .oc-progress-bar {\n            position: fixed;\n            display: block;\n            top: 0;\n            left: 0;\n            height: 3px;\n            background: #0076ff;\n            z-index: 9999;\n            transition:\n                width ", "ms ease-out,\n                opacity ", "ms ", "ms ease-in;\n            transform: translate3d(0, 0, 0);\n        }\n    "],
                n || (n = t.slice(0)),
                re = Object.freeze(Object.defineProperties(t, {
                    raw: {
                        value: Object.freeze(n)
                    }
                }))), e.animationDuration, e.animationDuration / 2, e.animationDuration / 2);
                var t, n
            }
        }, {
            key: "progressBar",
            get: function() {
                return {
                    show: function() {
                        var e = he();
                        e.setValue(0),
                        e.show()
                    },
                    hide: function() {
                        var e = he();
                        e.setValue(100),
                        e.hide()
                    }
                }
            }
        }],
        n && ue(t.prototype, n),
        r && ue(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function he() {
        return fe.instance || (fe.instance = new fe),
        fe.instance
    }
    function de(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function pe(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? de(Object(n), !0).forEach((function(t) {
                ye(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : de(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function ye(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function ve(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    ce(fe, "instance", null),
    ce(fe, "stylesheetReady", !1),
    ce(fe, "animationDuration", 300);
    const me = function() {
        function e(t, n, r) {
            var o = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.el = t,
            this.handler = n,
            this.options = pe(pe({}, this.constructor.DEFAULTS), r || {}),
            this.context = {
                el: t,
                handler: n,
                options: this.options
            },
            this.progressBar = new fe,
            this.showProgressBar = function() {
                o.progressBar.show({
                    cssClass: "is-ajax"
                })
            }
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "DEFAULTS",
            get: function() {
                return {
                    handler: null,
                    update: {},
                    files: !1,
                    bulk: !1,
                    download: !1,
                    browserTarget: null,
                    browserValidate: !1,
                    browserRedirectBack: !1,
                    progressBarDelay: 500,
                    progressBar: null
                }
            }
        }, {
            key: "send",
            value: function(t, n) {
                return new e(document,t,n).start()
            }
        }, {
            key: "sendElement",
            value: function(t, n, r) {
                return "string" == typeof t && (t = document.querySelector(t)),
                new e(t,n,r).start()
            }
        }],
        (n = [{
            key: "start",
            value: function() {
                if (this.applicationAllowsSetup() && (this.initOtherElements(),
                this.preprocessOptions(),
                this.actions = new A(this,this.context,this.options),
                this.validateClientSideForm() && this.applicationAllowsRequest() && (!this.options.confirm || this.actions.invoke("handleConfirmMessage", [this.options.confirm]))))
                    return this.sendInternal(),
                    this.options.async ? this.wrapInAsyncPromise(this.promise) : this.promise
            }
        }, {
            key: "sendInternal",
            value: function() {
                var e, t = this, n = new C(this.options.data,this.el,this.formEl);
                e = this.options.files ? n.getAsFormData() : this.options.bulk ? n.getAsJsonData() : n.getAsQueryString(),
                this.options.query && this.actions.invoke("applyQueryToUrl", [!0 !== this.options.query ? this.options.query : JSON.parse(n.getAsJsonData())]);
                var r = a.fetch(this.handler, this.options)
                  , o = r.url
                  , i = r.headers
                  , s = r.method
                  , l = r.responseType;
                this.request = new le(this,o,{
                    method: s,
                    headers: i,
                    responseType: l,
                    data: e,
                    trackAbort: !0
                }),
                this.promise = new f({
                    delegate: this.request
                }),
                this.isRedirect = this.options.redirect && this.options.redirect.length > 0,
                this.notifyApplicationBeforeSend(),
                this.notifyApplicationAjaxPromise(),
                this.promise.fail((function(e, n, r) {
                    t.isRedirect || t.notifyApplicationAjaxFail(e, n, r)
                }
                )).done((function(e, n, r) {
                    t.isRedirect || t.notifyApplicationAjaxDone(e, n, r)
                }
                )).always((function(e, n, r) {
                    t.notifyApplicationAjaxAlways(e, n, r)
                }
                )),
                this.request.send()
            }
        }, {
            key: "toggleRedirect",
            value: function(e) {
                e ? (this.options.redirect = e,
                this.isRedirect = !0) : (this.options.redirect = null,
                this.isRedirect = !1)
            }
        }, {
            key: "applicationAllowsSetup",
            value: function() {
                return !this.notifyApplicationAjaxSetup().defaultPrevented
            }
        }, {
            key: "applicationAllowsRequest",
            value: function() {
                return !this.notifyApplicationBeforeRequest().defaultPrevented
            }
        }, {
            key: "applicationAllowsUpdate",
            value: function(e, t, n) {
                return !this.notifyApplicationBeforeUpdate(e, t, n).defaultPrevented
            }
        }, {
            key: "applicationAllowsError",
            value: function(e, t, n) {
                return !this.notifyApplicationRequestError(e, t, n).defaultPrevented
            }
        }, {
            key: "notifyApplicationAjaxSetup",
            value: function() {
                return q("ajax:setup", {
                    target: this.el,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxPromise",
            value: function() {
                return q("ajax:promise", {
                    target: this.el,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxFail",
            value: function(e, t, n) {
                return q("ajax:fail", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxDone",
            value: function(e, t, n) {
                return q("ajax:done", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxAlways",
            value: function(e, t, n) {
                return q("ajax:always", {
                    target: this.el,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationAjaxUpdate",
            value: function(e, t, n, r) {
                return q("ajax:update", {
                    target: e,
                    detail: {
                        context: this.context,
                        data: t,
                        responseCode: n,
                        xhr: r
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeRedirect",
            value: function() {
                return q("ajax:before-redirect", {
                    target: this.el
                })
            }
        }, {
            key: "notifyApplicationBeforeRequest",
            value: function() {
                return q("ajax:before-request", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeUpdate",
            value: function(e, t, n) {
                return q("ajax:before-update", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestSuccess",
            value: function(e, t, n) {
                return q("ajax:request-success", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestError",
            value: function(e, t, n) {
                return q("ajax:request-error", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        message: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationRequestComplete",
            value: function(e, t, n) {
                return q("ajax:request-complete", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeValidate",
            value: function(e, t) {
                return q("ajax:before-validate", {
                    target: this.triggerEl,
                    detail: {
                        context: this.context,
                        message: e,
                        fields: t
                    }
                })
            }
        }, {
            key: "notifyApplicationBeforeReplace",
            value: function(e) {
                return q("ajax:before-replace", {
                    target: e
                })
            }
        }, {
            key: "notifyApplicationBeforeSend",
            value: function() {
                return q("ajax:before-send", {
                    target: window,
                    detail: {
                        context: this.context
                    }
                })
            }
        }, {
            key: "notifyApplicationUpdateComplete",
            value: function(e, t, n) {
                return q("ajax:update-complete", {
                    target: window,
                    detail: {
                        context: this.context,
                        data: e,
                        responseCode: t,
                        xhr: n
                    }
                })
            }
        }, {
            key: "notifyApplicationFieldInvalid",
            value: function(e, t, n, r) {
                return q("ajax:invalid-field", {
                    target: window,
                    detail: {
                        element: e,
                        fieldName: t,
                        errorMsg: n,
                        isFirst: r
                    }
                })
            }
        }, {
            key: "notifyApplicationConfirmMessage",
            value: function(e, t) {
                return q("ajax:confirm-message", {
                    target: window,
                    detail: {
                        message: e,
                        promise: t
                    }
                })
            }
        }, {
            key: "notifyApplicationErrorMessage",
            value: function(e) {
                return q("ajax:error-message", {
                    target: window,
                    detail: {
                        message: e
                    }
                })
            }
        }, {
            key: "notifyApplicationCustomEvent",
            value: function(e, t) {
                return q(e, {
                    target: this.el,
                    detail: t
                })
            }
        }, {
            key: "requestStarted",
            value: function() {
                this.markAsProgress(!0),
                this.toggleLoadingElement(!0),
                this.options.progressBar && this.showProgressBarAfterDelay(),
                this.actions.invoke("start", [this.request.xhr])
            }
        }, {
            key: "requestProgressed",
            value: function(e) {
                this.promise.notify(e)
            }
        }, {
            key: "requestCompletedWithResponse",
            value: function(e, t) {
                this.actions.invoke("success", [e, t, this.request.xhr]),
                this.actions.invoke("complete", [e, t, this.request.xhr]),
                this.promise.resolve(e, t, this.request.xhr)
            }
        }, {
            key: "requestFailedWithStatusCode",
            value: function(e, t) {
                e == se ? this.actions.invoke("cancel", []) : this.actions.invoke("error", [t, e, this.request.xhr]),
                this.actions.invoke("complete", [t, e, this.request.xhr]),
                this.promise.reject(t, e, this.request.xhr)
            }
        }, {
            key: "requestFinished",
            value: function() {
                this.markAsProgress(!1),
                this.toggleLoadingElement(!1),
                this.options.progressBar && this.hideProgressBar()
            }
        }, {
            key: "initOtherElements",
            value: function() {
                "string" == typeof this.options.form ? this.formEl = document.querySelector(this.options.form) : this.options.form ? this.formEl = this.options.form : this.formEl = this.el && this.el !== document ? this.el.closest("form") : null,
                this.triggerEl = this.formEl ? this.formEl : this.el,
                this.partialEl = this.el && this.el !== document ? this.el.closest("[data-ajax-partial]") : null,
                this.loadingEl = "string" == typeof this.options.loading ? document.querySelector(this.options.loading) : this.options.loading
            }
        }, {
            key: "preprocessOptions",
            value: function() {
                void 0 === this.options.partial && this.partialEl && void 0 !== this.partialEl.dataset.ajaxPartial && (this.options.partial = this.partialEl.dataset.ajaxPartial || !0)
            }
        }, {
            key: "validateClientSideForm",
            value: function() {
                return !(this.options.browserValidate && "function" == typeof document.createElement("input").reportValidity && this.formEl && !this.formEl.checkValidity() && (this.formEl.reportValidity(),
                1))
            }
        }, {
            key: "toggleLoadingElement",
            value: function(e) {
                this.loadingEl && ("function" == typeof this.loadingEl.show && "function" == typeof this.loadingEl.hide ? e ? this.loadingEl.show() : this.loadingEl.hide() : this.loadingEl.style.display = e ? "block" : "none")
            }
        }, {
            key: "showProgressBarAfterDelay",
            value: function() {
                this.progressBar.setValue(0),
                this.progressBarTimeout = window.setTimeout(this.showProgressBar, this.options.progressBarDelay)
            }
        }, {
            key: "hideProgressBar",
            value: function() {
                this.progressBar.setValue(100),
                this.progressBar.hide(),
                null != this.progressBarTimeout && (window.clearTimeout(this.progressBarTimeout),
                delete this.progressBarTimeout)
            }
        }, {
            key: "markAsProgress",
            value: function(e) {
                e ? (document.documentElement.setAttribute("data-ajax-progress", ""),
                this.formEl && this.formEl.setAttribute("data-ajax-progress", this.handler)) : (document.documentElement.removeAttribute("data-ajax-progress"),
                this.formEl && this.formEl.removeAttribute("data-ajax-progress"))
            }
        }, {
            key: "wrapInAsyncPromise",
            value: function(e) {
                return new Promise((function(t, n, r) {
                    e.fail((function(e) {
                        n(e)
                    }
                    )).done((function(e) {
                        t(e)
                    }
                    )),
                    r && r((function() {
                        e.abort()
                    }
                    ))
                }
                ))
            }
        }]) && ve(t.prototype, n),
        r && ve(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function ge() {
        return new Promise((function(e) {
            "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", (function() {
                return e()
            }
            )) : e()
        }
        ))
    }
    function be(e) {
        return be = "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
        }
        ,
        be(e)
    }
    function ke(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxRequest || (window.oc.AjaxRequest = me,
    window.oc.AssetManager = n,
    window.oc.ajax = me.send,
    window.oc.request || (window.oc.request = me.sendElement));
    var we = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "paramToObj",
            value: function(e, t) {
                if (void 0 === t && (t = ""),
                "object" === be(t))
                    return t;
                "{" !== t.charAt(0) && (t = "{" + t + "}");
                try {
                    return this.parseJSON(t)
                } catch (t) {
                    throw new Error("Error parsing the " + e + " attribute value. " + t)
                }
            }
        }, {
            key: "parseJSON",
            value: function(t) {
                return JSON.parse((new e).parseString(t))
            }
        }],
        (n = [{
            key: "parseString",
            value: function(e) {
                if (!(e = e.trim()).length)
                    throw new Error("Broken JSON object.");
                for (var t = ""; e && "," === e[0]; )
                    e = e.substr(1);
                if ('"' === e[0] || "'" === e[0]) {
                    if (e[e.length - 1] !== e[0])
                        throw new Error("Invalid string JSON object.");
                    for (var n = '"', r = 1; r < e.length; r++)
                        if ("\\" === e[r])
                            "'" === e[r + 1] || (n += e[r]),
                            n += e[r + 1],
                            r++;
                        else {
                            if (e[r] === e[0])
                                return n += '"';
                            '"' === e[r] ? n += '\\"' : n += e[r]
                        }
                    throw new Error("Invalid string JSON object.")
                }
                if ("true" === e || "false" === e)
                    return e;
                if ("null" === e)
                    return "null";
                var o = parseFloat(e);
                if (!isNaN(o))
                    return o.toString();
                if ("{" === e[0]) {
                    var i = "needKey";
                    for (t = "{",
                    r = 1; r < e.length; r++)
                        if (!this.isBlankChar(e[r]))
                            if ("needKey" !== i || '"' !== e[r] && "'" !== e[r]) {
                                if ("needKey" === i && this.canBeKeyHead(e[r])) {
                                    var a;
                                    t += '"',
                                    t += a = this.parseKey(e, r),
                                    t += '"',
                                    r += a.length - 1,
                                    i = "afterKey"
                                } else if ("afterKey" === i && ":" === e[r])
                                    t += ":",
                                    i = ":";
                                else if (":" === i)
                                    r = r + (n = this.getBody(e, r)).originLength - 1,
                                    t += this.parseString(n.body),
                                    i = "afterBody";
                                else if ("afterBody" === i || "needKey" === i) {
                                    for (var s = r; "," === e[s] || this.isBlankChar(e[s]); )
                                        s++;
                                    if ("}" === e[s] && s === e.length - 1) {
                                        for (; "," === t[t.length - 1]; )
                                            t = t.substr(0, t.length - 1);
                                        return t += "}"
                                    }
                                    s !== r && "{" !== t && (t += ",",
                                    i = "needKey",
                                    r = s - 1)
                                }
                            } else
                                t += '"' + (a = this.parseKey(e, r + 1, e[r])) + '"',
                                r += a.length,
                                r += 1,
                                i = "afterKey";
                    throw new Error("Broken JSON object near " + t)
                }
                if ("[" === e[0]) {
                    for (t = "[",
                    i = "needBody",
                    r = 1; r < e.length; r++)
                        if (" " !== e[r] && "\n" !== e[r] && "\t" !== e[r])
                            if ("needBody" === i) {
                                if ("," === e[r]) {
                                    t += "null,";
                                    continue
                                }
                                if ("]" === e[r] && r === e.length - 1)
                                    return "," === t[t.length - 1] && (t = t.substr(0, t.length - 1)),
                                    t += "]";
                                r = r + (n = this.getBody(e, r)).originLength - 1,
                                t += this.parseString(n.body),
                                i = "afterBody"
                            } else if ("afterBody" === i)
                                if ("," === e[r])
                                    for (t += ",",
                                    i = "needBody"; "," === e[r + 1] || this.isBlankChar(e[r + 1]); )
                                        "," === e[r + 1] && (t += "null,"),
                                        r++;
                                else if ("]" === e[r] && r === e.length - 1)
                                    return t += "]";
                    throw new Error("Broken JSON array near " + t)
                }
            }
        }, {
            key: "parseKey",
            value: function(e, t, n) {
                for (var r = "", o = t; o < e.length; o++) {
                    if (n && n === e[o])
                        return r;
                    if (!n && (" " === e[o] || ":" === e[o]))
                        return r;
                    r += e[o],
                    "\\" === e[o] && o + 1 < e.length && (r += e[o + 1],
                    o++)
                }
                throw new Error("Broken JSON syntax near " + r)
            }
        }, {
            key: "getBody",
            value: function(e, t) {
                if ('"' === e[t] || "'" === e[t]) {
                    for (var n = e[t], r = t + 1; r < e.length; r++)
                        if ("\\" === e[r])
                            n += e[r],
                            r + 1 < e.length && (n += e[r + 1]),
                            r++;
                        else {
                            if (e[r] === e[t])
                                return {
                                    originLength: (n += e[t]).length,
                                    body: n
                                };
                            n += e[r]
                        }
                    throw new Error("Broken JSON string body near " + n)
                }
                if ("t" === e[t]) {
                    if (e.indexOf("true", t) === t)
                        return {
                            originLength: "true".length,
                            body: "true"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("f" === e[t]) {
                    if (e.indexOf("f", t) === t)
                        return {
                            originLength: "false".length,
                            body: "false"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("n" === e[t]) {
                    if (e.indexOf("null", t) === t)
                        return {
                            originLength: "null".length,
                            body: "null"
                        };
                    throw new Error("Broken JSON boolean body near " + e.substr(0, t + 10))
                }
                if ("-" === e[t] || "+" === e[t] || "." === e[t] || e[t] >= "0" && e[t] <= "9") {
                    for (n = "",
                    r = t; r < e.length; r++) {
                        if (!("-" === e[r] || "+" === e[r] || "." === e[r] || e[r] >= "0" && e[r] <= "9"))
                            return {
                                originLength: n.length,
                                body: n
                            };
                        n += e[r]
                    }
                    throw new Error("Broken JSON number body near " + n)
                }
                if ("{" === e[t] || "[" === e[t]) {
                    var o = [e[t]];
                    for (n = e[t],
                    r = t + 1; r < e.length; r++) {
                        if (n += e[r],
                        "\\" === e[r])
                            r + 1 < e.length && (n += e[r + 1]),
                            r++;
                        else if ('"' === e[r])
                            '"' === o[o.length - 1] ? o.pop() : "'" !== o[o.length - 1] && o.push(e[r]);
                        else if ("'" === e[r])
                            "'" === o[o.length - 1] ? o.pop() : '"' !== o[o.length - 1] && o.push(e[r]);
                        else if ('"' !== o[o.length - 1] && "'" !== o[o.length - 1])
                            if ("{" === e[r])
                                o.push("{");
                            else if ("}" === e[r]) {
                                if ("{" !== o[o.length - 1])
                                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n);
                                o.pop()
                            } else if ("[" === e[r])
                                o.push("[");
                            else if ("]" === e[r]) {
                                if ("[" !== o[o.length - 1])
                                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n);
                                o.pop()
                            }
                        if (!o.length)
                            return {
                                originLength: r - t,
                                body: n
                            }
                    }
                    throw new Error("Broken JSON " + ("{" === e[t] ? "object" : "array") + " body near " + n)
                }
                throw new Error("Broken JSON body near " + e.substr(t - 5 >= 0 ? t - 5 : 0, 50))
            }
        }, {
            key: "canBeKeyHead",
            value: function(e) {
                return "\\" !== e[0] && (e[0] >= "a" && e[0] <= "z" || e[0] >= "A" && e[0] <= "Z" || "_" === e[0] || e[0] >= "0" && e[0] <= "9" || "$" === e[0] || e.charCodeAt(0) > 255)
            }
        }, {
            key: "isBlankChar",
            value: function(e) {
                return " " === e || "\n" === e || "\t" === e
            }
        }]) && ke(t.prototype, n),
        r && ke(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Ee(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function Ae(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? Ee(Object(n), !0).forEach((function(t) {
                Oe(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Ee(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function Oe(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    function je(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var xe = function() {
        function e(t, n, r) {
            return function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.options = r || {},
            this.ogElement = t,
            this.element = this.findElement(t),
            this.element ? (this.assignAsEval("beforeUpdateFunc", "requestBeforeUpdate"),
            this.assignAsEval("afterUpdateFunc", "requestAfterUpdate"),
            this.assignAsEval("successFunc", "requestSuccess"),
            this.assignAsEval("errorFunc", "requestError"),
            this.assignAsEval("cancelFunc", "requestCancel"),
            this.assignAsEval("completeFunc", "requestComplete"),
            this.assignAsData("progressBar", "requestProgressBar"),
            this.assignAsData("message", "requestMessage"),
            this.assignAsData("confirm", "requestConfirm"),
            this.assignAsData("redirect", "requestRedirect"),
            this.assignAsData("loading", "requestLoading"),
            this.assignAsData("form", "requestForm"),
            this.assignAsData("url", "requestUrl"),
            this.assignAsData("bulk", "requestBulk", {
                emptyAsTrue: !0
            }),
            this.assignAsData("files", "requestFiles", {
                emptyAsTrue: !0
            }),
            this.assignAsData("flash", "requestFlash", {
                emptyAsTrue: !0
            }),
            this.assignAsData("download", "requestDownload", {
                emptyAsTrue: !0
            }),
            this.assignAsData("update", "requestUpdate", {
                parseJson: !0
            }),
            this.assignAsData("query", "requestQuery", {
                emptyAsTrue: !0,
                parseJson: !0
            }),
            this.assignAsData("browserTarget", "browserTarget"),
            this.assignAsData("browserValidate", "browserValidate", {
                emptyAsTrue: !0
            }),
            this.assignAsData("browserRedirectBack", "browserRedirectBack", {
                emptyAsTrue: !0
            }),
            this.assignAsMetaData("update", "ajaxRequestUpdate", {
                parseJson: !0,
                mergeValue: !0
            }),
            this.assignRequestData(),
            n || (n = this.getHandlerName()),
            me.sendElement(this.element, n, this.options)) : me.send(n, this.options)
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "findElement",
            value: function(e) {
                if (!e || e === document)
                    return null;
                if (e.matches("[data-request]"))
                    return e;
                var t = e.closest("[data-request]");
                return t || e
            }
        }, {
            key: "getHandlerName",
            value: function() {
                return this.element.dataset.dataRequest ? this.element.dataset.dataRequest : this.element.getAttribute("data-request")
            }
        }, {
            key: "assignAsEval",
            value: function(e, t) {
                var n;
                void 0 === this.options[e] && (n = this.element.dataset[t] ? this.element.dataset[t] : this.element.getAttribute("data-" + Se(t))) && (this.options[e] = function(e, t) {
                    return new Function("data",n).apply(e, [t])
                }
                )
            }
        }, {
            key: "assignAsData",
            value: function(e, t) {
                var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, o = r.parseJson, i = void 0 !== o && o, a = r.emptyAsTrue, s = void 0 !== a && a;
                void 0 === this.options[e] && null !== (n = this.element.dataset[t] ? this.element.dataset[t] : this.element.getAttribute("data-" + Se(t))) && (n = this.castAttrToOption(n, s),
                i && "string" == typeof n && (n = we.paramToObj("data-" + Se(t), n)),
                this.options[e] = n)
            }
        }, {
            key: "assignAsMetaData",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}
                  , r = n.mergeValue
                  , o = void 0 === r || r
                  , i = n.parseJson
                  , a = void 0 !== i && i
                  , s = n.emptyAsTrue
                  , l = void 0 !== s && s
                  , u = document.documentElement.querySelector('head meta[name="' + Se(t) + '"]');
                if (u) {
                    var c = u.getAttribute("content");
                    c = a ? we.paramToObj(Se(t), c) : this.castAttrToOption(c, l),
                    this.options[e] = o ? Ae(Ae({}, this.options[e] || {}), c) : c
                }
            }
        }, {
            key: "castAttrToOption",
            value: function(e, t) {
                return !(!t || "" !== e) || "true" === e || "1" === e || "false" !== e && "0" !== e && e
            }
        }, {
            key: "assignRequestData",
            value: function() {
                var e = {};
                this.options.data && Object.assign(e, this.options.data);
                var t = this.ogElement.getAttribute("data-request-data");
                t && Object.assign(e, we.paramToObj("data-request-data", t)),
                function(e, t) {
                    var n = [];
                    if (!e.parentNode)
                        return n;
                    for (var r = e.parentNode.closest(t); r; )
                        n.push(r),
                        r = r.parentNode.closest(t);
                    return n
                }(this.ogElement, "[data-request-data]").reverse().forEach((function(t) {
                    Object.assign(e, we.paramToObj("data-request-data", t.getAttribute("data-request-data")))
                }
                )),
                this.options.data = e
            }
        }],
        r = [{
            key: "fromElement",
            value: function(t, n, r) {
                return "string" == typeof t && (t = document.querySelector(t)),
                new e(t,n,r)
            }
        }],
        n && je(t.prototype, n),
        r && je(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Se(e) {
        return e.replace(/[A-Z]/g, (function(e) {
            return "-".concat(e.toLowerCase())
        }
        ))
    }
    function Te(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Ce = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.started = !1,
            this.documentVisible = !0
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "start",
            value: function() {
                var e = this;
                this.started || (window.onbeforeunload = this.documentOnBeforeUnload,
                addEventListener("DOMContentLoaded", (function() {
                    return e.render()
                }
                )),
                addEventListener("page:updated", (function() {
                    return e.render()
                }
                )),
                addEventListener("ajax:update-complete", (function() {
                    return e.render()
                }
                )),
                addEventListener("visibilitychange", (function() {
                    return e.documentOnVisibilityChange()
                }
                )),
                X.on(document, "submit", "[data-request]", this.documentOnSubmit),
                X.on(document, "input", "input[data-request][data-track-input]", this.documentOnKeyup),
                X.on(document, "change", "select[data-request], input[type=radio][data-request], input[type=checkbox][data-request], input[type=file][data-request]", this.documentOnChange),
                X.on(document, "keydown", "input[type=text][data-request], input[type=submit][data-request], input[type=password][data-request]", this.documentOnKeydown),
                X.on(document, "click", "a[data-request], button[data-request], input[type=button][data-request], input[type=submit][data-request]", this.documentOnClick),
                this.started = !0)
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (this.started = !1)
            }
        }, {
            key: "render",
            value: function(e) {
                X.dispatch("before-render"),
                X.dispatch("render"),
                dispatchEvent(new Event("resize")),
                this.documentOnRender(e)
            }
        }, {
            key: "documentOnVisibilityChange",
            value: function(e) {
                this.documentVisible = !document.hidden,
                this.documentVisible && this.documentOnRender()
            }
        }, {
            key: "documentOnRender",
            value: function(e) {
                this.documentVisible && document.querySelectorAll("[data-auto-submit]").forEach((function(e) {
                    var t = e.dataset.autoSubmit || 0;
                    e.removeAttribute("data-auto-submit"),
                    setTimeout((function() {
                        xe.fromElement(e)
                    }
                    ), t)
                }
                ))
            }
        }, {
            key: "documentOnSubmit",
            value: function(e) {
                e.preventDefault(),
                xe.fromElement(e.target)
            }
        }, {
            key: "documentOnClick",
            value: function(e) {
                e.preventDefault(),
                xe.fromElement(e.target)
            }
        }, {
            key: "documentOnChange",
            value: function(e) {
                xe.fromElement(e.target)
            }
        }, {
            key: "documentOnKeyup",
            value: function(e) {
                var t = e.target
                  , n = t.dataset.ocLastValue;
                if (-1 !== ["email", "number", "password", "search", "text"].indexOf(t.type) && (void 0 === n || n != t.value)) {
                    t.dataset.ocLastValue = t.value,
                    void 0 !== this.dataTrackInputTimer && clearTimeout(this.dataTrackInputTimer);
                    var r = t.getAttribute("data-track-input");
                    r || (r = 300);
                    var o = this;
                    this.dataTrackInputTimer = setTimeout((function() {
                        o.lastDataTrackInputRequest && o.lastDataTrackInputRequest.abort(),
                        o.lastDataTrackInputRequest = xe.fromElement(t)
                    }
                    ), r)
                }
            }
        }, {
            key: "documentOnKeydown",
            value: function(e) {
                "Enter" === e.key && (e.preventDefault(),
                void 0 !== this.dataTrackInputTimer && clearTimeout(this.dataTrackInputTimer),
                xe.fromElement(e.target))
            }
        }, {
            key: "documentOnBeforeUnload",
            value: function(e) {
                window.ocUnloading = !0
            }
        }]) && Te(t.prototype, n),
        r && Te(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function qe(e) {
        return qe = "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
        }
        ,
        qe(e)
    }
    function Be(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Pe = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "bind",
            value: function() {
                this.bindRequestFunc(),
                this.bindRenderFunc(),
                this.bindjQueryEvents()
            }
        }, {
            key: "bindRequestFunc",
            value: function() {
                var e = $.fn.request;
                $.fn.request = function(e, t) {
                    var n = "object" === qe(t) ? t : {};
                    return new xe(this.get(0),e,n)
                }
                ,
                $.fn.request.Constructor = xe,
                $.request = function(e, t) {
                    return $(document).request(e, t)
                }
                ,
                $.fn.request.noConflict = function() {
                    return $.fn.request = e,
                    this
                }
            }
        }, {
            key: "bindRenderFunc",
            value: function() {
                $.fn.render = function(e) {
                    $(document).on("render", e)
                }
            }
        }, {
            key: "bindjQueryEvents",
            value: function() {
                this.migratejQueryEvent(document, "ajax:setup", "ajaxSetup", ["context"]),
                this.migratejQueryEvent(document, "ajax:promise", "ajaxPromise", ["context"]),
                this.migratejQueryEvent(document, "ajax:fail", "ajaxFail", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:done", "ajaxDone", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:always", "ajaxAlways", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-redirect", "ajaxRedirect"),
                this.migratejQueryEvent(document, "ajax:update", "ajaxUpdate", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-replace", "ajaxBeforeReplace"),
                this.migratejQueryEvent(document, "ajax:before-request", "oc.beforeRequest", ["context"]),
                this.migratejQueryEvent(document, "ajax:before-update", "ajaxBeforeUpdate", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-success", "ajaxSuccess", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-complete", "ajaxComplete", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:request-error", "ajaxError", ["context", "message", "responseCode", "xhr"]),
                this.migratejQueryEvent(document, "ajax:before-validate", "ajaxValidation", ["context", "message", "fields"]),
                this.migratejQueryEvent(window, "ajax:before-send", "ajaxBeforeSend", ["context"]),
                this.migratejQueryEvent(window, "ajax:update-complete", "ajaxUpdateComplete", ["context", "data", "responseCode", "xhr"]),
                this.migratejQueryEvent(window, "ajax:invalid-field", "ajaxInvalidField", ["element", "fieldName", "errorMsg", "isFirst"]),
                this.migratejQueryEvent(window, "ajax:confirm-message", "ajaxConfirmMessage", ["message", "promise"]),
                this.migratejQueryEvent(window, "ajax:error-message", "ajaxErrorMessage", ["message"]),
                this.migratejQueryAttachData(document, "ajax:setup", "a[data-request], button[data-request], form[data-request], a[data-handler], button[data-handler]")
            }
        }, {
            key: "migratejQueryEvent",
            value: function(e, t, n) {
                var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : []
                  , o = this;
                $(e).on(t, (function(e) {
                    o.triggerjQueryEvent(e.originalEvent, n, r)
                }
                ))
            }
        }, {
            key: "triggerjQueryEvent",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : []
                  , r = $.Event(t)
                  , o = this.buildDetailArgs(e, n);
                $(e.target).trigger(r, o),
                r.isDefaultPrevented() && e.preventDefault()
            }
        }, {
            key: "buildDetailArgs",
            value: function(e, t) {
                var n = [];
                return t.forEach((function(t) {
                    n.push(e.detail[t])
                }
                )),
                n
            }
        }, {
            key: "migratejQueryAttachData",
            value: function(e, t, n) {
                $(e).on(t, n, (function(e) {
                    var t = $(this).data("request-data");
                    if (t) {
                        var n = e.detail.context.options;
                        t.constructor === {}.constructor ? Object.assign(n.data, t) : "string" == typeof t && Object.assign(n.data, we.paramToObj("request-data", t))
                    }
                }
                ))
            }
        }],
        n && Be(t.prototype, n),
        r && Be(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }()
      , Re = new Ce;
    const Fe = {
        controller: Re,
        parseJSON: we.parseJSON,
        serializeJSON: S.serializeJSON,
        requestElement: xe.fromElement,
        start: function() {
            Re.start(),
            window.jQuery && (new Pe).bind()
        },
        stop: function() {
            Re.stop()
        }
    };
    function Le(e) {
        return Le = "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
        }
        ,
        Le(e)
    }
    function Me(e) {
        return function(e) {
            if (Array.isArray(e))
                return Ie(e)
        }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                return Array.from(e)
        }(e) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return Ie(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return Ie(e, t)
        }(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function Ie(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function De(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxFramework || (window.oc.AjaxFramework = Fe,
    window.oc.request = Fe.requestElement,
    window.oc.parseJSON = Fe.parseJSON,
    window.oc.serializeJSON = Fe.serializeJSON,
    window.oc.Events = X,
    window.oc.waitFor = function(e, t) {
        return new Promise((function(n, r) {
            var o = function() {
                e() && (clearInterval(i),
                n())
            }
              , i = setInterval(o, 100);
            o(),
            t && setTimeout((function() {
                clearInterval(i),
                r()
            }
            ), t)
        }
        ))
    }
    ,
    window.oc.pageReady = ge,
    window.oc.visit = function(e) {
        return window.location.assign(e)
    }
    ,
    "function" == typeof define && e.amdO || "object" == ("undefined" == typeof exports ? "undefined" : Le(exports)) || Fe.start());
    var Ne, Ue = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "submit",
            value: function(e) {
                var t = e.closest("form");
                t && (t.querySelectorAll("[data-validate-for]").forEach((function(e) {
                    e.classList.remove("oc-visible")
                }
                )),
                t.querySelectorAll("[data-validate-error]").forEach((function(e) {
                    e.classList.remove("oc-visible")
                }
                )))
            }
        }, {
            key: "validate",
            value: function(e, t, n, r) {
                var o = e.closest("form")
                  , i = [];
                if (o) {
                    for (var a in t) {
                        var s = t[a];
                        i = [].concat(Me(i), Me(s));
                        var l = o.querySelector('[data-validate-for="' + a + '"]');
                        l && (l.innerHTML && !l.dataset.emptyMode || (l.dataset.emptyMode = !0,
                        l.innerHTML = s.join(", ")),
                        l.classList.add("oc-visible"))
                    }
                    var u = o.querySelector("[data-validate-error]");
                    if (u) {
                        u.classList.add("oc-visible");
                        var c = u.querySelectorAll("[data-message]");
                        if (c.length > 0) {
                            var f = c[0];
                            i.forEach((function(e) {
                                var t = f.cloneNode(!0);
                                t.innerHTML = e,
                                f.parentNode.insertBefore(t, f.nextSibling)
                            }
                            )),
                            c.forEach((function(e) {
                                e.remove()
                            }
                            ))
                        } else
                            u.innerHTML = n
                    }
                    r || X.one(o, "ajax:request-error", (function(e) {
                        e.preventDefault()
                    }
                    ))
                }
            }
        }]) && De(t.prototype, n),
        r && De(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Ve(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Je, Qe, _e, Ke, He = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.stylesheetElement = this.createStylesheetElement()
        }
        var t, n, r;
        return t = e,
        r = [{
            key: "defaultCSS",
            get: function() {
                return B(Ne || (e = ["\n        .oc-attach-loader:after {\n            content: '';\n            display: inline-block;\n            vertical-align: middle;\n            margin-left: .4em;\n            height: 1em;\n            width: 1em;\n            animation: oc-rotate-loader 0.8s infinite linear;\n            border: .2em solid currentColor;\n            border-right-color: transparent;\n            border-radius: 50%;\n            opacity: .5;\n        }\n        @keyframes oc-rotate-loader {\n            0% { transform: rotate(0deg); }\n            100%  { transform: rotate(360deg); }\n        }\n    "],
                t || (t = e.slice(0)),
                Ne = Object.freeze(Object.defineProperties(e, {
                    raw: {
                        value: Object.freeze(t)
                    }
                }))));
                var e, t
            }
        }, {
            key: "attachLoader",
            get: function() {
                return {
                    show: function(t) {
                        (new e).show(Xe(t))
                    },
                    hide: function(t) {
                        (new e).hide(Xe(t))
                    },
                    hideAll: function() {
                        (new e).hideAll()
                    }
                }
            }
        }],
        (n = [{
            key: "show",
            value: function(e) {
                if (this.installStylesheetElement(),
                $e(e)) {
                    var t = document.createElement("span");
                    t.className = "oc-attach-loader is-inline",
                    e.parentNode.insertBefore(t, e.nextSibling)
                } else
                    e.classList.add("oc-attach-loader"),
                    e.disabled = !0
            }
        }, {
            key: "hide",
            value: function(e) {
                $e(e) ? e.nextElementSibling && e.nextElementSibling.classList.contains("oc-attach-loader") && e.nextElementSibling.remove() : (e.classList.remove("oc-attach-loader"),
                e.disabled = !1)
            }
        }, {
            key: "hideAll",
            value: function() {
                document.querySelectorAll(".oc-attach-loader.is-inline").forEach((function(e) {
                    e.remove()
                }
                )),
                document.querySelectorAll(".oc-attach-loader").forEach((function(e) {
                    e.classList.remove("oc-attach-loader"),
                    e.disabled = !1
                }
                ))
            }
        }, {
            key: "showForm",
            value: function(e) {
                if (void 0 !== e.dataset.attachLoading && this.show(e),
                e.matches("form")) {
                    var t = this;
                    e.querySelectorAll("[data-attach-loading][type=submit]").forEach((function(e) {
                        $e(e) || t.show(e)
                    }
                    ))
                }
            }
        }, {
            key: "hideForm",
            value: function(e) {
                if (void 0 !== e.dataset.attachLoading && this.hide(e),
                e.matches("form")) {
                    var t = this;
                    e.querySelectorAll("[data-attach-loading]").forEach((function(e) {
                        $e(e) || t.hide(e)
                    }
                    ))
                }
            }
        }, {
            key: "installStylesheetElement",
            value: function() {
                e.stylesheetReady || (document.head.insertBefore(this.stylesheetElement, document.head.firstChild),
                e.stylesheetReady = !0)
            }
        }, {
            key: "createStylesheetElement",
            value: function() {
                var t = document.createElement("style");
                return t.textContent = e.defaultCSS,
                t
            }
        }]) && Ve(t.prototype, n),
        r && Ve(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function $e(e) {
        return ["input", "select", "textarea"].includes((e.tagName || "").toLowerCase())
    }
    function Xe(e) {
        if ("string" == typeof e && (e = document.querySelector(e)),
        !e)
            throw new Error("Invalid element for attach loader.");
        return e
    }
    function ze(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function We(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? ze(Object(n), !0).forEach((function(t) {
                Ze(e, t, n[t])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ze(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }
            ))
        }
        return e
    }
    function Ge(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    function Ze(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    _e = !1,
    (Qe = "stylesheetReady")in (Je = He) ? Object.defineProperty(Je, Qe, {
        value: _e,
        enumerable: !0,
        configurable: !0,
        writable: !0
    }) : Je[Qe] = _e;
    var Ye = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.queue = [],
            this.lastUniqueId = 0,
            this.displayedMessage = null,
            this.stylesheetElement = this.createStylesheetElement()
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "runQueue",
            value: function() {
                if (!this.displayedMessage) {
                    var e = this.queue.shift();
                    void 0 !== e && this.buildFlashMessage(e)
                }
            }
        }, {
            key: "clearQueue",
            value: function() {
                this.queue = [],
                this.displayedMessage && this.displayedMessage.uniqueId && this.hide(this.displayedMessage.uniqueId, !0)
            }
        }, {
            key: "removeFromQueue",
            value: function(e) {
                for (var t = 0; t < this.queue.length; t++)
                    if (this.queue[t].uniqueId == e)
                        return void this.queue.splice(t, 1)
            }
        }, {
            key: "show",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                this.installStylesheetElement();
                var t = e.message
                  , n = void 0 === t ? "" : t
                  , r = e.type
                  , o = void 0 === r ? "info" : r
                  , i = e.replace
                  , a = void 0 === i ? null : i
                  , s = e.hideAll
                  , l = void 0 !== s && s;
                if (e.text && (n = e.text),
                e.class && (o = e.class),
                (l || "error" === o || "loading" === o) && this.clearQueue(),
                a && (this.displayedMessage && a === this.displayedMessage.uniqueId ? this.hide(a, !0) : this.removeFromQueue(a)),
                n) {
                    var u = this.makeUniqueId();
                    return this.queue.push(We(We({}, e), {}, {
                        uniqueId: u
                    })),
                    this.runQueue(),
                    u
                }
            }
        }, {
            key: "makeUniqueId",
            value: function() {
                return ++this.lastUniqueId
            }
        }, {
            key: "buildFlashMessage",
            value: function() {
                var e = this
                  , t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                  , n = t.message
                  , r = void 0 === n ? "" : n
                  , o = t.type
                  , i = void 0 === o ? "info" : o
                  , a = t.target
                  , s = void 0 === a ? null : a
                  , l = t.interval
                  , u = void 0 === l ? 3 : l;
                t.text && (r = t.text),
                t.class && (i = t.class),
                s && s.removeAttribute("data-control");
                var c = this.createFlashElement(r, i);
                this.createMessagesElement().appendChild(c),
                this.displayedMessage = {
                    uniqueId: t.uniqueId,
                    element: c,
                    options: t
                };
                var f, h = function t(n) {
                    clearInterval(f),
                    c.removeEventListener("click", d),
                    c.removeEventListener("extras:flash-remove", t),
                    c.querySelector(".flash-close").removeEventListener("click", t),
                    c.classList.remove("flash-show"),
                    n && n.detail.isReplace ? (c.remove(),
                    e.displayedMessage = null,
                    e.runQueue()) : setTimeout((function() {
                        c.remove(),
                        e.displayedMessage = null,
                        e.runQueue()
                    }
                    ), 600)
                }, d = function() {
                    clearInterval(f)
                };
                c.addEventListener("click", d, {
                    once: !0
                }),
                c.addEventListener("extras:flash-remove", h, {
                    once: !0
                }),
                c.querySelector(".flash-close").addEventListener("click", h, {
                    once: !0
                }),
                u && 0 !== u && (f = setTimeout(h, 1e3 * u)),
                setTimeout((function() {
                    c.classList.add("flash-show")
                }
                ), 20)
            }
        }, {
            key: "render",
            value: function() {
                var e = this;
                document.querySelectorAll("[data-control=flash-message]").forEach((function(t) {
                    e.show(We(We({}, t.dataset), {}, {
                        target: t,
                        message: t.innerHTML
                    })),
                    t.remove()
                }
                ))
            }
        }, {
            key: "hide",
            value: function(e, t) {
                this.displayedMessage && e === this.displayedMessage.uniqueId && this.displayedMessage.element.dispatchEvent(new CustomEvent("extras:flash-remove",{
                    detail: {
                        isReplace: t
                    }
                }))
            }
        }, {
            key: "hideAll",
            value: function() {
                this.clearQueue(),
                this.displayedMessage = null,
                document.querySelectorAll(".oc-flash-message, [data-control=flash-message]").forEach((function(e) {
                    e.remove()
                }
                ))
            }
        }, {
            key: "createFlashElement",
            value: function(e, t) {
                var n = document.createElement("div")
                  , r = "loading" === t ? '<span class="flash-loader"></span>' : "";
                return n.className = "oc-flash-message " + t,
                n.innerHTML = r + '<span class="flash-message">' + e + '</span><a class="flash-close"></a>',
                n
            }
        }, {
            key: "installStylesheetElement",
            value: function() {
                e.stylesheetReady || (document.head.insertBefore(this.stylesheetElement, document.head.firstChild),
                e.stylesheetReady = !0)
            }
        }, {
            key: "createStylesheetElement",
            value: function() {
                var t = document.createElement("style");
                return t.textContent = e.defaultCSS,
                t
            }
        }, {
            key: "createMessagesElement",
            value: function() {
                var e = document.querySelector(".oc-flash-messages");
                if (e)
                    return e;
                var t = document.createElement("div");
                return t.className = "oc-flash-messages",
                document.body.appendChild(t),
                t
            }
        }],
        r = [{
            key: "defaultCSS",
            get: function() {
                return B(Ke || (e = ["\n        .oc-flash-message {\n            display: flex;\n            position: fixed;\n            z-index: 10300;\n            width: 500px;\n            left: 50%;\n            top: 50px;\n            margin-left: -250px;\n            color: #fff;\n            font-size: 1rem;\n            padding: 10px 15px;\n            border-radius: 5px;\n            opacity: 0;\n            transition: all 0.5s, width 0s;\n            transform: scale(0.9);\n        }\n        @media (max-width: 768px) {\n            .oc-flash-message {\n                left: 1rem;\n                right: 1rem;\n                top: 1rem;\n                margin-left: 0;\n                width: auto;\n            }\n        }\n        .oc-flash-message.flash-show {\n            opacity: 1;\n            transform: scale(1);\n        }\n        .oc-flash-message.loading {\n            transition: opacity 0.2s;\n            transform: scale(1);\n        }\n        .oc-flash-message.success {\n            background: #86cb43;\n        }\n        .oc-flash-message.error {\n            background: #cc3300;\n        }\n        .oc-flash-message.warning {\n            background: #f0ad4e;\n        }\n        .oc-flash-message.info, .oc-flash-message.loading {\n            background: #5fb6f5;\n        }\n        .oc-flash-message span.flash-message {\n            flex-grow: 1;\n        }\n        .oc-flash-message a.flash-close {\n            box-sizing: content-box;\n            width: 1em;\n            height: 1em;\n            padding: .25em .25em;\n            background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23FFF'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n            border: 0;\n            border-radius: .25rem;\n            opacity: .5;\n            text-decoration: none;\n            cursor: pointer;\n        }\n        .oc-flash-message a.flash-close:hover,\n        .oc-flash-message a.flash-close:focus {\n            opacity: 1;\n        }\n        .oc-flash-message.loading a.flash-close {\n            display: none;\n        }\n        .oc-flash-message span.flash-loader {\n            margin-right: 1em;\n        }\n        .oc-flash-message span.flash-loader:after {\n            position: relative;\n            top: 2px;\n            content: '';\n            display: inline-block;\n            height: 1.2em;\n            width: 1.2em;\n            animation: oc-flash-loader 0.8s infinite linear;\n            border: .2em solid currentColor;\n            border-right-color: transparent;\n            border-radius: 50%;\n            opacity: .5;\n        }\n        html[data-turbo-preview] .oc-flash-message {\n            opacity: 0;\n        }\n        @keyframes oc-flash-loader {\n            0% { transform: rotate(0deg); }\n            100%  { transform: rotate(360deg); }\n        }\n    "],
                t || (t = e.slice(0)),
                Ke = Object.freeze(Object.defineProperties(e, {
                    raw: {
                        value: Object.freeze(t)
                    }
                }))));
                var e, t
            }
        }, {
            key: "flashMsg",
            value: function(e) {
                return et().show(e)
            }
        }],
        n && Ge(t.prototype, n),
        r && Ge(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function et() {
        return Ye.instance || (Ye.instance = new Ye),
        Ye.instance
    }
    function tt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    Ze(Ye, "instance", null),
    Ze(Ye, "stylesheetReady", !1);
    var nt = function() {
        function e() {
            var t = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.started = !1,
            this.enableProgressBar = function(e) {
                var t = e.detail.context.options;
                null === t.progressBar && (t.progressBar = !0)
            }
            ,
            this.showAttachLoader = function(e) {
                t.attachLoader.showForm(e.target)
            }
            ,
            this.hideAttachLoader = function(e) {
                t.attachLoader.hideForm(e.target)
            }
            ,
            this.hideAllAttachLoaders = function(e) {
                t.attachLoader.hideAll()
            }
            ,
            this.validatorSubmit = function(e) {
                t.validator.submit(e.target)
            }
            ,
            this.validatorValidate = function(e) {
                t.validator.validate(e.target, e.detail.fields, e.detail.message, rt(e.detail.context.options.flash, "validate"))
            }
            ,
            this.flashMessageBind = function(e) {
                var n = e.detail.context.options;
                n.flash && (n.handleErrorMessage = function(e) {
                    (e && rt(n.flash, "error") || rt(n.flash, "validate")) && t.flashMessage.show({
                        message: e,
                        type: "error"
                    })
                }
                ,
                n.handleFlashMessage = function(e, r) {
                    e && rt(n.flash, r) && t.flashMessage.show({
                        message: e,
                        type: r
                    })
                }
                );
                var r = e.detail;
                n.handleProgressMessage = function(e, n) {
                    n ? (t.flashMessage.show(r.progressMessageId ? {
                        replace: r.progressMessageId
                    } : {
                        hideAll: !0
                    }),
                    r = null) : r.progressMessageId = t.flashMessage.show({
                        message: e,
                        type: "loading",
                        interval: 10
                    })
                }
            }
            ,
            this.flashMessageRender = function(e) {
                t.flashMessage.render()
            }
            ,
            this.hideAllFlashMessages = function(e) {
                t.flashMessage.hideAll()
            }
            ,
            this.handleBrowserRedirect = function(e) {
                if (!e.defaultPrevented) {
                    var t = h();
                    t && (e.preventDefault(),
                    oc.useTurbo && oc.useTurbo() ? oc.visit(t) : location.assign(t))
                }
            }
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "start",
            value: function() {
                this.started || (addEventListener("ajax:setup", this.enableProgressBar),
                this.attachLoader = new He,
                X.on(document, "ajax:promise", "form, [data-attach-loading]", this.showAttachLoader),
                X.on(document, "ajax:fail", "form, [data-attach-loading]", this.hideAttachLoader),
                X.on(document, "ajax:done", "form, [data-attach-loading]", this.hideAttachLoader),
                addEventListener("page:before-cache", this.hideAllAttachLoaders),
                this.validator = new Ue,
                X.on(document, "ajax:before-validate", "[data-request-validate]", this.validatorValidate),
                X.on(document, "ajax:promise", "[data-request-validate]", this.validatorSubmit),
                this.flashMessage = new Ye,
                addEventListener("render", this.flashMessageRender),
                addEventListener("ajax:setup", this.flashMessageBind),
                addEventListener("page:before-cache", this.hideAllFlashMessages),
                X.on(document, "click", "[data-browser-redirect-back]", this.handleBrowserRedirect),
                this.started = !0)
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (removeEventListener("ajax:setup", this.enableProgressBar),
                this.attachLoader = null,
                X.off(document, "ajax:promise", "form, [data-attach-loading]", this.showAttachLoader),
                X.off(document, "ajax:fail", "form, [data-attach-loading]", this.hideAttachLoader),
                X.off(document, "ajax:done", "form, [data-attach-loading]", this.hideAttachLoader),
                removeEventListener("page:before-cache", this.hideAllAttachLoaders),
                this.validator = null,
                X.off(document, "ajax:before-validate", "[data-request-validate]", this.validatorValidate),
                X.off(document, "ajax:promise", "[data-request-validate]", this.validatorSubmit),
                this.flashMessage = null,
                removeEventListener("render", this.flashMessageRender),
                removeEventListener("ajax:setup", this.flashMessageBind),
                removeEventListener("page:before-cache", this.hideAllFlashMessages),
                X.off(document, "click", "[data-browser-redirect-back]", this.handleBrowserRedirect),
                this.started = !1)
            }
        }]) && tt(t.prototype, n),
        r && tt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function rt(e, t) {
        if (!0 === e && "validate" !== t)
            return !0;
        if ("string" != typeof e)
            return !1;
        if ("*" === e)
            return !0;
        var n = !1;
        return e.split(",").forEach((function(e) {
            e.trim() === t && (n = !0)
        }
        )),
        n
    }
    function ot(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var it = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "bind",
            value: function() {
                void 0 === $.oc && ($.oc = {}),
                $.oc.flashMsg = window.oc.flashMsg,
                $.oc.stripeLoadIndicator = window.oc.progressBar
            }
        }]) && ot(t.prototype, n),
        r && ot(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }()
      , at = new nt;
    const st = {
        controller: at,
        flashMsg: Ye.flashMsg,
        progressBar: fe.progressBar,
        attachLoader: He.attachLoader,
        start: function() {
            at.start(),
            window.jQuery && (new it).bind()
        },
        stop: function() {
            at.stop()
        }
    };
    function lt(e) {
        return lt = "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
        }
        ,
        lt(e)
    }
    function ut(e) {
        return function(e) {
            if (Array.isArray(e))
                return ct(e)
        }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                return Array.from(e)
        }(e) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return ct(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return ct(e, t)
        }(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function ct(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function ft(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var r = Object.getOwnPropertySymbols(e);
            t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }
            ))),
            n.push.apply(n, r)
        }
        return n
    }
    function ht(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    function dt(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n,
        e
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxExtras || (window.oc.AjaxExtras = st,
    window.oc.flashMsg = st.flashMsg,
    window.oc.progressBar = st.progressBar,
    window.oc.attachLoader = st.attachLoader,
    "function" == typeof define && e.amdO || "object" == ("undefined" == typeof exports ? "undefined" : lt(exports)) || st.start());
    var pt = function() {
        function e(t) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.context = t,
            this.config = function(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var n = null != arguments[t] ? arguments[t] : {};
                    t % 2 ? ft(Object(n), !0).forEach((function(t) {
                        dt(e, t, n[t])
                    }
                    )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ft(Object(n)).forEach((function(t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
                    }
                    ))
                }
                return e
            }({}, t.scope.element.dataset || {})
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "application",
            get: function() {
                return this.context.application
            }
        }, {
            key: "scope",
            get: function() {
                return this.context.scope
            }
        }, {
            key: "element",
            get: function() {
                return this.scope.element
            }
        }, {
            key: "identifier",
            get: function() {
                return this.scope.identifier
            }
        }, {
            key: "init",
            value: function() {}
        }, {
            key: "connect",
            value: function() {}
        }, {
            key: "disconnect",
            value: function() {}
        }, {
            key: "initBefore",
            value: function() {
                this.proxiedEvents = {},
                this.proxiedMethods = {}
            }
        }, {
            key: "initAfter",
            value: function() {}
        }, {
            key: "connectBefore",
            value: function() {}
        }, {
            key: "connectAfter",
            value: function() {}
        }, {
            key: "disconnectBefore",
            value: function() {}
        }, {
            key: "disconnectAfter",
            value: function() {
                for (var e in this.proxiedEvents)
                    this.forget.apply(this, ut(this.proxiedEvents[e])),
                    delete this.proxiedEvents[e];
                for (var t in this.proxiedMethods)
                    this.proxiedMethods[t] = void 0
            }
        }, {
            key: "listen",
            value: function(t, n, r, o) {
                "string" == typeof n ? oc.Events.on(this.element, t, n, this.proxy(r), o) : n instanceof Element ? oc.Events.on(n, t, this.proxy(r), o) : oc.Events.on(this.element, t, this.proxy(n), r),
                e.proxyCounter++,
                this.proxiedEvents[e.proxyCounter] = arguments
            }
        }, {
            key: "forget",
            value: function(e, t, n, r) {
                "string" == typeof t ? oc.Events.off(this.element, e, t, this.proxy(n), r) : t instanceof Element ? oc.Events.off(t, e, this.proxy(n), r) : oc.Events.off(this.element, e, this.proxy(t), n);
                var o = function(e, t) {
                    if (e.length === t.length)
                        for (var n = 0; n < e.length; n++)
                            if (e[n] === t[n])
                                return !0;
                    return !1
                };
                for (var i in this.proxiedEvents)
                    o(arguments, this.proxiedEvents[i]) && delete this.proxiedEvents[i]
            }
        }, {
            key: "dispatch",
            value: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
                  , n = t.target
                  , r = void 0 === n ? this.element : n
                  , o = t.detail
                  , i = void 0 === o ? {} : o
                  , a = t.prefix
                  , s = void 0 === a ? this.identifier : a
                  , l = t.bubbles
                  , u = void 0 === l || l
                  , c = t.cancelable
                  , f = void 0 === c || c
                  , h = s ? "".concat(s, ":").concat(e) : e
                  , d = new CustomEvent(h,{
                    detail: i,
                    bubbles: u,
                    cancelable: f
                });
                return r.dispatchEvent(d),
                d
            }
        }, {
            key: "proxy",
            value: function(t) {
                return void 0 === t.ocProxyId && (e.proxyCounter++,
                t.ocProxyId = e.proxyCounter),
                void 0 !== this.proxiedMethods[t.ocProxyId] || (this.proxiedMethods[t.ocProxyId] = t.bind(this)),
                this.proxiedMethods[t.ocProxyId]
            }
        }],
        r = [{
            key: "shouldLoad",
            get: function() {
                return !0
            }
        }, {
            key: "afterLoad",
            value: function(e, t) {}
        }],
        n && ht(t.prototype, n),
        r && ht(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function yt(e, t) {
        var n = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!n) {
            if (Array.isArray(e) || (n = function(e, t) {
                if (!e)
                    return;
                if ("string" == typeof e)
                    return vt(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n)
                    return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                    return vt(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var r = 0
                  , o = function() {};
                return {
                    s: o,
                    n: function() {
                        return r >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[r++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: o
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var i, a = !0, s = !1;
        return {
            s: function() {
                n = n.call(e)
            },
            n: function() {
                var e = n.next();
                return a = e.done,
                e
            },
            e: function(e) {
                s = !0,
                i = e
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw i
                }
            }
        }
    }
    function vt(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function mt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    dt(pt, "proxyCounter", 0);
    var gt = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.eventTarget = t,
            this.eventName = n,
            this.eventOptions = r,
            this.unorderedBindings = new Set
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "connect",
            value: function() {
                this.eventTarget.addEventListener(this.eventName, this, this.eventOptions)
            }
        }, {
            key: "disconnect",
            value: function() {
                this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions)
            }
        }, {
            key: "bindingConnected",
            value: function(e) {
                this.unorderedBindings.add(e)
            }
        }, {
            key: "bindingDisconnected",
            value: function(e) {
                this.unorderedBindings.delete(e)
            }
        }, {
            key: "handleEvent",
            value: function(e) {
                var t, n = function(e) {
                    if ("immediatePropagationStopped"in e)
                        return e;
                    var t = e.stopImmediatePropagation;
                    return Object.assign(e, {
                        immediatePropagationStopped: !1,
                        stopImmediatePropagation: function() {
                            this.immediatePropagationStopped = !0,
                            t.call(this)
                        }
                    })
                }(e), r = yt(this.bindings);
                try {
                    for (r.s(); !(t = r.n()).done; ) {
                        var o = t.value;
                        if (n.immediatePropagationStopped)
                            break;
                        o.handleEvent(n)
                    }
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
            }
        }, {
            key: "hasBindings",
            value: function() {
                return this.unorderedBindings.size > 0
            }
        }, {
            key: "bindings",
            get: function() {
                return Array.from(this.unorderedBindings).sort((function(e, t) {
                    var n = e.index
                      , r = t.index;
                    return n < r ? -1 : n > r ? 1 : 0
                }
                ))
            }
        }]) && mt(t.prototype, n),
        r && mt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function bt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var kt = function() {
        function e(t) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.application = t,
            this.eventListenerMaps = new Map,
            this.started = !1
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "start",
            value: function() {
                this.started || (this.started = !0,
                this.eventListeners.forEach((function(e) {
                    return e.connect()
                }
                )))
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (this.started = !1,
                this.eventListeners.forEach((function(e) {
                    return e.disconnect()
                }
                )))
            }
        }, {
            key: "eventListeners",
            get: function() {
                return Array.from(this.eventListenerMaps.values()).reduce((function(e, t) {
                    return e.concat(Array.from(t.values()))
                }
                ), [])
            }
        }, {
            key: "bindingConnected",
            value: function(e) {
                this.fetchEventListenerForBinding(e).bindingConnected(e)
            }
        }, {
            key: "bindingDisconnected",
            value: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                this.fetchEventListenerForBinding(e).bindingDisconnected(e),
                t && this.clearEventListenersForBinding(e)
            }
        }, {
            key: "handleError",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                this.application.handleError(e, "Error ".concat(t), n)
            }
        }, {
            key: "clearEventListenersForBinding",
            value: function(e) {
                var t = this.fetchEventListenerForBinding(e);
                t.hasBindings() || (t.disconnect(),
                this.removeMappedEventListenerFor(e))
            }
        }, {
            key: "removeMappedEventListenerFor",
            value: function(e) {
                var t = e.eventTarget
                  , n = e.eventName
                  , r = e.eventOptions
                  , o = this.fetchEventListenerMapForEventTarget(t)
                  , i = this.cacheKey(n, r);
                o.delete(i),
                0 == o.size && this.eventListenerMaps.delete(t)
            }
        }, {
            key: "fetchEventListenerForBinding",
            value: function(e) {
                var t = e.eventTarget
                  , n = e.eventName
                  , r = e.eventOptions;
                return this.fetchEventListener(t, n, r)
            }
        }, {
            key: "fetchEventListener",
            value: function(e, t, n) {
                var r = this.fetchEventListenerMapForEventTarget(e)
                  , o = this.cacheKey(t, n)
                  , i = r.get(o);
                return i || (i = this.createEventListener(e, t, n),
                r.set(o, i)),
                i
            }
        }, {
            key: "createEventListener",
            value: function(e, t, n) {
                var r = new gt(e,t,n);
                return this.started && r.connect(),
                r
            }
        }, {
            key: "fetchEventListenerMapForEventTarget",
            value: function(e) {
                var t = this.eventListenerMaps.get(e);
                return t || (t = new Map,
                this.eventListenerMaps.set(e, t)),
                t
            }
        }, {
            key: "cacheKey",
            value: function(e, t) {
                var n = [e];
                return Object.keys(t).sort().forEach((function(e) {
                    n.push("".concat(t[e] ? "" : "!").concat(e))
                }
                )),
                n.join(":")
            }
        }],
        n && bt(t.prototype, n),
        r && bt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function wt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Et = function() {
        function e(t, n) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.module = t,
            this.scope = n,
            this.control = new t.controlConstructor(this);
            try {
                this.control.initBefore(),
                this.control.init(),
                this.control.initAfter()
            } catch (e) {
                this.handleError(e, "initializing control")
            }
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "connect",
            value: function() {
                try {
                    this.control.connectBefore(),
                    this.control.connect(),
                    this.control.connectAfter()
                } catch (e) {
                    this.handleError(e, "connecting control")
                }
            }
        }, {
            key: "refresh",
            value: function() {}
        }, {
            key: "disconnect",
            value: function() {
                try {
                    this.control.disconnectBefore(),
                    this.control.disconnect(),
                    this.control.disconnectAfter()
                } catch (e) {
                    this.handleError(e, "disconnecting control")
                }
            }
        }, {
            key: "application",
            get: function() {
                return this.module.application
            }
        }, {
            key: "identifier",
            get: function() {
                return this.module.identifier
            }
        }, {
            key: "dispatcher",
            get: function() {
                return this.application.dispatcher
            }
        }, {
            key: "element",
            get: function() {
                return this.scope.element
            }
        }, {
            key: "parentElement",
            get: function() {
                return this.element.parentElement
            }
        }, {
            key: "handleError",
            value: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}
                  , r = this.identifier
                  , o = this.control
                  , i = this.element;
                n = Object.assign({
                    identifier: r,
                    control: o,
                    element: i
                }, n),
                this.application.handleError(e, "Error ".concat(t), n)
            }
        }],
        n && wt(t.prototype, n),
        r && wt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function At(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Ot = function() {
        function e(t, n) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.application = t,
            this.definition = function(e) {
                return {
                    identifier: e.identifier,
                    controlConstructor: e.controlConstructor
                }
            }(n),
            this.contextsByScope = new WeakMap,
            this.connectedContexts = new Set
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "identifier",
            get: function() {
                return this.definition.identifier
            }
        }, {
            key: "controlConstructor",
            get: function() {
                return this.definition.controlConstructor
            }
        }, {
            key: "contexts",
            get: function() {
                return Array.from(this.connectedContexts)
            }
        }, {
            key: "connectContextForScope",
            value: function(e) {
                var t = this.fetchContextForScope(e);
                this.connectedContexts.add(t),
                t.connect()
            }
        }, {
            key: "disconnectContextForScope",
            value: function(e) {
                var t = this.contextsByScope.get(e);
                t && (this.connectedContexts.delete(t),
                t.disconnect())
            }
        }, {
            key: "fetchContextForScope",
            value: function(e) {
                var t = this.contextsByScope.get(e);
                return t || (t = new Et(this,e),
                this.contextsByScope.set(e, t)),
                t
            }
        }]) && At(t.prototype, n),
        r && At(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function jt(e) {
        return function(e) {
            if (Array.isArray(e))
                return xt(e)
        }(e) || function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                return Array.from(e)
        }(e) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return xt(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return xt(e, t)
        }(e) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function xt(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function St(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Tt = function() {
        function e(t, n) {
            var r = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.element = t,
            this.identifier = n,
            this.containsElement = function(e) {
                return e.closest(r.controlSelector) === r.element
            }
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "findElement",
            value: function(e) {
                return this.element.matches(e) ? this.element : this.queryElements(e).find(this.containsElement)
            }
        }, {
            key: "findAllElements",
            value: function(e) {
                return [].concat(jt(this.element.matches(e) ? [this.element] : []), jt(this.queryElements(e).filter(this.containsElement)))
            }
        }, {
            key: "queryElements",
            value: function(e) {
                return Array.from(this.element.querySelectorAll(e))
            }
        }, {
            key: "controlSelector",
            get: function() {
                return e = "data-control",
                t = this.identifier,
                "[".concat(e, '~="').concat(t, '"]');
                var e, t
            }
        }, {
            key: "isDocumentScope",
            get: function() {
                return this.element === document.documentElement
            }
        }, {
            key: "documentScope",
            get: function() {
                return this.isDocumentScope ? this : new e(document.documentElement,this.identifier)
            }
        }]) && St(t.prototype, n),
        r && St(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Ct(e, t) {
        var n = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
        if (!n) {
            if (Array.isArray(e) || (n = function(e, t) {
                if (!e)
                    return;
                if ("string" == typeof e)
                    return qt(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n)
                    return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                    return qt(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var r = 0
                  , o = function() {};
                return {
                    s: o,
                    n: function() {
                        return r >= e.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: e[r++]
                        }
                    },
                    e: function(e) {
                        throw e
                    },
                    f: o
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var i, a = !0, s = !1;
        return {
            s: function() {
                n = n.call(e)
            },
            n: function() {
                var e = n.next();
                return a = e.done,
                e
            },
            e: function(e) {
                s = !0,
                i = e
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw i
                }
            }
        }
    }
    function qt(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function Bt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Pt = function() {
        function e(t, n) {
            var r = this;
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.mutationObserverInit = {
                attributes: !0,
                childList: !0,
                subtree: !0
            },
            this.element = t,
            this.started = !1,
            this.delegate = n,
            this.elements = new Set,
            this.mutationObserver = new MutationObserver((function(e) {
                return r.processMutations(e)
            }
            ))
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "start",
            value: function() {
                this.started || (this.started = !0,
                this.mutationObserver.observe(this.element, this.mutationObserverInit),
                this.refresh())
            }
        }, {
            key: "pause",
            value: function(e) {
                this.started && (this.mutationObserver.disconnect(),
                this.started = !1),
                e(),
                this.started || (this.mutationObserver.observe(this.element, this.mutationObserverInit),
                this.started = !0)
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (this.mutationObserver.takeRecords(),
                this.mutationObserver.disconnect(),
                this.started = !1)
            }
        }, {
            key: "refresh",
            value: function() {
                if (this.started) {
                    for (var e = new Set(this.matchElementsInTree()), t = 0, n = Array.from(this.elements); t < n.length; t++) {
                        var r = n[t];
                        e.has(r) || this.removeElement(r)
                    }
                    for (var o = 0, i = Array.from(e); o < i.length; o++) {
                        var a = i[o];
                        this.addElement(a)
                    }
                }
            }
        }, {
            key: "processMutations",
            value: function(e) {
                if (this.started) {
                    var t, n = Ct(e);
                    try {
                        for (n.s(); !(t = n.n()).done; ) {
                            var r = t.value;
                            this.processMutation(r)
                        }
                    } catch (e) {
                        n.e(e)
                    } finally {
                        n.f()
                    }
                }
            }
        }, {
            key: "processMutation",
            value: function(e) {
                "attributes" == e.type ? this.processAttributeChange(e.target, e.attributeName) : "childList" == e.type && (this.processRemovedNodes(e.removedNodes),
                this.processAddedNodes(e.addedNodes))
            }
        }, {
            key: "processAttributeChange",
            value: function(e, t) {
                this.elements.has(e) ? this.delegate.elementAttributeChanged && this.matchElement(e) ? this.delegate.elementAttributeChanged(e, t) : this.removeElement(e) : this.matchElement(e) && this.addElement(e)
            }
        }, {
            key: "processRemovedNodes",
            value: function(e) {
                for (var t = 0, n = Array.from(e); t < n.length; t++) {
                    var r = n[t]
                      , o = this.elementFromNode(r);
                    o && this.processTree(o, this.removeElement)
                }
            }
        }, {
            key: "processAddedNodes",
            value: function(e) {
                for (var t = 0, n = Array.from(e); t < n.length; t++) {
                    var r = n[t]
                      , o = this.elementFromNode(r);
                    o && this.elementIsActive(o) && this.processTree(o, this.addElement)
                }
            }
        }, {
            key: "matchElement",
            value: function(e) {
                return this.delegate.matchElement(e)
            }
        }, {
            key: "matchElementsInTree",
            value: function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.element;
                return this.delegate.matchElementsInTree(e)
            }
        }, {
            key: "processTree",
            value: function(e, t) {
                var n, r = Ct(this.matchElementsInTree(e));
                try {
                    for (r.s(); !(n = r.n()).done; ) {
                        var o = n.value;
                        t.call(this, o)
                    }
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
            }
        }, {
            key: "elementFromNode",
            value: function(e) {
                if (e.nodeType == Node.ELEMENT_NODE)
                    return e
            }
        }, {
            key: "elementIsActive",
            value: function(e) {
                return e.isConnected == this.element.isConnected && this.element.contains(e)
            }
        }, {
            key: "addElement",
            value: function(e) {
                this.elements.has(e) || this.elementIsActive(e) && (this.elements.add(e),
                this.delegate.elementMatched && this.delegate.elementMatched(e))
            }
        }, {
            key: "removeElement",
            value: function(e) {
                this.elements.has(e) && (this.elements.delete(e),
                this.delegate.elementUnmatched && this.delegate.elementUnmatched(e))
            }
        }],
        n && Bt(t.prototype, n),
        r && Bt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Rt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Ft = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.delegate = r,
            this.attributeName = n,
            this.elementObserver = new Pt(t,this)
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "element",
            get: function() {
                return this.elementObserver.element
            }
        }, {
            key: "selector",
            get: function() {
                return "[".concat(this.attributeName, "]")
            }
        }, {
            key: "start",
            value: function() {
                this.elementObserver.start()
            }
        }, {
            key: "pause",
            value: function(e) {
                this.elementObserver.pause(e)
            }
        }, {
            key: "stop",
            value: function() {
                this.elementObserver.stop()
            }
        }, {
            key: "refresh",
            value: function() {
                this.elementObserver.refresh()
            }
        }, {
            key: "started",
            get: function() {
                return this.elementObserver.started
            }
        }, {
            key: "matchElement",
            value: function(e) {
                return e.hasAttribute(this.attributeName)
            }
        }, {
            key: "matchElementsInTree",
            value: function(e) {
                var t = this.matchElement(e) ? [e] : []
                  , n = Array.from(e.querySelectorAll(this.selector));
                return t.concat(n)
            }
        }, {
            key: "elementMatched",
            value: function(e) {
                this.delegate.elementMatchedAttribute && this.delegate.elementMatchedAttribute(e, this.attributeName)
            }
        }, {
            key: "elementUnmatched",
            value: function(e) {
                this.delegate.elementUnmatchedAttribute && this.delegate.elementUnmatchedAttribute(e, this.attributeName)
            }
        }, {
            key: "elementAttributeChanged",
            value: function(e, t) {
                this.delegate.elementAttributeValueChanged && this.attributeName == t && this.delegate.elementAttributeValueChanged(e, t)
            }
        }]) && Rt(t.prototype, n),
        r && Rt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Lt(e, t) {
        var n = e.get(t);
        return n || (n = new Set,
        e.set(t, n)),
        n
    }
    function Mt(e, t) {
        return function(e) {
            if (Array.isArray(e))
                return e
        }(e) || function(e, t) {
            var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
            if (null == n)
                return;
            var r, o, i = [], a = !0, s = !1;
            try {
                for (n = n.call(e); !(a = (r = n.next()).done) && (i.push(r.value),
                !t || i.length !== t); a = !0)
                    ;
            } catch (e) {
                s = !0,
                o = e
            } finally {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
            return i
        }(e, t) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return It(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return It(e, t)
        }(e, t) || function() {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function It(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function Dt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Nt = function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.valuesByKey = new Map
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "keys",
            get: function() {
                return Array.from(this.valuesByKey.keys())
            }
        }, {
            key: "values",
            get: function() {
                return Array.from(this.valuesByKey.values()).reduce((function(e, t) {
                    return e.concat(Array.from(t))
                }
                ), React.createElement(V, null), [] > [])
            }
        }, {
            key: "size",
            get: function() {
                return Array.from(this.valuesByKey.values()).reduce((function(e, t) {
                    return e + t.size
                }
                ), 0)
            }
        }, {
            key: "add",
            value: function(e, t) {
                !function(e, t, n) {
                    Lt(e, t).add(n)
                }(this.valuesByKey, e, t)
            }
        }, {
            key: "delete",
            value: function(e, t) {
                !function(e, t, n) {
                    Lt(e, t).delete(n),
                    function(e, t) {
                        var n = e.get(t);
                        null != n && 0 == n.size && e.delete(t)
                    }(e, t)
                }(this.valuesByKey, e, t)
            }
        }, {
            key: "has",
            value: function(e, t) {
                var n = this.valuesByKey.get(e);
                return null != n && n.has(t)
            }
        }, {
            key: "hasKey",
            value: function(e) {
                return this.valuesByKey.has(e)
            }
        }, {
            key: "hasValue",
            value: function(e) {
                return Array.from(this.valuesByKey.values()).some((function(t) {
                    return t.has(e)
                }
                ))
            }
        }, {
            key: "getValuesForKey",
            value: function(e) {
                var t = this.valuesByKey.get(e);
                return t ? Array.from(t) : []
            }
        }, {
            key: "getKeysForValue",
            value: function(e) {
                return Array.from(this.valuesByKey).filter((function(t) {
                    var n = Mt(t, 2);
                    return n[0],
                    n[1].has(e)
                }
                )).map((function(e) {
                    var t = Mt(e, 2)
                      , n = t[0];
                    return t[1],
                    n
                }
                ))
            }
        }],
        n && Dt(t.prototype, n),
        r && Dt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Ut(e, t) {
        return function(e) {
            if (Array.isArray(e))
                return e
        }(e) || function(e, t) {
            var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
            if (null == n)
                return;
            var r, o, i = [], a = !0, s = !1;
            try {
                for (n = n.call(e); !(a = (r = n.next()).done) && (i.push(r.value),
                !t || i.length !== t); a = !0)
                    ;
            } catch (e) {
                s = !0,
                o = e
            } finally {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
            return i
        }(e, t) || function(e, t) {
            if (!e)
                return;
            if ("string" == typeof e)
                return Vt(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n)
                return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return Vt(e, t)
        }(e, t) || function() {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function Vt(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, r = new Array(t); n < t; n++)
            r[n] = e[n];
        return r
    }
    function Jt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Qt = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.delegate = r,
            this.attributeObserver = new Ft(t,n,this),
            this.tokensByElement = new Nt
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "started",
            get: function() {
                return this.attributeObserver.started
            }
        }, {
            key: "start",
            value: function() {
                this.attributeObserver.start()
            }
        }, {
            key: "pause",
            value: function(e) {
                this.attributeObserver.pause(e)
            }
        }, {
            key: "stop",
            value: function() {
                this.attributeObserver.stop()
            }
        }, {
            key: "refresh",
            value: function() {
                this.attributeObserver.refresh()
            }
        }, {
            key: "element",
            get: function() {
                return this.attributeObserver.element
            }
        }, {
            key: "attributeName",
            get: function() {
                return this.attributeObserver.attributeName
            }
        }, {
            key: "elementMatchedAttribute",
            value: function(e) {
                this.tokensMatched(this.readTokensForElement(e))
            }
        }, {
            key: "elementAttributeValueChanged",
            value: function(e) {
                var t = Ut(this.refreshTokensForElement(e), 2)
                  , n = t[0]
                  , r = t[1];
                this.tokensUnmatched(n),
                this.tokensMatched(r)
            }
        }, {
            key: "elementUnmatchedAttribute",
            value: function(e) {
                this.tokensUnmatched(this.tokensByElement.getValuesForKey(e))
            }
        }, {
            key: "tokensMatched",
            value: function(e) {
                var t = this;
                e.forEach((function(e) {
                    return t.tokenMatched(e)
                }
                ))
            }
        }, {
            key: "tokensUnmatched",
            value: function(e) {
                var t = this;
                e.forEach((function(e) {
                    return t.tokenUnmatched(e)
                }
                ))
            }
        }, {
            key: "tokenMatched",
            value: function(e) {
                this.delegate.tokenMatched(e),
                this.tokensByElement.add(e.element, e)
            }
        }, {
            key: "tokenUnmatched",
            value: function(e) {
                this.delegate.tokenUnmatched(e),
                this.tokensByElement.delete(e.element, e)
            }
        }, {
            key: "refreshTokensForElement",
            value: function(e) {
                var t, n, r, o = this.tokensByElement.getValuesForKey(e), i = this.readTokensForElement(e), a = (t = o,
                n = i,
                r = Math.max(t.length, n.length),
                Array.from({
                    length: r
                }, (function(e, r) {
                    return [t[r], n[r]]
                }
                ))).findIndex((function(e) {
                    var t = Ut(e, 2);
                    return !function(e, t) {
                        return e && t && e.index == t.index && e.content == t.content
                    }(t[0], t[1])
                }
                ));
                return -1 == a ? [[], []] : [o.slice(a), i.slice(a)]
            }
        }, {
            key: "readTokensForElement",
            value: function(e) {
                var t = this.attributeName;
                return function(e, t, n) {
                    return e.trim().split(/\s+/).filter((function(e) {
                        return e.length
                    }
                    )).map((function(e, r) {
                        return {
                            element: t,
                            attributeName: n,
                            content: e,
                            index: r
                        }
                    }
                    ))
                }(e.getAttribute(t) || "", e, t)
            }
        }]) && Jt(t.prototype, n),
        r && Jt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function _t(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Kt = function() {
        function e(t, n, r) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.tokenListObserver = new Qt(t,n,this),
            this.delegate = r,
            this.parseResultsByToken = new WeakMap,
            this.valuesByTokenByElement = new WeakMap
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "started",
            get: function() {
                return this.tokenListObserver.started
            }
        }, {
            key: "start",
            value: function() {
                this.tokenListObserver.start()
            }
        }, {
            key: "stop",
            value: function() {
                this.tokenListObserver.stop()
            }
        }, {
            key: "refresh",
            value: function() {
                this.tokenListObserver.refresh()
            }
        }, {
            key: "element",
            get: function() {
                return this.tokenListObserver.element
            }
        }, {
            key: "attributeName",
            get: function() {
                return this.tokenListObserver.attributeName
            }
        }, {
            key: "tokenMatched",
            value: function(e) {
                var t = e.element
                  , n = this.fetchParseResultForToken(e).value;
                n && (this.fetchValuesByTokenForElement(t).set(e, n),
                this.delegate.elementMatchedValue(t, n))
            }
        }, {
            key: "tokenUnmatched",
            value: function(e) {
                var t = e.element
                  , n = this.fetchParseResultForToken(e).value;
                n && (this.fetchValuesByTokenForElement(t).delete(e),
                this.delegate.elementUnmatchedValue(t, n))
            }
        }, {
            key: "fetchParseResultForToken",
            value: function(e) {
                var t = this.parseResultsByToken.get(e);
                return t || (t = this.parseToken(e),
                this.parseResultsByToken.set(e, t)),
                t
            }
        }, {
            key: "fetchValuesByTokenForElement",
            value: function(e) {
                var t = this.valuesByTokenByElement.get(e);
                return t || (t = new Map,
                this.valuesByTokenByElement.set(e, t)),
                t
            }
        }, {
            key: "parseToken",
            value: function(e) {
                try {
                    return {
                        value: this.delegate.parseValueForToken(e)
                    }
                } catch (e) {
                    return {
                        error: e
                    }
                }
            }
        }],
        n && _t(t.prototype, n),
        r && _t(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Ht(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var $t = function() {
        function e(t, n) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.element = t,
            this.delegate = n,
            this.valueListObserver = new Kt(this.element,this.controlAttribute,this),
            this.scopesByIdentifierByElement = new WeakMap,
            this.scopeReferenceCounts = new WeakMap
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "start",
            value: function() {
                this.valueListObserver.start()
            }
        }, {
            key: "stop",
            value: function() {
                this.valueListObserver.stop()
            }
        }, {
            key: "controlAttribute",
            get: function() {
                return "data-control"
            }
        }, {
            key: "parseValueForToken",
            value: function(e) {
                var t = e.element
                  , n = e.content
                  , r = this.fetchScopesByIdentifierForElement(t)
                  , o = r.get(n);
                return o || (o = this.delegate.createScopeForElementAndIdentifier(t, n),
                r.set(n, o)),
                o
            }
        }, {
            key: "elementMatchedValue",
            value: function(e, t) {
                var n = (this.scopeReferenceCounts.get(t) || 0) + 1;
                this.scopeReferenceCounts.set(t, n),
                1 == n && this.delegate.scopeConnected(t)
            }
        }, {
            key: "elementUnmatchedValue",
            value: function(e, t) {
                var n = this.scopeReferenceCounts.get(t);
                n && (this.scopeReferenceCounts.set(t, n - 1),
                1 == n && this.delegate.scopeDisconnected(t))
            }
        }, {
            key: "fetchScopesByIdentifierForElement",
            value: function(e) {
                var t = this.scopesByIdentifierByElement.get(e);
                return t || (t = new Map,
                this.scopesByIdentifierByElement.set(e, t)),
                t
            }
        }],
        n && Ht(t.prototype, n),
        r && Ht(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Xt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var zt = function() {
        function e(t) {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.application = t,
            this.scopeObserver = new $t(this.element,this),
            this.scopesByIdentifier = new Nt,
            this.modulesByIdentifier = new Map
        }
        var t, n, r;
        return t = e,
        (n = [{
            key: "element",
            get: function() {
                return this.application.element
            }
        }, {
            key: "modules",
            get: function() {
                return Array.from(this.modulesByIdentifier.values())
            }
        }, {
            key: "contexts",
            get: function() {
                return this.modules.reduce((function(e, t) {
                    return e.concat(t.contexts)
                }
                ), [])
            }
        }, {
            key: "start",
            value: function() {
                this.scopeObserver.start()
            }
        }, {
            key: "stop",
            value: function() {
                this.scopeObserver.stop()
            }
        }, {
            key: "loadDefinition",
            value: function(e) {
                this.unloadIdentifier(e.identifier);
                var t = new Ot(this.application,e);
                this.connectModule(t);
                var n = e.controlConstructor.afterLoad;
                n && n.call(e.controlConstructor, e.identifier, this.application)
            }
        }, {
            key: "unloadIdentifier",
            value: function(e) {
                var t = this.modulesByIdentifier.get(e);
                t && this.disconnectModule(t)
            }
        }, {
            key: "getModuleForIdentifier",
            value: function(e) {
                return this.modulesByIdentifier.get(e)
            }
        }, {
            key: "getContextForElementAndIdentifier",
            value: function(e, t) {
                var n = this.modulesByIdentifier.get(t);
                if (n)
                    return n.contexts.find((function(t) {
                        return t.element == e
                    }
                    ))
            }
        }, {
            key: "handleError",
            value: function(e, t, n) {
                this.application.handleError(e, t, n)
            }
        }, {
            key: "createScopeForElementAndIdentifier",
            value: function(e, t) {
                return new Tt(e,t)
            }
        }, {
            key: "scopeConnected",
            value: function(e) {
                this.scopesByIdentifier.add(e.identifier, e);
                var t = this.modulesByIdentifier.get(e.identifier);
                t && t.connectContextForScope(e)
            }
        }, {
            key: "scopeDisconnected",
            value: function(e) {
                this.scopesByIdentifier.delete(e.identifier, e);
                var t = this.modulesByIdentifier.get(e.identifier);
                t && t.disconnectContextForScope(e)
            }
        }, {
            key: "connectModule",
            value: function(e) {
                this.modulesByIdentifier.set(e.identifier, e),
                this.scopesByIdentifier.getValuesForKey(e.identifier).forEach((function(t) {
                    return e.connectContextForScope(t)
                }
                ))
            }
        }, {
            key: "disconnectModule",
            value: function(e) {
                this.modulesByIdentifier.delete(e.identifier),
                this.scopesByIdentifier.getValuesForKey(e.identifier).forEach((function(t) {
                    return e.disconnectContextForScope(t)
                }
                ))
            }
        }]) && Xt(t.prototype, n),
        r && Xt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }();
    function Wt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var r = t[n];
            r.enumerable = r.enumerable || !1,
            r.configurable = !0,
            "value"in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
    }
    var Gt = new (function() {
        function e() {
            !function(e, t) {
                if (!(e instanceof t))
                    throw new TypeError("Cannot call a class as a function")
            }(this, e),
            this.started = !1,
            this.element = document.documentElement,
            this.dispatcher = new kt(this),
            this.container = new zt(this)
        }
        var t, n, r;
        return t = e,
        n = [{
            key: "startAsync",
            value: function() {
                var e = this;
                ge().then((function() {
                    e.start()
                }
                ))
            }
        }, {
            key: "start",
            value: function() {
                this.started || (this.started = !0,
                this.dispatcher.start(),
                this.container.start())
            }
        }, {
            key: "stop",
            value: function() {
                this.started && (this.dispatcher.stop(),
                this.container.stop(),
                this.started = !1)
            }
        }, {
            key: "register",
            value: function(e, t) {
                this.load({
                    identifier: e,
                    controlConstructor: t
                })
            }
        }, {
            key: "observe",
            value: function(e, t) {
                var n = this.container.scopeObserver;
                n.elementMatchedValue(e, n.parseValueForToken({
                    element: e,
                    content: t
                }));
                var r = this.getControlForElementAndIdentifier(e, t);
                return e.matches('[data-control~="'.concat(t, '"]')) || (e.dataset.control = ((e.dataset.control || "") + " " + t).trim()),
                r
            }
        }, {
            key: "import",
            value: function(e) {
                var t = this.container.getModuleForIdentifier(e);
                if (!t)
                    throw new Error("Control is not registered [".concat(e, "]"));
                return t.controlConstructor
            }
        }, {
            key: "fetch",
            value: function(e, t) {
                return "string" == typeof e && (e = document.querySelector(e)),
                t || (t = e.dataset.control),
                e ? this.getControlForElementAndIdentifier(e, t) : null
            }
        }, {
            key: "fetchAll",
            value: function(e, t) {
                var n = this;
                "string" == typeof e && (e = document.querySelectorAll(e));
                var r = [];
                return e.forEach((function(e) {
                    var o = n.fetch(e, t);
                    o && r.push(o)
                }
                )),
                r
            }
        }, {
            key: "load",
            value: function(e) {
                for (var t = this, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), o = 1; o < n; o++)
                    r[o - 1] = arguments[o];
                var i = Array.isArray(e) ? e : [e].concat(r);
                i.forEach((function(e) {
                    e.controlConstructor.shouldLoad && t.container.loadDefinition(e)
                }
                ))
            }
        }, {
            key: "unload",
            value: function(e) {
                for (var t = this, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), o = 1; o < n; o++)
                    r[o - 1] = arguments[o];
                var i = Array.isArray(e) ? e : [e].concat(r);
                i.forEach((function(e) {
                    return t.container.unloadIdentifier(e)
                }
                ))
            }
        }, {
            key: "controls",
            get: function() {
                return this.container.contexts.map((function(e) {
                    return e.control
                }
                ))
            }
        }, {
            key: "getControlForElementAndIdentifier",
            value: function(e, t) {
                var n = this.container.getContextForElementAndIdentifier(e, t);
                return n ? n.control : null
            }
        }, {
            key: "handleError",
            value: function(e, t, n) {
                var r;
                console.error("%s\n\n%o\n\n%o", t, e, n),
                null === (r = window.onerror) || void 0 === r || r.call(window, t, "", 0, 0, e)
            }
        }],
        n && Wt(t.prototype, n),
        r && Wt(t, r),
        Object.defineProperty(t, "prototype", {
            writable: !1
        }),
        e
    }());
    const Zt = {
        application: Gt,
        registerControl: function(e, t) {
            return Gt.register(e, t)
        },
        importControl: function(e) {
            return Gt.import(e)
        },
        observeControl: function(e, t) {
            return Gt.observe(e, t)
        },
        fetchControl: function(e) {
            return Gt.fetch(e)
        },
        fetchControls: function(e) {
            return Gt.fetchAll(e)
        },
        start: function() {
            Gt.startAsync()
        },
        stop: function() {
            Gt.stop()
        }
    };
    function Yt(e) {
        return Yt = "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
        }
        ,
        Yt(e)
    }
    window.oc || (window.oc = {}),
    window.oc.AjaxObserve || (window.oc.AjaxObserve = Zt,
    window.oc.registerControl = Zt.registerControl,
    window.oc.importControl = Zt.importControl,
    window.oc.observeControl = Zt.observeControl,
    window.oc.fetchControl = Zt.fetchControl,
    window.oc.fetchControls = Zt.fetchControls,
    window.oc.ControlBase = pt,
    "function" == typeof define && e.amdO || "object" == ("undefined" == typeof exports ? "undefined" : Yt(exports)) || Zt.start())
}
)();
