@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
JavaScript
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