UNPKG

@digital-blueprint/sublibrary-app

Version:

[GitHub Repository](https://github.com/digital-blueprint/sublibrary-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/sublibrary-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/sublibrary-app/) | [Sublibrary Bundle](ht

1,262 lines 275 kB
let _2 = t => t, _t2, _t3; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /*! * License: LGPL-2.1-or-later * Dependencies: * * @webcomponents/scoped-custom-element-registry: BSD-3-Clause * @dbp-toolkit/app-shell: LGPL-2.1-or-later * @dbp-toolkit/language-select: LGPL-2.1-or-later * @dbp-toolkit/common: LGPL-2.1-or-later * @dbp-toolkit/auth: LGPL-2.1-or-later * @dbp-toolkit/notification: LGPL-2.1-or-later * @dbp-toolkit/theme-switcher: LGPL-2.1-or-later * path-to-regexp: MIT * universal-router: MIT * generateUrls: MIT * @dbp-toolkit/matomo: LGPL-2.1-or-later * @dbp-toolkit/person-select: LGPL-2.1-or-later * datatables.net: MIT * datatables.net-responsive: MIT * datatables.net-responsive-dt: MIT * datatables.net-dt: MIT * jszip: (MIT OR GPL-3.0-or-later) * datatables.net-buttons-dt: MIT * datatables.net-buttons: MIT * @dbp-toolkit/data-table-view: LGPL-2.1-or-later * xtend: MIT * fuzzy: (MIT) * suggestions: ISC * jquery: MIT * select2: MIT * @dbp-toolkit/resource-select: LGPL-2.1-or-later */ import { a as e, s as t, A as n, w as r, m as i, g as o, b as s, d as a, n as l, i as u, p as c, x as d } from "./notification.BYDDIHux.es.js"; var p = { error: { "connection-to-server-refused": "Verbindungs zum Server verweigert!", summary: "Ein Fehler ist aufgetreten" }, jsonld: { "api-documentation-server": "Verbindung zum apiDocumentation API Server {{apiDocUrl}} fehlgeschlagen!", "error-api-server": "Verbindung zum API Server {{apiUrl}} fehlgeschlagen!", "error-hydra-documentation-url-not-set": "Hydra apiDocumentation URL wurden für server {{apiUrl}} nicht gesetzt!" }, "dbp-modal": { close: "Schließen" } }, h = { error: { "connection-to-server-refused": "Connection to server refused!", summary: "An error occurred" }, jsonld: { "api-documentation-server": "Connection to apiDocumentation server {{apiDocUrl}} failed!", "error-api-server": "Connection to api server {{apiUrl}} failed!", "error-hydra-documentation-url-not-set": "Hydra apiDocumentation url was not set for server {{apiUrl}}!" }, "dbp-modal": { close: "Close" } }; function f() { return e({ en: h, de: p }, "de", "en"); } var g = { "book-list": { "book-author": "Autor", "book-availability-date": "Inventarisierungsdatum", "book-barcode": "Barcode", "book-description": "Beschreibung", "book-inventory-year": "Inventarisierungsjahr", "book-isbn": "ISBN/ISSN", "book-location-identifier": "Aufstellung", "book-publication-date": "Erscheinungsdatum", "book-publisher": "Verlag", "book-title": "Titel", books: "Bücher", "current-state": "Stand", "error-load-books": "Liste der Bücher konnte nicht geladen werden", "export-name": "Buchliste {{organizationCode}}", "inventory-year-select-placeholder": "Bitte wählen Sie ein Inventarisierungsjahr aus um die Büchsterliste einzuschränken", "location-identifier-select-placeholder": "Bitte wählen Sie eine Aufstellung aus um die Büchsterliste einzuschränken", "mini-spinner-text": "Bücher werden geladen...", "no-books": "Es sind keine Bücher vorhanden." }, budget: { "budget-key-values": "Budgetzahlen", "load-error": "Fehler beim Laden der Budgetwerte", "mini-spinner-text": "Budgetzahlen werden geladen...", "no-budget": "Für dieses Institut existieren keine Budgetzahlen!", taa: "Zugewiesenes Guthaben (inkl. Übertrag vom Vorjahr)", "taa-tcb": "Summe Rechnungsbelastungen", tab: "Verfügbares Guthaben", tcb: "Aktuelles Guthaben", "tcb-tab": "Belastetes Guthaben (offene Bestellungen)" }, "create-loan": { "button-refresh-title": "Entlehnungen von {{name}} erneut überprüfen", "error-existing-loans-body": "Es wurde eine bestehende Entlehnung gefunden, das Buch kann nicht entlehnt werden!", "error-existing-loans-summary": "Bestehende Entlehnung!", "info-no-existing-loans-body": "Es wurden keine bestehenden Entlehnungen gefunden, das Buch kann entlehnt werden.", "info-no-existing-loans-summary": "Keine bestehenden Entlehnungen", "mini-spinner-text": "Entlehnungen werden geladen...", submit: "Buch entlehnen", "success-body": "Das Buch wurde erfolgreich entlehnt.", "success-summary": "Buchentlehnung erfolgreich" }, "error-login-message": "Sie müssen eingeloggt sein um diese Funktion nutzen zu können!", "error-permission-message": "Sie müssen Bibliotheksbeauftragte/r sein um diese Funktion nutzen zu können!", "error-summary": "Ein Fehler ist aufgetreten", "library-book-offer-select": { headline: "Bibliothek Buch", placeholder: "Bitte geben Sie einen Barcode ein" }, "loan-list": { "book-author": "Autor/Herausgeber", "borrower-name": "Entlehner", "current-state": "Stand", "due-date": "Fällig am", "error-load-loan": "Entlehnung konnte nicht geladen werden", "error-load-loans": "Liste der Entlehnungen konnte nicht geladen werden", "export-name": "Entlehnungen {{organizationCode}}", loans: "Entlehnungen", "mini-spinner-text": "Entlehnungen werden geladen...", "no-loans": "Es sind keine Entlehnungen vorhanden.", "open-only": "Nur offene Entlehnungen anzeigen", "overdue-only": "Nur überfällige Entlehnungen anzeigen", "return-date": "Rückgegeben am", "start-date": "Entlehndatum" }, "location-identifier": { headline: "Identifikator zur Aufstellung", placeholder: "Bitte geben Sie den Identifikator um das Buch aufzustellen ein", submit: "Abschicken" }, "order-list": { "book-price": "Preis", "current-state": "Stand", "error-load-orders": "Liste der Bestellungen konnte nicht geladen werden", "export-name": "Buchbestellungen {{organizationCode}}", "mini-spinner-text": "Bestellungen werden geladen...", "open-only": "Nur offene Bestellungen anzeigen", "order-date": "Bestelldatum", "order-number": "Bestellnummer", "order-status": "Status", "receiving -note": "Information", "status-name-active": "offen", "status-name-cancelled": "storniert", "status-name-closed": "abgeschlossen" }, "organization-select": { label: "Institut" }, "person-select": { headline: "Person" }, "renew-loan": { book: "Buch", "button-refresh-title": "Entlehnungen von {{personName}} erneut laden", "contact-subject": "Entlehnung von: {{bookName}}", "contact-title": "Per EMail Kontakt mit {{personName}} aufnehmen", "contact-value": "EMail", "end-date": "Rückgabedatum", "error-load-loans-summary": "Fehler beim Laden der Entlehnungen", "error-renew-loan-date-in-past": "Enddatum darf nicht in der Vergangenheit liegen!", "error-renew-loan-summary": "Fehler beim Verlängern", "info-renew-loan-success-body": "Das Verlängern der Entlehnung war erfolgreich.", "info-renew-loan-success-summary": "Verlängern erfolgreich", loans: "Entlehnungen", "mini-spinner-text": "Entlehnungen werden geladen...", "no-loans": "Es wurden keine bestehenden Entlehnungen gefunden!", "renew-loan": "Entlehnung verlängern" }, "return-book": { borrower: "Entlehner", "button-refresh-title": "Entlehnung von {{name}} erneut laden", "error-no-existing-loans-body": "Es wurden keine bestehenden Entlehnungen gefunden!", "error-no-existing-loans-summary": "Keine bestehenden Entlehnungen", "info-existing-loans-body": "Es wurden eine bestehende Entlehnung gefunden, das Buch kann zurückgegeben werden!", "info-existing-loans-summary": "Bestehende Entlehnung!", "mini-spinner-text": "Entlehnungen werden geladen...", submit: "Buch zurückgeben", "success-body": "Das Buch von {{personName}} wurde erfolgreich zurückgegeben.", "success-summary": "Buchrückgabe erfolgreich", "user-name-unknown": "Unbekannt" }, shelving: { "button-refresh-title": "Aufstellung von {{name}} erneut laden" }, "success-body": 'Das Buch "{{name}}" wurde erfolgreich aufgestellt.', "success-summary": "Buchaufstellung erfolgreich" }, m = { "book-list": { "book-author": "Author", "book-availability-date": "Availability date", "book-barcode": "Barcode", "book-description": "Description", "book-inventory-year": "Availability year", "book-isbn": "ISBN/ISSN", "book-location-identifier": "Location", "book-publication-date": "Publication date", "book-publisher": "Publisher", "book-title": "Title", books: "Books", "current-state": "State", "error-load-books": "List of books could not be loaded", "export-name": "Books {{organizationCode}}", "inventory-year-select-placeholder": "Please select a availability year to restrict the book list", "location-identifier-select-placeholder": "Please select a location to restrict the book list", "mini-spinner-text": "Loading books...", "no-books": "There are no books." }, budget: { "budget-key-values": "Budget", "load-error": "Failed to load budget values", "mini-spinner-text": "Budget will be loaded...", "no-budget": "There are no budget values for this institute!", taa: "Allocated credit (including carryover from previous year)", "taa-tcb": "Sum of billing charges", tab: "Available balance", tcb: "Current balances", "tcb-tab": "Debited credit (open orders)" }, "create-loan": { "button-refresh-title": "Check loans of {{name}} again", "error-existing-loans-body": "Existing loan was found, a new one cannot be created!", "error-existing-loans-summary": "Existing loan was found!", "info-no-existing-loans-body": "No existing loans were found, a new one can be created.", "info-no-existing-loans-summary": "No existing loans", "mini-spinner-text": "Loading loans...", submit: "Loan book", "success-body": "The book loan creation successful.", "success-summary": "Book loan creation successful" }, "error-login-message": "You need to be logged in to use this function!", "error-permission-message": "You need to be a library officer to use this function!", "error-summary": "An error occurred", "library-book-offer-select": { headline: "Library book", placeholder: "Please enter a barcode" }, "loan-list": { "book-author": "Author/Publisher", "borrower-name": "Borrower", "current-state": "State", "due-date": "Due date", "error-load-loan": "Loan could not be loaded", "error-load-loans": "List of loans could not be loaded", "export-name": "Loans {{organizationCode}}", loans: "Loans", "mini-spinner-text": "Loading loans...", "no-loans": "There are no books.", "open-only": "Show open loans only", "overdue-only": "Show overdue loans only", "return-date": "Return date", "start-date": "Start date" }, "location-identifier": { headline: "Identifier for book placement", placeholder: "Please enter the identifier to place the book", submit: "Send" }, "order-list": { "book-price": "Price", "current-state": "State", "error-load-orders": "List of orders could not be loaded", "export-name": "Orders {{organizationCode}}", "mini-spinner-text": "Loading order...", "open-only": "Show open orders only", "order-date": "Order date", "order-number": "Order number", "order-status": "Status", "receiving -note": "Information", "status-name-active": "active", "status-name-cancelled": "cancelled", "status-name-closed": "closed" }, "organization-select": { label: "Institute" }, "person-select": { headline: "Person" }, "renew-loan": { book: "Book", "button-refresh-title": "Load loans from {{personName}} again", "contact-subject": "Loaning of: {{bookName}}", "contact-title": "Contact {{personName}} via email", "contact-value": "EMail", "end-date": "Return date", "error-load-loans-summary": "Error on loading loans", "error-renew-loan-date-in-past": "End time may not be in the past!", "error-renew-loan-summary": "Renewal failed", "info-renew-loan-success-body": "The renewal of the loan was successful.", "info-renew-loan-success-summary": "Renewal successfull", loans: "Loans", "mini-spinner-text": "Loading loans...", "no-loans": "No existing loans were found!", "renew-loan": "Renew loan" }, "return-book": { borrower: "Borrower", "button-refresh-title": "Load loans of {{name}} again", "error-no-existing-loans-body": "No existing loans were found!", "error-no-existing-loans-summary": "No existing loans", "info-existing-loans-body": "Existing loan was found, it can be returned!", "info-existing-loans-summary": "Existing loan was found!", "mini-spinner-text": "Loading loans...", submit: "Return book", "success-body": "The book from {{personName}} was successfully returned.", "success-summary": "Book returned successfully", "user-name-unknown": "Unknown" }, shelving: { "button-refresh-title": "Load shelving from {{name}} again" }, "success-body": 'The book lineup for "{{name}}" was successful.', "success-summary": "Book lineup successful" }; function v() { return e({ en: m, de: g }, "de", "en"); } function y(e) { return e; } const b = e => { const t = document.createElement("pre"), n = document.createTextNode(e); return t.appendChild(n), t.innerHTML; }, x = e => { var t = document.createElement("div"); return t.innerHTML = e, t.textContent || t.innerText || ""; }, w = { handleXhrError(e, n, r, i = "sad", o = "de") { if ("abort" === n) return; let s; const a = f(); a.changeLanguage(o), void 0 !== e.responseJSON && void 0 !== e.responseJSON["hydra:description"] ? s = e.responseJSON["hydra:description"] : void 0 !== e.responseJSON && void 0 !== e.responseJSON.detail ? s = e.responseJSON.detail : (s = n, r && (s += " - " + r)), 0 === e.status && (s = a.t("error.connection-to-server-refused")), t({ summary: a.t("error.summary"), body: b(x(s)), icon: i, type: "danger" }), void 0 !== this.sendSetPropertyEvent && this.sendSetPropertyEvent("analytics-event", { category: "XhrError", action: s }); }, handleFetchError: async function (e, n = "", r = "sad", i = "de") { if ("AbortError" === e.name) return; let o; const s = f(); s.changeLanguage(i); try { await e.json().then(t => { o = void 0 !== t["hydra:description"] ? t["hydra:description"] : void 0 !== t.detail ? t.detail : e.statusText; }).catch(() => { o = void 0 !== e.statusText ? e.statusText : e; }); } catch (_unused) { "TypeError" === e.name && (o = "" !== e.message ? e.message : s.t("error.connection-to-server-refused")); } t({ summary: "" === n ? s.t("error.summary") : n, body: b(x(o)), icon: r, type: "danger" }), void 0 !== this.sendSetPropertyEvent && this.sendSetPropertyEvent("analytics-event", { category: "FetchError", action: "" === n ? o : n + ": " + o }); } }; class _ extends n { constructor() { super(), Object.assign(_.prototype, w); } _(e) { return null === this.shadowRoot ? this.querySelector(e) : this.shadowRoot.querySelector(e); } hasLibraryPermissions() { if (!this.auth.person || !Array.isArray(this.auth.person.roles)) return !1; let e = this.auth.person.roles; return -1 !== e.indexOf("ROLE_F_BIB_F") || -1 !== e.indexOf("ROLE_LIBRARY_MANAGER"); } _updateAuth() { this._loginStatus = this.auth["login-status"]; let e = [this.isLoggedIn(), this.isLoading()]; this._loginState.toString() !== e.toString() && this.requestUpdate(), this._loginState = e, this.isLoggedIn() && !this._loginCalled && (this._loginCalled = !0, this.loginCallback()); } update(e) { e.forEach((e, t) => { if ("auth" === t) this._updateAuth(); }), super.update(e); } connectedCallback() { super.connectedCallback(), this._loginStatus = "", this._loginState = [], this._loginCalled = !1; } isLoggedIn() { return void 0 !== this.auth.person && null !== this.auth.person; } isLoading() { return "logged-out" !== this._loginStatus && !this.isLoggedIn() && void 0 !== this.auth.token; } loginCallback() {} getOrganization() { const e = this._("dbp-library-select"); if (e) { const t = e.getAttribute("data-object"); if (null !== t) return JSON.parse(t); } return null; } getOrganizationCode() { const e = this.getOrganization(); return null !== e ? e.name : ""; } } var S, E = { exports: {} }, A = E.exports; /*! * jQuery JavaScript Library v3.7.1 * https://jquery.com/ * * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * * Date: 2023-08-28T13:37Z */ function T() { return S || (S = 1, e = "undefined" != typeof window ? window : A, t = function (e, t) { var n = [], r = Object.getPrototypeOf, i = n.slice, o = n.flat ? function (e) { return n.flat.call(e); } : function (e) { return n.concat.apply([], e); }, s = n.push, a = n.indexOf, l = {}, u = l.toString, c = l.hasOwnProperty, d = c.toString, p = d.call(Object), h = {}, f = function f(e) { return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item; }, g = function g(e) { return null != e && e === e.window; }, m = e.document, v = { type: !0, src: !0, nonce: !0, noModule: !0 }; function y(e, t, n) { var r, i, o = (n = n || m).createElement("script"); if (o.text = e, t) for (r in v) (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i); n.head.appendChild(o).parentNode.removeChild(o); } function b(e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[u.call(e)] || "object" : typeof e; } var x = "3.7.1", w = /HTML$/i, _ = function _(e, t) { return new _.fn.init(e, t); }; function S(e) { var t = !!e && "length" in e && e.length, n = b(e); return !f(e) && !g(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e); } function E(e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase(); } _.fn = _.prototype = { jquery: x, constructor: _, length: 0, toArray: function () { return i.call(this); }, get: function (e) { return null == e ? i.call(this) : e < 0 ? this[e + this.length] : this[e]; }, pushStack: function (e) { var t = _.merge(this.constructor(), e); return t.prevObject = this, t; }, each: function (e) { return _.each(this, e); }, map: function (e) { return this.pushStack(_.map(this, function (t, n) { return e.call(t, n, t); })); }, slice: function () { return this.pushStack(i.apply(this, arguments)); }, first: function () { return this.eq(0); }, last: function () { return this.eq(-1); }, even: function () { return this.pushStack(_.grep(this, function (e, t) { return (t + 1) % 2; })); }, odd: function () { return this.pushStack(_.grep(this, function (e, t) { return t % 2; })); }, eq: function (e) { var t = this.length, n = +e + (e < 0 ? t : 0); return this.pushStack(n >= 0 && n < t ? [this[n]] : []); }, end: function () { return this.prevObject || this.constructor(); }, push: s, sort: n.sort, splice: n.splice }, _.extend = _.fn.extend = function () { var e, t, n, r, i, o, s = arguments[0] || {}, a = 1, l = arguments.length, u = !1; for ("boolean" == typeof s && (u = s, s = arguments[a] || {}, a++), "object" == typeof s || f(s) || (s = {}), a === l && (s = this, a--); a < l; a++) if (null != (e = arguments[a])) for (t in e) r = e[t], "__proto__" !== t && s !== r && (u && r && (_.isPlainObject(r) || (i = Array.isArray(r))) ? (n = s[t], o = i && !Array.isArray(n) ? [] : i || _.isPlainObject(n) ? n : {}, i = !1, s[t] = _.extend(u, o, r)) : void 0 !== r && (s[t] = r)); return s; }, _.extend({ expando: "jQuery" + (x + 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]" !== u.call(e) || (t = r(e)) && ("function" != typeof (n = c.call(t, "constructor") && t.constructor) || d.call(n) !== p)); }, isEmptyObject: function (e) { var t; for (t in e) return !1; return !0; }, globalEval: function (e, t, n) { y(e, { nonce: t && t.nonce }, n); }, each: function (e, t) { var n, r = 0; if (S(e)) for (n = e.length; r < n && !1 !== t.call(e[r], r, e[r]); r++);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) for (; t = e[r++];) n += _.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 && (S(Object(e)) ? _.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)), n; }, inArray: function (e, t, n) { return null == t ? -1 : a.call(t, e, n); }, isXMLDoc: function (e) { var t = e && e.namespaceURI, n = e && (e.ownerDocument || e).documentElement; return !w.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, s = !n; i < o; i++) !t(e[i], i) !== s && r.push(e[i]); return r; }, map: function (e, t, n) { var r, i, s = 0, a = []; if (S(e)) for (r = e.length; s < r; s++) null != (i = t(e[s], s, n)) && a.push(i);else for (s in e) null != (i = t(e[s], s, n)) && a.push(i); return o(a); }, guid: 1, support: h }), "function" == typeof Symbol && (_.fn[Symbol.iterator] = n[Symbol.iterator]), _.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) { l["[object " + t + "]"] = t.toLowerCase(); }); var A = n.pop, T = n.sort, k = n.splice, C = "[\\x20\\t\\r\\n\\f]", $ = new RegExp("^" + C + "+|((?:^|[^\\\\])(?:\\\\.)*)" + C + "+$", "g"); _.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 D = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; function L(e, t) { return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e; } _.escapeSelector = function (e) { return (e + "").replace(D, L); }; var j = m, O = s; !function () { var t, r, o, s, l, u, d, p, f, g, m = O, v = _.expando, y = 0, b = 0, x = ee(), w = ee(), S = ee(), D = ee(), _L = function L(e, t) { return e === t && (l = !0), 0; }, N = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", q = "(?:\\\\[\\da-fA-F]{1,6}" + C + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", P = "\\[" + C + "*(" + q + ")(?:" + C + "*([*^$|!~]?=)" + C + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + q + "))|)" + C + "*\\]", I = ":(" + q + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + P + ")*)|.*)\\)|)", R = new RegExp(C + "+", "g"), H = new RegExp("^" + C + "*," + C + "*"), M = new RegExp("^" + C + "*([>+~]|" + C + ")" + C + "*"), B = new RegExp(C + "|>"), z = new RegExp(I), U = new RegExp("^" + q + "$"), F = { ID: new RegExp("^#(" + q + ")"), CLASS: new RegExp("^\\.(" + q + ")"), TAG: new RegExp("^(" + q + "|[*])"), ATTR: new RegExp("^" + P), PSEUDO: new RegExp("^" + I), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + C + "*(even|odd|(([+-]|)(\\d*)n|)" + C + "*(?:([+-]|)" + C + "*(\\d+)|))" + C + "*\\)|)", "i"), bool: new RegExp("^(?:" + N + ")$", "i"), needsContext: new RegExp("^" + C + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + C + "*((?:-\\d)?\\d*)" + C + "*\\)|)(?=[^-]|$)", "i") }, W = /^(?:input|select|textarea|button)$/i, G = /^h\d$/i, V = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, Y = /[+~]/, K = new RegExp("\\\\[\\da-fA-F]{1,6}" + C + "?|\\\\([^\\r\\n\\f])", "g"), X = function X(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)); }, Z = function Z() { le(); }, J = pe(function (e) { return !0 === e.disabled && E(e, "fieldset"); }, { dir: "parentNode", next: "legend" }); try { m.apply(n = i.call(j.childNodes), j.childNodes), n[j.childNodes.length].nodeType; } catch (e) { m = { apply: function (e, t) { O.apply(e, i.call(t)); }, call: function (e) { O.apply(e, i.call(arguments, 1)); } }; } function Q(e, t, n, r) { var i, o, s, a, l, c, d, g = t && t.ownerDocument, y = t ? t.nodeType : 9; if (n = n || [], "string" != typeof e || !e || 1 !== y && 9 !== y && 11 !== y) return n; if (!r && (le(t), t = t || u, p)) { if (11 !== y && (l = V.exec(e))) if (i = l[1]) { if (9 === y) { if (!(s = t.getElementById(i))) return n; if (s.id === i) return m.call(n, s), n; } else if (g && (s = g.getElementById(i)) && Q.contains(t, s) && s.id === i) return m.call(n, s), n; } else { if (l[2]) return m.apply(n, t.getElementsByTagName(e)), n; if ((i = l[3]) && t.getElementsByClassName) return m.apply(n, t.getElementsByClassName(i)), n; } if (!(D[e + " "] || f && f.test(e))) { if (d = e, g = t, 1 === y && (B.test(e) || M.test(e))) { for ((g = Y.test(e) && ae(t.parentNode) || t) == t && h.scope || ((a = t.getAttribute("id")) ? a = _.escapeSelector(a) : t.setAttribute("id", a = v)), o = (c = ce(e)).length; o--;) c[o] = (a ? "#" + a : ":scope") + " " + de(c[o]); d = c.join(","); } try { return m.apply(n, g.querySelectorAll(d)), n; } catch (t) { D(e, !0); } finally { a === v && t.removeAttribute("id"); } } } return ye(e.replace($, "$1"), t, n, r); } function ee() { var e = []; return function t(n, i) { return e.push(n + " ") > r.cacheLength && delete t[e.shift()], t[n + " "] = i; }; } function te(e) { return e[v] = !0, e; } function ne(e) { var t = u.createElement("fieldset"); try { return !!e(t); } catch (e) { return !1; } finally { t.parentNode && t.parentNode.removeChild(t), t = null; } } function re(e) { return function (t) { return E(t, "input") && t.type === e; }; } function ie(e) { return function (t) { return (E(t, "input") || E(t, "button")) && t.type === e; }; } function oe(e) { return function (t) { return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && J(t) === e : t.disabled === e : "label" in t && t.disabled === e; }; } function se(e) { return te(function (t) { return t = +t, te(function (n, r) { for (var i, o = e([], n.length, t), s = o.length; s--;) n[i = o[s]] && (n[i] = !(r[i] = n[i])); }); }); } function ae(e) { return e && void 0 !== e.getElementsByTagName && e; } function le(e) { var t, n = e ? e.ownerDocument || e : j; return n != u && 9 === n.nodeType && n.documentElement ? (d = (u = n).documentElement, p = !_.isXMLDoc(u), g = d.matches || d.webkitMatchesSelector || d.msMatchesSelector, d.msMatchesSelector && j != u && (t = u.defaultView) && t.top !== t && t.addEventListener("unload", Z), h.getById = ne(function (e) { return d.appendChild(e).id = _.expando, !u.getElementsByName || !u.getElementsByName(_.expando).length; }), h.disconnectedMatch = ne(function (e) { return g.call(e, "*"); }), h.scope = ne(function () { return u.querySelectorAll(":scope"); }), h.cssHas = ne(function () { try { return u.querySelector(":has(*,:jqfake)"), !1; } catch (e) { return !0; } }), h.getById ? (r.filter.ID = function (e) { var t = e.replace(K, X); return function (e) { return e.getAttribute("id") === t; }; }, r.find.ID = function (e, t) { if (void 0 !== t.getElementById && p) { var n = t.getElementById(e); return n ? [n] : []; } }) : (r.filter.ID = function (e) { var t = e.replace(K, X); return function (e) { var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id"); return n && n.value === t; }; }, r.find.ID = function (e, t) { if (void 0 !== t.getElementById && p) { var n, r, i, o = t.getElementById(e); if (o) { if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; for (i = t.getElementsByName(e), r = 0; o = i[r++];) if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; } return []; } }), r.find.TAG = function (e, t) { return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : t.querySelectorAll(e); }, r.find.CLASS = function (e, t) { if (void 0 !== t.getElementsByClassName && p) return t.getElementsByClassName(e); }, f = [], ne(function (e) { var t; d.appendChild(e).innerHTML = "<a id='" + v + "' href='' disabled='disabled'></a><select id='" + v + "-\r\\' disabled='disabled'><option selected=''></option></select>", e.querySelectorAll("[selected]").length || f.push("\\[" + C + "*(?:value|" + N + ")"), e.querySelectorAll("[id~=" + v + "-]").length || f.push("~="), e.querySelectorAll("a#" + v + "+*").length || f.push(".#.+[+~]"), e.querySelectorAll(":checked").length || f.push(":checked"), (t = u.createElement("input")).setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), d.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && f.push(":enabled", ":disabled"), (t = u.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || f.push("\\[" + C + "*name" + C + "*=" + C + "*(?:''|\"\")"); }), h.cssHas || f.push(":has"), f = f.length && new RegExp(f.join("|")), _L = function (e, t) { if (e === t) return l = !0, 0; var n = !e.compareDocumentPosition - !t.compareDocumentPosition; return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !h.sortDetached && t.compareDocumentPosition(e) === n ? e === u || e.ownerDocument == j && Q.contains(j, e) ? -1 : t === u || t.ownerDocument == j && Q.contains(j, t) ? 1 : s ? a.call(s, e) - a.call(s, t) : 0 : 4 & n ? -1 : 1); }, u) : u; } for (t in Q.matches = function (e, t) { return Q(e, null, null, t); }, Q.matchesSelector = function (e, t) { if (le(e), p && !D[t + " "] && (!f || !f.test(t))) try { var n = g.call(e, t); if (n || h.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n; } catch (e) { D(t, !0); } return Q(t, u, null, [e]).length > 0; }, Q.contains = function (e, t) { return (e.ownerDocument || e) != u && le(e), _.contains(e, t); }, Q.attr = function (e, t) { (e.ownerDocument || e) != u && le(e); var n = r.attrHandle[t.toLowerCase()], i = n && c.call(r.attrHandle, t.toLowerCase()) ? n(e, t, !p) : void 0; return void 0 !== i ? i : e.getAttribute(t); }, Q.error = function (e) { throw new Error("Syntax error, unrecognized expression: " + e); }, _.uniqueSort = function (e) { var t, n = [], r = 0, o = 0; if (l = !h.sortStable, s = !h.sortStable && i.call(e, 0), T.call(e, _L), l) { for (; t = e[o++];) t === e[o] && (r = n.push(o)); for (; r--;) k.call(e, n[r], 1); } return s = null, e; }, _.fn.uniqueSort = function () { return this.pushStack(_.uniqueSort(i.apply(this))); }, r = _.expr = { cacheLength: 50, createPseudo: te, match: F, 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(K, X), e[3] = (e[3] || e[4] || e[5] || "").replace(K, X), "~=" === 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] || Q.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] && Q.error(e[0]), e; }, PSEUDO: function (e) { var t, n = !e[6] && e[2]; return F.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && z.test(n) && (t = ce(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(K, X).toLowerCase(); return "*" === e ? function () { return !0; } : function (e) { return E(e, t); }; }, CLASS: function (e) { var t = x[e + " "]; return t || (t = new RegExp("(^|" + C + ")" + e + "(" + C + "|$)")) && x(e, function (e) { return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || ""); }); }, ATTR: function (e, t, n) { return function (r) { var i = Q.attr(r, e); return null == i ? "!=" === t : !t || (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace(R, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-")); }; }, CHILD: function (e, t, n, r, i) { var o = "nth" !== e.slice(0, 3), s = "last" !== e.slice(-4), a = "of-type" === t; return 1 === r && 0 === i ? function (e) { return !!e.parentNode; } : function (t, n, l) { var u, c, d, p, h, f = o !== s ? "nextSibling" : "previousSibling", g = t.parentNode, m = a && t.nodeName.toLowerCase(), b = !l && !a, x = !1; if (g) { if (o) { for (; f;) { for (d = t; d = d[f];) if (a ? E(d, m) : 1 === d.nodeType) return !1; h = f = "only" === e && !h && "nextSibling"; } return !0; } if (h = [s ? g.firstChild : g.lastChild], s && b) { for (x = (p = (u = (c = g[v] || (g[v] = {}))[e] || [])[0] === y && u[1]) && u[2], d = p && g.childNodes[p]; d = ++p && d && d[f] || (x = p = 0) || h.pop();) if (1 === d.nodeType && ++x && d === t) { c[e] = [y, p, x]; break; } } else if (b && (x = p = (u = (c = t[v] || (t[v] = {}))[e] || [])[0] === y && u[1]), !1 === x) for (; (d = ++p && d && d[f] || (x = p = 0) || h.pop()) && (!(a ? E(d, m) : 1 === d.nodeType) || !++x || (b && ((c = d[v] || (d[v] = {}))[e] = [y, x]), d !== t));); return (x -= i) === r || x % r == 0 && x / r >= 0; } }; }, PSEUDO: function (e, t) { var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || Q.error("unsupported pseudo: " + e); return i[v] ? i(t) : i.length > 1 ? (n = [e, e, "", t], r.setFilters.hasOwnProperty(e.toLowerCase()) ? te(function (e, n) { for (var r, o = i(e, t), s = o.length; s--;) e[r = a.call(e, o[s])] = !(n[r] = o[s]); }) : function (e) { return i(e, 0, n); }) : i; } }, pseudos: { not: te(function (e) { var t = [], n = [], r = ve(e.replace($, "$1")); return r[v] ? te(function (e, t, n, i) { for (var o, s = r(e, null, i, []), a = e.length; a--;) (o = s[a]) && (e[a] = !(t[a] = o)); }) : function (e, i, o) { return t[0] = e, r(t, null, o, n), t[0] = null, !n.pop(); }; }), has: te(function (e) { return function (t) { return Q(e, t).length > 0; }; }), contains: te(function (e) { return e = e.replace(K, X), function (t) { return (t.textContent || _.text(t)).indexOf(e) > -1; }; }), lang: te(function (e) { return U.test(e || "") || Q.error("unsupported lang: " + e), e = e.replace(K, X).toLowerCase(), function (t) { var n; do { if (n = p ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-"); } while ((t = t.parentNode) && 1 === t.nodeType); return !1; }; }), target: function (t) { var n = e.location && e.location.hash; return n && n.slice(1) === t.id; }, root: function (e) { return e === d; }, focus: function (e) { return e === function () { try { return u.activeElement; } catch (e) {} }() && u.hasFocus() && !!(e.type || e.href || ~e.tabIndex); }, enabled: oe(!1), disabled: oe(!0), checked: function (e) { return E(e, "input") && !!e.checked || E(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 !r.pseudos.empty(e); }, header: function (e) { return G.test(e.nodeName); }, input: function (e) { return W.test(e.nodeName); }, button: function (e) { return E(e, "input") && "button" === e.type || E(e, "button"); }, text: function (e) { var t; return E(e, "input") && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()); }, first: se(function () { return [0]; }), last: se(function (e, t) { return [t - 1]; }), eq: se(function (e, t, n) { return [n < 0 ? n + t : n]; }), even: se(function (e, t) { for (var n = 0; n < t; n += 2) e.push(n); return e; }), odd: se(function (e, t) { for (var n = 1; n < t; n += 2) e.push(n); return e; }), lt: se(function (e, t, n) { var r; for (r = n < 0 ? n + t : n > t ? t : n; --r >= 0;) e.push(r); return e; }), gt: se(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r); return e; }) } }, r.pseudos.nth = r.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) r.pseudos[t] = re(t); for (t in { submit: !0, reset: !0 }) r.pseudos[t] = ie(t); function ue() {} function ce(e, t) { var n, i, o, s, a, l, u, c = w[e + " "]; if (c) return t ? 0 : c.slice(0); for (a = e, l = [], u = r.preFilter; a;) { for (s in n && !(i = H.exec(a)) || (i && (a = a.slice(i[0].length) || a), l.push(o = [])), n = !1, (i = M.exec(a)) && (n = i.shift(), o.push({ value: n, type: i[0].replace($, " ") }), a = a.slice(n.length)), r.filter) !(i = F[s].exec(a)) || u[s] && !(i = u[s](i)) || (n = i.shift(), o.push({ value: n, type: s, matches: i }), a = a.slice(n.length)); if (!n) break; } return t ? a.length : a ? Q.error(e) : w(e, l).slice(0); } function de(e) { for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; return r; } function pe(e, t, n) { var r = t.dir, i = t.next, o = i || r, s = n && "parentNode" === o, a = b++; return t.first ? function (t, n, i) { for (; t = t[r];) if (1 === t.nodeType || s) return e(t, n, i); return !1; } : function (t, n, l) { var u, c, d = [y, a]; if (l) { for (; t = t[r];) if ((1 === t.nodeType || s) && e(t, n, l)) return !0; } else for (; t = t[r];) if (1 === t.nodeType || s) if (c = t[v] || (t[v] = {}), i && E(t, i)) t = t[r] || t;else { if ((u = c[o]) && u[0] === y && u[1] === a) return d[2] = u[2]; if (c[o] = d, d[2] = e(t, n, l)) return !0; } return !1; }; } function he(e) { return e.length > 1 ? function (t, n, r) { for (var i = e.length; i--;) if (!e[i](t, n, r)) return !1; return !0; } : e[0]; } function fe(e, t, n, r, i) { for (var o, s = [], a = 0, l = e.length, u = null != t; a < l; a++) (o = e[a]) && (n && !n(o, r, i) || (s.push(o), u && t.push(a))); return s; } function ge(e, t, n, r, i, o) { return r && !r[v] && (r = ge(r)), i && !i[v] && (i = ge(i, o)), te(function (o, s, l, u) { var c, d, p, h, f = [], g = [], v = s.length, y = o || function (e, t, n) { for (var r = 0, i = t.length; r < i; r++) Q(e, t[r], n); return n; }(t || "*", l.nodeType ? [l] : l, []), b = !e || !o && t ? y : fe(y, f, e, l, u); if (n ? n(b, h = i || (o ? e : v || r) ? [] : s, l, u) : h = b, r) for (c = fe(h, g), r(c, [], l, u), d = c.length; d--;) (p = c[d]) && (h[g[d]] = !(b[g[d]] = p)); if (o) { if (i || e) { if (i) { for (c = [], d = h.length; d--;) (p = h[d]) && c.push(b[d] = p); i(null, h = [], c, u); } for (d = h.length; d--;) (p = h[d]) && (c = i ? a.call(o, p) : f[d]) > -1 && (o[c] = !(s[c] = p)); } } else h = fe(h === s ? h.splice(v, h.length) : h), i ? i(null, s, h, u) : m.apply(s, h); }); } function me(e) { for (var t, n, i, s = e.length, l = r.relative[e[0].type], u = l || r.relative[" "], c = l ? 1 : 0, d = pe(function (e) { return e === t; }, u, !0), p = pe(function (e) { return a.call(t, e) > -1; }, u, !0), h = [function (e, n, r) { var i = !l && (r || n != o) || ((t = n).nodeType ? d(e, n, r) : p(e, n, r)); return t = null, i; }]; c < s; c++) if (n = r.relative[e[c].type]) h = [pe(he(h), n)];else { if ((n = r.filter[e[c].type].apply(null, e[c].matches))[v]) { for (i = ++c; i < s && !r.relative[e[i].type]; i++); return ge(c > 1 && he(h), c > 1 && de(e.slice(0, c - 1).concat({ value: " " === e[c - 2].type ? "*" : "" })).replace($, "$1"), n, c < i && me(e.slice(c, i)), i < s && me(e = e.slice(i)), i < s && de(e)); } h.push(n); } return he(h); } function ve(e, t) { var n, i = [], s = [], a = S[e + " "]; if (!a) { for (t || (t = ce(e)), n = t.length; n--;) (a = me(t[n]))[v] ? i.push(a) : s.push(a); a = S(e, function (e, t) { var n = t.length > 0, i = e.length > 0, s = function s(s, a, l, c, d) { var h, f, g, v = 0, b = "0", x = s && [], w = [], S = o, E = s || i && r.find.TAG("*", d), T = y += null == S ? 1 : Math.random() || .1, k = E.length; for (d && (o = a == u || a || d); b !== k && null != (h = E[b]); b++) { if (i && h) { for (f = 0, a || h.ownerDocument == u || (le(h), l = !p); g = e[f++];) if (g(h, a || u, l)) { m.call(c, h); break; } d && (y = T); } n && ((h = !g && h) && v--, s && x.push(h)); } if (v += b, n && b !== v) { for (f = 0; g = t[f++];) g(x, w, a, l); if (s) { if (v > 0) for (; b--;) x[b] || w[b] || (w[b] = A.call(c)); w = fe(w); } m.apply(c, w), d && !s && w.length > 0 && v + t.length > 1 && _.uniqueSort(c); } return d && (y = T, o = S), x; }; return n ? te(s) : s; }(s, i)), a.selector = e; } return a; } function ye(e, t, n, i) { var o, s, a, l, u, c = "function" == typeof e && e, d = !i && ce(e = c.selector || e); if (n = n || [], 1 === d.length) { if ((s