!(function (e) { var t = {} function n(r) { if (t[r]) return t[r].exports var i = (t[r] = { i: r, l: !1, exports: {} }) return e[r].call(i.exports, i, i.exports, n), (i.l = !0), i.exports } ;(n.m = e), (n.c = t), (n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }), (n.r = function (e) { 'undefined' != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' }), Object.defineProperty(e, '__esModule', { value: !0 }) }), (n.t = function (e, t) { if ((1 & t && (e = n(e)), 8 & t)) return e if (4 & t && 'object' == typeof e && e && e.__esModule) return e var r = Object.create(null) if ( (n.r(r), Object.defineProperty(r, 'default', { enumerable: !0, value: e }), 2 & t && 'string' != typeof e) ) for (var i in e) n.d( r, i, function (t) { return e[t] }.bind(null, i) ) return r }), (n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e } return n.d(t, 'a', t), t }), (n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }), (n.p = ''), n((n.s = 3)) })([ function (e, t, n) { 'use strict' ;(function (e) { var n function r(e) { return (r = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e })(e) } /*! * jQuery JavaScript Library v2.2.4 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-05-20T17:23Z */ /*! * jQuery JavaScript Library v2.2.4 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-05-20T17:23Z */ !(function (t, n) { 'object' === r(e) && 'object' === r(e.exports) ? (e.exports = t.document ? n(t, !0) : function (e) { if (!e.document) throw new Error('jQuery requires a window with a document') return n(e) }) : n(t) })('undefined' != typeof window ? window : void 0, function (i, o) { var a = [], s = i.document, u = a.slice, l = a.concat, c = a.push, d = a.indexOf, f = {}, p = f.toString, h = f.hasOwnProperty, v = {}, m = function e(t, n) { return new e.fn.init(t, n) }, g = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, y = /^-ms-/, b = /-([\da-z])/gi, x = function (e, t) { return t.toUpperCase() } function w(e) { var t = !!e && 'length' in e && e.length, n = m.type(e) return ( 'function' !== n && !m.isWindow(e) && ('array' === n || 0 === t || ('number' == typeof t && t > 0 && t - 1 in e)) ) } ;(m.fn = m.prototype = { jquery: '2.2.4', constructor: m, selector: '', length: 0, toArray: function () { return u.call(this) }, get: function (e) { return null != e ? e < 0 ? this[e + this.length] : this[e] : u.call(this) }, pushStack: function (e) { var t = m.merge(this.constructor(), e) return (t.prevObject = this), (t.context = this.context), t }, each: function (e) { return m.each(this, e) }, map: function (e) { return this.pushStack( m.map(this, function (t, n) { return e.call(t, n, t) }) ) }, slice: function () { return this.pushStack(u.apply(this, arguments)) }, first: function () { return this.eq(0) }, last: function () { return this.eq(-1) }, 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: c, sort: a.sort, splice: a.splice, }), (m.extend = m.fn.extend = function () { var e, t, n, i, o, a, s = arguments[0] || {}, u = 1, l = arguments.length, c = !1 for ( 'boolean' == typeof s && ((c = s), (s = arguments[u] || {}), u++), 'object' === r(s) || m.isFunction(s) || (s = {}), u === l && ((s = this), u--); u < l; u++ ) if (null != (e = arguments[u])) for (t in e) (n = s[t]), s !== (i = e[t]) && (c && i && (m.isPlainObject(i) || (o = m.isArray(i))) ? (o ? ((o = !1), (a = n && m.isArray(n) ? n : [])) : (a = n && m.isPlainObject(n) ? n : {}), (s[t] = m.extend(c, a, i))) : void 0 !== i && (s[t] = i)) return s }), m.extend({ expando: 'jQuery' + ('2.2.4' + Math.random()).replace(/\D/g, ''), isReady: !0, error: function (e) { throw new Error(e) }, noop: function () {}, isFunction: function (e) { return 'function' === m.type(e) }, isArray: Array.isArray, isWindow: function (e) { return null != e && e === e.window }, isNumeric: function (e) { var t = e && e.toString() return !m.isArray(e) && t - parseFloat(t) + 1 >= 0 }, isPlainObject: function (e) { var t if ('object' !== m.type(e) || e.nodeType || m.isWindow(e)) return !1 if ( e.constructor && !h.call(e, 'constructor') && !h.call(e.constructor.prototype || {}, 'isPrototypeOf') ) return !1 for (t in e); return void 0 === t || h.call(e, t) }, isEmptyObject: function (e) { var t for (t in e) return !1 return !0 }, type: function (e) { return null == e ? e + '' : 'object' === r(e) || 'function' == typeof e ? f[p.call(e)] || 'object' : r(e) }, globalEval: function (e) { var t, n = eval ;(e = m.trim(e)) && (1 === e.indexOf('use strict') ? (((t = s.createElement('script')).text = e), s.head.appendChild(t).parentNode.removeChild(t)) : n(e)) }, camelCase: function (e) { return e.replace(y, 'ms-').replace(b, x) }, nodeName: function (e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() }, each: function (e, t) { var n, r = 0 if (w(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 }, trim: function (e) { return null == e ? '' : (e + '').replace(g, '') }, makeArray: function (e, t) { var n = t || [] return ( null != e && (w(Object(e)) ? m.merge(n, 'string' == typeof e ? [e] : e) : c.call(n, e)), n ) }, inArray: function (e, t, n) { return null == t ? -1 : d.call(t, e, n) }, 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 (w(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 l.apply([], a) }, guid: 1, proxy: function (e, t) { var n, r, i if ( ('string' == typeof t && ((n = e[t]), (t = e), (e = n)), m.isFunction(e)) ) return ( (r = u.call(arguments, 2)), (i = function () { return e.apply(t || this, r.concat(u.call(arguments))) }), (i.guid = e.guid = e.guid || m.guid++), i ) }, now: Date.now, support: v, }), 'function' == typeof Symbol && (m.fn[Symbol.iterator] = a[Symbol.iterator]), m.each( 'Boolean Number String Function Array Date RegExp Object Error Symbol'.split( ' ' ), function (e, t) { f['[object ' + t + ']'] = t.toLowerCase() } ) var T = /*! * Sizzle CSS Selector Engine v2.2.1 * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2015-10-17 */ (function (e) { var t, n, r, i, o, a, s, u, l, c, d, f, p, h, v, m, g, y, b, x = 'sizzle' + 1 * new Date(), w = e.document, T = 0, C = 0, k = oe(), S = oe(), j = oe(), _ = function (e, t) { return e === t && (d = !0), 0 }, E = 1 << 31, N = {}.hasOwnProperty, A = [], D = A.pop, q = A.push, L = A.push, P = A.slice, O = function (e, t) { for (var n = 0, r = e.length; n < r; n++) if (e[n] === t) return n return -1 }, H = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped', M = '[\\x20\\t\\r\\n\\f]', F = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+', W = '\\[' + M + '*(' + F + ')(?:' + M + '*([*^$|!~]?=)' + M + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + F + '))|)' + M + '*\\]', R = ':(' + F + ')(?:\\(((\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|' + W + ')*)|.*)\\)|)', I = new RegExp(M + '+', 'g'), $ = new RegExp( '^' + M + '+|((?:^|[^\\\\])(?:\\\\.)*)' + M + '+$', 'g' ), B = new RegExp('^' + M + '*,' + M + '*'), z = new RegExp('^' + M + '*([>+~]|' + M + ')' + M + '*'), X = new RegExp('=' + M + '*([^\\]\'"]*?)' + M + '*\\]', 'g'), U = new RegExp(R), V = new RegExp('^' + F + '$'), G = { ID: new RegExp('^#(' + F + ')'), CLASS: new RegExp('^\\.(' + F + ')'), TAG: new RegExp('^(' + F + '|[*])'), ATTR: new RegExp('^' + W), PSEUDO: new RegExp('^' + R), CHILD: new RegExp( '^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + M + '*(even|odd|(([+-]|)(\\d*)n|)' + M + '*(?:([+-]|)' + M + '*(\\d+)|))' + M + '*\\)|)', 'i' ), bool: new RegExp('^(?:' + H + ')$', 'i'), needsContext: new RegExp( '^' + M + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + M + '*((?:-\\d)?\\d*)' + M + '*\\)|)(?=[^-]|$)', 'i' ), }, Y = /^(?:input|select|textarea|button)$/i, Q = /^h\d$/i, J = /^[^{]+\{\s*\[native \w/, K = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, Z = /[+~]/, ee = /'|\\/g, te = new RegExp( '\\\\([\\da-f]{1,6}' + M + '?|(' + M + ')|.)', 'ig' ), ne = function (e, t, n) { var r = '0x' + t - 65536 return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode((r >> 10) | 55296, (1023 & r) | 56320) }, re = function () { f() } try { L.apply((A = P.call(w.childNodes)), w.childNodes), A[w.childNodes.length].nodeType } catch (e) { L = { apply: A.length ? function (e, t) { q.apply(e, P.call(t)) } : function (e, t) { for (var n = e.length, r = 0; (e[n++] = t[r++]); ); e.length = n - 1 }, } } function ie(e, t, r, i) { var o, s, l, c, d, h, g, y, T = t && t.ownerDocument, C = t ? t.nodeType : 9 if ( ((r = r || []), 'string' != typeof e || !e || (1 !== C && 9 !== C && 11 !== C)) ) return r if ( !i && ((t ? t.ownerDocument || t : w) !== p && f(t), (t = t || p), v) ) { if (11 !== C && (h = K.exec(e))) if ((o = h[1])) { if (9 === C) { if (!(l = t.getElementById(o))) return r if (l.id === o) return r.push(l), r } else if ( T && (l = T.getElementById(o)) && b(t, l) && l.id === o ) return r.push(l), r } else { if (h[2]) return L.apply(r, t.getElementsByTagName(e)), r if ( (o = h[3]) && n.getElementsByClassName && t.getElementsByClassName ) return L.apply(r, t.getElementsByClassName(o)), r } if (n.qsa && !j[e + ' '] && (!m || !m.test(e))) { if (1 !== C) (T = t), (y = e) else if ('object' !== t.nodeName.toLowerCase()) { for ( (c = t.getAttribute('id')) ? (c = c.replace(ee, '\\$&')) : t.setAttribute('id', (c = x)), s = (g = a(e)).length, d = V.test(c) ? '#' + c : "[id='" + c + "']"; s--; ) g[s] = d + ' ' + ve(g[s]) ;(y = g.join(',')), (T = (Z.test(e) && pe(t.parentNode)) || t) } if (y) try { return L.apply(r, T.querySelectorAll(y)), r } catch (e) { } finally { c === x && t.removeAttribute('id') } } } return u(e.replace($, '$1'), t, r, i) } function oe() { var e = [] return function t(n, i) { return ( e.push(n + ' ') > r.cacheLength && delete t[e.shift()], (t[n + ' '] = i) ) } } function ae(e) { return (e[x] = !0), e } function se(e) { var t = p.createElement('div') try { return !!e(t) } catch (e) { return !1 } finally { t.parentNode && t.parentNode.removeChild(t), (t = null) } } function ue(e, t) { for (var n = e.split('|'), i = n.length; i--; ) r.attrHandle[n[i]] = t } function le(e, t) { var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || E) - (~e.sourceIndex || E) if (r) return r if (n) for (; (n = n.nextSibling); ) if (n === t) return -1 return e ? 1 : -1 } function ce(e) { return function (t) { return 'input' === t.nodeName.toLowerCase() && t.type === e } } function de(e) { return function (t) { var n = t.nodeName.toLowerCase() return ('input' === n || 'button' === n) && t.type === e } } function fe(e) { return ae(function (t) { return ( (t = +t), ae(function (n, r) { for (var i, o = e([], n.length, t), a = o.length; a--; ) n[(i = o[a])] && (n[i] = !(r[i] = n[i])) }) ) }) } function pe(e) { return e && void 0 !== e.getElementsByTagName && e } for (t in ((n = ie.support = {}), (o = ie.isXML = function (e) { var t = e && (e.ownerDocument || e).documentElement return !!t && 'HTML' !== t.nodeName }), (f = ie.setDocument = function (e) { var t, i, a = e ? e.ownerDocument || e : w return a !== p && 9 === a.nodeType && a.documentElement ? ((h = (p = a).documentElement), (v = !o(p)), (i = p.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener('unload', re, !1) : i.attachEvent && i.attachEvent('onunload', re)), (n.attributes = se(function (e) { return (e.className = 'i'), !e.getAttribute('className') })), (n.getElementsByTagName = se(function (e) { return ( e.appendChild(p.createComment('')), !e.getElementsByTagName('*').length ) })), (n.getElementsByClassName = J.test( p.getElementsByClassName )), (n.getById = se(function (e) { return ( (h.appendChild(e).id = x), !p.getElementsByName || !p.getElementsByName(x).length ) })), n.getById ? ((r.find.ID = function (e, t) { if (void 0 !== t.getElementById && v) { var n = t.getElementById(e) return n ? [n] : [] } }), (r.filter.ID = function (e) { var t = e.replace(te, ne) return function (e) { return e.getAttribute('id') === t } })) : (delete r.find.ID, (r.filter.ID = function (e) { var t = e.replace(te, ne) return function (e) { var n = void 0 !== e.getAttributeNode && e.getAttributeNode('id') return n && n.value === t } })), (r.find.TAG = n.getElementsByTagName ? function (e, t) { return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0 } : function (e, t) { var n, r = [], i = 0, o = t.getElementsByTagName(e) if ('*' === e) { for (; (n = o[i++]); ) 1 === n.nodeType && r.push(n) return r } return o }), (r.find.CLASS = n.getElementsByClassName && function (e, t) { if (void 0 !== t.getElementsByClassName && v) return t.getElementsByClassName(e) }), (g = []), (m = []), (n.qsa = J.test(p.querySelectorAll)) && (se(function (e) { ;(h.appendChild(e).innerHTML = ""), e.querySelectorAll("[msallowcapture^='']").length && m.push('[*^$]=' + M + '*(?:\'\'|"")'), e.querySelectorAll('[selected]').length || m.push('\\[' + M + '*(?:value|' + H + ')'), e.querySelectorAll('[id~=' + x + '-]').length || m.push('~='), e.querySelectorAll(':checked').length || m.push(':checked'), e.querySelectorAll('a#' + x + '+*').length || m.push('.#.+[+~]') }), se(function (e) { var t = p.createElement('input') t.setAttribute('type', 'hidden'), e.appendChild(t).setAttribute('name', 'D'), e.querySelectorAll('[name=d]').length && m.push('name' + M + '*[*^$|!~]?='), e.querySelectorAll(':enabled').length || m.push(':enabled', ':disabled'), e.querySelectorAll('*,:x'), m.push(',.*:') })), (n.matchesSelector = J.test( (y = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector) )) && se(function (e) { ;(n.disconnectedMatch = y.call(e, 'div')), y.call(e, "[s!='']:x"), g.push('!=', R) }), (m = m.length && new RegExp(m.join('|'))), (g = g.length && new RegExp(g.join('|'))), (t = J.test(h.compareDocumentPosition)), (b = t || J.test(h.contains) ? function (e, t) { var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode return ( e === r || !( !r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)) ) ) } : function (e, t) { if (t) for (; (t = t.parentNode); ) if (t === e) return !0 return !1 }), (_ = t ? function (e, t) { if (e === t) return (d = !0), 0 var r = !e.compareDocumentPosition - !t.compareDocumentPosition return ( r || (1 & (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || (!n.sortDetached && t.compareDocumentPosition(e) === r) ? e === p || (e.ownerDocument === w && b(w, e)) ? -1 : t === p || (t.ownerDocument === w && b(w, t)) ? 1 : c ? O(c, e) - O(c, t) : 0 : 4 & r ? -1 : 1) ) } : function (e, t) { if (e === t) return (d = !0), 0 var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], s = [t] if (!i || !o) return e === p ? -1 : t === p ? 1 : i ? -1 : o ? 1 : c ? O(c, e) - O(c, t) : 0 if (i === o) return le(e, t) for (n = e; (n = n.parentNode); ) a.unshift(n) for (n = t; (n = n.parentNode); ) s.unshift(n) for (; a[r] === s[r]; ) r++ return r ? le(a[r], s[r]) : a[r] === w ? -1 : s[r] === w ? 1 : 0 }), p) : p }), (ie.matches = function (e, t) { return ie(e, null, null, t) }), (ie.matchesSelector = function (e, t) { if ( ((e.ownerDocument || e) !== p && f(e), (t = t.replace(X, "='$1']")), n.matchesSelector && v && !j[t + ' '] && (!g || !g.test(t)) && (!m || !m.test(t))) ) try { var r = y.call(e, t) if ( r || n.disconnectedMatch || (e.document && 11 !== e.document.nodeType) ) return r } catch (e) {} return ie(t, p, null, [e]).length > 0 }), (ie.contains = function (e, t) { return (e.ownerDocument || e) !== p && f(e), b(e, t) }), (ie.attr = function (e, t) { ;(e.ownerDocument || e) !== p && f(e) var i = r.attrHandle[t.toLowerCase()], o = i && N.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !v) : void 0 return void 0 !== o ? o : n.attributes || !v ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null }), (ie.error = function (e) { throw new Error('Syntax error, unrecognized expression: ' + e) }), (ie.uniqueSort = function (e) { var t, r = [], i = 0, o = 0 if ( ((d = !n.detectDuplicates), (c = !n.sortStable && e.slice(0)), e.sort(_), d) ) { for (; (t = e[o++]); ) t === e[o] && (i = r.push(o)) for (; i--; ) e.splice(r[i], 1) } return (c = null), e }), (i = ie.getText = function (e) { var t, n = '', r = 0, o = e.nodeType if (o) { if (1 === o || 9 === o || 11 === o) { if ('string' == typeof e.textContent) return e.textContent for (e = e.firstChild; e; e = e.nextSibling) n += i(e) } else if (3 === o || 4 === o) return e.nodeValue } else for (; (t = e[r++]); ) n += i(t) return n }), ((r = ie.selectors = { cacheLength: 50, createPseudo: ae, match: G, 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(te, ne)), (e[3] = (e[3] || e[4] || e[5] || '').replace(te, ne)), '~=' === 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] || ie.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] && ie.error(e[0]), e ) }, PSEUDO: function (e) { var t, n = !e[6] && e[2] return G.CHILD.test(e[0]) ? null : (e[3] ? (e[2] = e[4] || e[5] || '') : n && U.test(n) && (t = a(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(te, ne).toLowerCase() return '*' === e ? function () { return !0 } : function (e) { return e.nodeName && e.nodeName.toLowerCase() === t } }, CLASS: function (e) { var t = k[e + ' '] return ( t || ((t = new RegExp( '(^|' + M + ')' + e + '(' + M + '|$)' )) && k(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 = ie.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(I, ' ') + ' ').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), a = 'last' !== e.slice(-4), s = 'of-type' === t return 1 === r && 0 === i ? function (e) { return !!e.parentNode } : function (t, n, u) { var l, c, d, f, p, h, v = o !== a ? 'nextSibling' : 'previousSibling', m = t.parentNode, g = s && t.nodeName.toLowerCase(), y = !u && !s, b = !1 if (m) { if (o) { for (; v; ) { for (f = t; (f = f[v]); ) if ( s ? f.nodeName.toLowerCase() === g : 1 === f.nodeType ) return !1 h = v = 'only' === e && !h && 'nextSibling' } return !0 } if ( ((h = [a ? m.firstChild : m.lastChild]), a && y) ) { for ( b = (p = (l = (c = (d = (f = m)[x] || (f[x] = {}))[ f.uniqueID ] || (d[f.uniqueID] = {}))[e] || [])[0] === T && l[1]) && l[2], f = p && m.childNodes[p]; (f = (++p && f && f[v]) || (b = p = 0) || h.pop()); ) if (1 === f.nodeType && ++b && f === t) { c[e] = [T, p, b] break } } else if ( (y && (b = p = (l = (c = (d = (f = t)[x] || (f[x] = {}))[ f.uniqueID ] || (d[f.uniqueID] = {}))[e] || [])[0] === T && l[1]), !1 === b) ) for ( ; (f = (++p && f && f[v]) || (b = p = 0) || h.pop()) && ((s ? f.nodeName.toLowerCase() !== g : 1 !== f.nodeType) || !++b || (y && ((c = (d = f[x] || (f[x] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] = [T, b]), f !== t)); ); return (b -= i) === r || (b % r == 0 && b / r >= 0) } } }, PSEUDO: function (e, t) { var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || ie.error('unsupported pseudo: ' + e) return i[x] ? i(t) : i.length > 1 ? ((n = [e, e, '', t]), r.setFilters.hasOwnProperty(e.toLowerCase()) ? ae(function (e, n) { for (var r, o = i(e, t), a = o.length; a--; ) e[(r = O(e, o[a]))] = !(n[r] = o[a]) }) : function (e) { return i(e, 0, n) }) : i }, }, pseudos: { not: ae(function (e) { var t = [], n = [], r = s(e.replace($, '$1')) return r[x] ? ae(function (e, t, n, i) { for ( var o, a = r(e, null, i, []), s = e.length; s--; ) (o = a[s]) && (e[s] = !(t[s] = o)) }) : function (e, i, o) { return ( (t[0] = e), r(t, null, o, n), (t[0] = null), !n.pop() ) } }), has: ae(function (e) { return function (t) { return ie(e, t).length > 0 } }), contains: ae(function (e) { return ( (e = e.replace(te, ne)), function (t) { return ( (t.textContent || t.innerText || i(t)).indexOf(e) > -1 ) } ) }), lang: ae(function (e) { return ( V.test(e || '') || ie.error('unsupported lang: ' + e), (e = e.replace(te, ne).toLowerCase()), function (t) { var n do { if ( (n = v ? 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 === h }, focus: function (e) { return ( e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) ) }, enabled: function (e) { return !1 === e.disabled }, disabled: function (e) { return !0 === e.disabled }, checked: function (e) { var t = e.nodeName.toLowerCase() return ( ('input' === t && !!e.checked) || ('option' === t && !!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 Q.test(e.nodeName) }, input: function (e) { return Y.test(e.nodeName) }, button: function (e) { var t = e.nodeName.toLowerCase() return ( ('input' === t && 'button' === e.type) || 'button' === t ) }, text: function (e) { var t return ( 'input' === e.nodeName.toLowerCase() && 'text' === e.type && (null == (t = e.getAttribute('type')) || 'text' === t.toLowerCase()) ) }, first: fe(function () { return [0] }), last: fe(function (e, t) { return [t - 1] }), eq: fe(function (e, t, n) { return [n < 0 ? n + t : n] }), even: fe(function (e, t) { for (var n = 0; n < t; n += 2) e.push(n) return e }), odd: fe(function (e, t) { for (var n = 1; n < t; n += 2) e.push(n) return e }), lt: fe(function (e, t, n) { for (var r = n < 0 ? n + t : n; --r >= 0; ) e.push(r) return e }), gt: fe(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r) return e }), }, }).pseudos.nth = r.pseudos.eq), { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })) r.pseudos[t] = ce(t) for (t in { submit: !0, reset: !0 }) r.pseudos[t] = de(t) function he() {} function ve(e) { for (var t = 0, n = e.length, r = ''; t < n; t++) r += e[t].value return r } function me(e, t, n) { var r = t.dir, i = n && 'parentNode' === r, o = C++ return t.first ? function (t, n, o) { for (; (t = t[r]); ) if (1 === t.nodeType || i) return e(t, n, o) } : function (t, n, a) { var s, u, l, c = [T, o] if (a) { for (; (t = t[r]); ) if ((1 === t.nodeType || i) && e(t, n, a)) return !0 } else for (; (t = t[r]); ) if (1 === t.nodeType || i) { if ( (s = (u = (l = t[x] || (t[x] = {}))[t.uniqueID] || (l[t.uniqueID] = {}))[r]) && s[0] === T && s[1] === o ) return (c[2] = s[2]) if (((u[r] = c), (c[2] = e(t, n, a)))) return !0 } } } function ge(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 ye(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 be(e, t, n, r, i, o) { return ( r && !r[x] && (r = be(r)), i && !i[x] && (i = be(i, o)), ae(function (o, a, s, u) { var l, c, d, f = [], p = [], h = a.length, v = o || (function (e, t, n) { for (var r = 0, i = t.length; r < i; r++) ie(e, t[r], n) return n })(t || '*', s.nodeType ? [s] : s, []), m = !e || (!o && t) ? v : ye(v, f, e, s, u), g = n ? (i || (o ? e : h || r) ? [] : a) : m if ((n && n(m, g, s, u), r)) for (l = ye(g, p), r(l, [], s, u), c = l.length; c--; ) (d = l[c]) && (g[p[c]] = !(m[p[c]] = d)) if (o) { if (i || e) { if (i) { for (l = [], c = g.length; c--; ) (d = g[c]) && l.push((m[c] = d)) i(null, (g = []), l, u) } for (c = g.length; c--; ) (d = g[c]) && (l = i ? O(o, d) : f[c]) > -1 && (o[l] = !(a[l] = d)) } } else (g = ye(g === a ? g.splice(h, g.length) : g)), i ? i(null, a, g, u) : L.apply(a, g) }) ) } function xe(e) { for ( var t, n, i, o = e.length, a = r.relative[e[0].type], s = a || r.relative[' '], u = a ? 1 : 0, c = me( function (e) { return e === t }, s, !0 ), d = me( function (e) { return O(t, e) > -1 }, s, !0 ), f = [ function (e, n, r) { var i = (!a && (r || n !== l)) || ((t = n).nodeType ? c(e, n, r) : d(e, n, r)) return (t = null), i }, ]; u < o; u++ ) if ((n = r.relative[e[u].type])) f = [me(ge(f), n)] else { if ((n = r.filter[e[u].type].apply(null, e[u].matches))[x]) { for (i = ++u; i < o && !r.relative[e[i].type]; i++); return be( u > 1 && ge(f), u > 1 && ve( e .slice(0, u - 1) .concat({ value: ' ' === e[u - 2].type ? '*' : '' }) ).replace($, '$1'), n, u < i && xe(e.slice(u, i)), i < o && xe((e = e.slice(i))), i < o && ve(e) ) } f.push(n) } return ge(f) } return ( (he.prototype = r.filters = r.pseudos), (r.setFilters = new he()), (a = ie.tokenize = function (e, t) { var n, i, o, a, s, u, l, c = S[e + ' '] if (c) return t ? 0 : c.slice(0) for (s = e, u = [], l = r.preFilter; s; ) { for (a in ((n && !(i = B.exec(s))) || (i && (s = s.slice(i[0].length) || s), u.push((o = []))), (n = !1), (i = z.exec(s)) && ((n = i.shift()), o.push({ value: n, type: i[0].replace($, ' ') }), (s = s.slice(n.length))), r.filter)) !(i = G[a].exec(s)) || (l[a] && !(i = l[a](i))) || ((n = i.shift()), o.push({ value: n, type: a, matches: i }), (s = s.slice(n.length))) if (!n) break } return t ? s.length : s ? ie.error(e) : S(e, u).slice(0) }), (s = ie.compile = function (e, t) { var n, i = [], o = [], s = j[e + ' '] if (!s) { for (t || (t = a(e)), n = t.length; n--; ) (s = xe(t[n]))[x] ? i.push(s) : o.push(s) ;(s = j( e, (function (e, t) { var n = t.length > 0, i = e.length > 0, o = function (o, a, s, u, c) { var d, h, m, g = 0, y = '0', b = o && [], x = [], w = l, C = o || (i && r.find.TAG('*', c)), k = (T += null == w ? 1 : Math.random() || 0.1), S = C.length for ( c && (l = a === p || a || c); y !== S && null != (d = C[y]); y++ ) { if (i && d) { for ( h = 0, a || d.ownerDocument === p || (f(d), (s = !v)); (m = e[h++]); ) if (m(d, a || p, s)) { u.push(d) break } c && (T = k) } n && ((d = !m && d) && g--, o && b.push(d)) } if (((g += y), n && y !== g)) { for (h = 0; (m = t[h++]); ) m(b, x, a, s) if (o) { if (g > 0) for (; y--; ) b[y] || x[y] || (x[y] = D.call(u)) x = ye(x) } L.apply(u, x), c && !o && x.length > 0 && g + t.length > 1 && ie.uniqueSort(u) } return c && ((T = k), (l = w)), b } return n ? ae(o) : o })(o, i) )).selector = e } return s }), (u = ie.select = function (e, t, i, o) { var u, l, c, d, f, p = 'function' == typeof e && e, h = !o && a((e = p.selector || e)) if (((i = i || []), 1 === h.length)) { if ( (l = h[0] = h[0].slice(0)).length > 2 && 'ID' === (c = l[0]).type && n.getById && 9 === t.nodeType && v && r.relative[l[1].type] ) { if ( !(t = (r.find.ID(c.matches[0].replace(te, ne), t) || [])[0]) ) return i p && (t = t.parentNode), (e = e.slice(l.shift().value.length)) } for ( u = G.needsContext.test(e) ? 0 : l.length; u-- && ((c = l[u]), !r.relative[(d = c.type)]); ) if ( (f = r.find[d]) && (o = f( c.matches[0].replace(te, ne), (Z.test(l[0].type) && pe(t.parentNode)) || t )) ) { if ((l.splice(u, 1), !(e = o.length && ve(l)))) return L.apply(i, o), i break } } return ( (p || s(e, h))( o, t, !v, i, !t || (Z.test(e) && pe(t.parentNode)) || t ), i ) }), (n.sortStable = x.split('').sort(_).join('') === x), (n.detectDuplicates = !!d), f(), (n.sortDetached = se(function (e) { return 1 & e.compareDocumentPosition(p.createElement('div')) })), se(function (e) { return ( (e.innerHTML = ""), '#' === e.firstChild.getAttribute('href') ) }) || ue('type|href|height|width', function (e, t, n) { if (!n) return e.getAttribute(t, 'type' === t.toLowerCase() ? 1 : 2) }), (n.attributes && se(function (e) { return ( (e.innerHTML = ''), e.firstChild.setAttribute('value', ''), '' === e.firstChild.getAttribute('value') ) })) || ue('value', function (e, t, n) { if (!n && 'input' === e.nodeName.toLowerCase()) return e.defaultValue }), se(function (e) { return null == e.getAttribute('disabled') }) || ue(H, function (e, t, n) { var r if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }), ie ) })(i) ;(m.find = T), (m.expr = T.selectors), (m.expr[':'] = m.expr.pseudos), (m.uniqueSort = m.unique = T.uniqueSort), (m.text = T.getText), (m.isXMLDoc = T.isXML), (m.contains = T.contains) var C = function (e, t, n) { for (var r = [], i = void 0 !== n; (e = e[t]) && 9 !== e.nodeType; ) if (1 === e.nodeType) { if (i && m(e).is(n)) break r.push(e) } return r }, k = function (e, t) { for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e) return n }, S = m.expr.match.needsContext, j = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/, _ = /^.[^:#\[\.,]*$/ function E(e, t, n) { if (m.isFunction(t)) return m.grep(e, function (e, r) { return !!t.call(e, r, e) !== n }) if (t.nodeType) return m.grep(e, function (e) { return (e === t) !== n }) if ('string' == typeof t) { if (_.test(t)) return m.filter(t, e, n) t = m.filter(t, e) } return m.grep(e, function (e) { return d.call(t, e) > -1 !== n }) } ;(m.filter = function (e, t, n) { var r = t[0] return ( n && (e = ':not(' + e + ')'), 1 === t.length && 1 === r.nodeType ? m.find.matchesSelector(r, e) ? [r] : [] : m.find.matches( e, m.grep(t, function (e) { return 1 === e.nodeType }) ) ) }), m.fn.extend({ find: function (e) { var t, n = this.length, r = [], i = this if ('string' != typeof e) return this.pushStack( m(e).filter(function () { for (t = 0; t < n; t++) if (m.contains(i[t], this)) return !0 }) ) for (t = 0; t < n; t++) m.find(e, i[t], r) return ( ((r = this.pushStack(n > 1 ? m.unique(r) : r)).selector = this .selector ? this.selector + ' ' + e : e), r ) }, filter: function (e) { return this.pushStack(E(this, e || [], !1)) }, not: function (e) { return this.pushStack(E(this, e || [], !0)) }, is: function (e) { return !!E( this, 'string' == typeof e && S.test(e) ? m(e) : e || [], !1 ).length }, }) var N, A = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ ;((m.fn.init = function (e, t, n) { var r, i if (!e) return this if (((n = n || N), 'string' == typeof e)) { if ( !(r = '<' === e[0] && '>' === e[e.length - 1] && e.length >= 3 ? [null, e, null] : A.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 m ? t[0] : t), m.merge( this, m.parseHTML( r[1], t && t.nodeType ? t.ownerDocument || t : s, !0 ) ), j.test(r[1]) && m.isPlainObject(t)) ) for (r in t) m.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]) return this } return ( (i = s.getElementById(r[2])) && i.parentNode && ((this.length = 1), (this[0] = i)), (this.context = s), (this.selector = e), this ) } return e.nodeType ? ((this.context = this[0] = e), (this.length = 1), this) : m.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(m) : (void 0 !== e.selector && ((this.selector = e.selector), (this.context = e.context)), m.makeArray(e, this)) }).prototype = m.fn), (N = m(s)) var D = /^(?:parents|prev(?:Until|All))/, q = { children: !0, contents: !0, next: !0, prev: !0 } function L(e, t) { for (; (e = e[t]) && 1 !== e.nodeType; ); return e } m.fn.extend({ has: function (e) { var t = m(e, this), n = t.length return this.filter(function () { for (var e = 0; e < n; e++) if (m.contains(this, t[e])) return !0 }) }, closest: function (e, t) { for ( var n, r = 0, i = this.length, o = [], a = S.test(e) || 'string' != typeof e ? m(e, t || this.context) : 0; r < i; r++ ) for (n = this[r]; n && n !== t; n = n.parentNode) if ( n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && m.find.matchesSelector(n, e)) ) { o.push(n) break } return this.pushStack(o.length > 1 ? m.uniqueSort(o) : o) }, index: function (e) { return e ? 'string' == typeof e ? d.call(m(e), this[0]) : d.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 }, add: function (e, t) { return this.pushStack(m.uniqueSort(m.merge(this.get(), m(e, t)))) }, addBack: function (e) { return this.add( null == e ? this.prevObject : this.prevObject.filter(e) ) }, }), m.each( { parent: function (e) { var t = e.parentNode return t && 11 !== t.nodeType ? t : null }, parents: function (e) { return C(e, 'parentNode') }, parentsUntil: function (e, t, n) { return C(e, 'parentNode', n) }, next: function (e) { return L(e, 'nextSibling') }, prev: function (e) { return L(e, 'previousSibling') }, nextAll: function (e) { return C(e, 'nextSibling') }, prevAll: function (e) { return C(e, 'previousSibling') }, nextUntil: function (e, t, n) { return C(e, 'nextSibling', n) }, prevUntil: function (e, t, n) { return C(e, 'previousSibling', n) }, siblings: function (e) { return k((e.parentNode || {}).firstChild, e) }, children: function (e) { return k(e.firstChild) }, contents: function (e) { return e.contentDocument || m.merge([], e.childNodes) }, }, function (e, t) { m.fn[e] = function (n, r) { var i = m.map(this, t, n) return ( 'Until' !== e.slice(-5) && (r = n), r && 'string' == typeof r && (i = m.filter(r, i)), this.length > 1 && (q[e] || m.uniqueSort(i), D.test(e) && i.reverse()), this.pushStack(i) ) } } ) var P, O = /\S+/g function H() { s.removeEventListener('DOMContentLoaded', H), i.removeEventListener('load', H), m.ready() } ;(m.Callbacks = function (e) { e = 'string' == typeof e ? (function (e) { var t = {} return ( m.each(e.match(O) || [], function (e, n) { t[n] = !0 }), t ) })(e) : m.extend({}, e) var t, n, r, i, o = [], a = [], s = -1, u = function () { for (i = e.once, r = t = !0; a.length; s = -1) for (n = a.shift(); ++s < o.length; ) !1 === o[s].apply(n[0], n[1]) && e.stopOnFalse && ((s = o.length), (n = !1)) e.memory || (n = !1), (t = !1), i && (o = n ? [] : '') }, l = { add: function () { return ( o && (n && !t && ((s = o.length - 1), a.push(n)), (function t(n) { m.each(n, function (n, r) { m.isFunction(r) ? (e.unique && l.has(r)) || o.push(r) : r && r.length && 'string' !== m.type(r) && t(r) }) })(arguments), n && !t && u()), this ) }, remove: function () { return ( m.each(arguments, function (e, t) { for (var n; (n = m.inArray(t, o, n)) > -1; ) o.splice(n, 1), n <= s && s-- }), this ) }, has: function (e) { return e ? m.inArray(e, o) > -1 : o.length > 0 }, empty: function () { return o && (o = []), this }, disable: function () { return (i = a = []), (o = n = ''), this }, disabled: function () { return !o }, lock: function () { return (i = a = []), n || (o = n = ''), this }, locked: function () { return !!i }, fireWith: function (e, n) { return ( i || ((n = [e, (n = n || []).slice ? n.slice() : n]), a.push(n), t || u()), this ) }, fire: function () { return l.fireWith(this, arguments), this }, fired: function () { return !!r }, } return l }), m.extend({ Deferred: function (e) { var t = [ ['resolve', 'done', m.Callbacks('once memory'), 'resolved'], ['reject', 'fail', m.Callbacks('once memory'), 'rejected'], ['notify', 'progress', m.Callbacks('memory')], ], n = 'pending', r = { state: function () { return n }, always: function () { return i.done(arguments).fail(arguments), this }, then: function () { var e = arguments return m .Deferred(function (n) { m.each(t, function (t, o) { var a = m.isFunction(e[t]) && e[t] i[o[1]](function () { var e = a && a.apply(this, arguments) e && m.isFunction(e.promise) ? e .promise() .progress(n.notify) .done(n.resolve) .fail(n.reject) : n[o[0] + 'With']( this === r ? n.promise() : this, a ? [e] : arguments ) }) }), (e = null) }) .promise() }, promise: function (e) { return null != e ? m.extend(e, r) : r }, }, i = {} return ( (r.pipe = r.then), m.each(t, function (e, o) { var a = o[2], s = o[3] ;(r[o[1]] = a.add), s && a.add( function () { n = s }, t[1 ^ e][2].disable, t[2][2].lock ), (i[o[0]] = function () { return ( i[o[0] + 'With'](this === i ? r : this, arguments), this ) }), (i[o[0] + 'With'] = a.fireWith) }), r.promise(i), e && e.call(i, i), i ) }, when: function (e) { var t, n, r, i = 0, o = u.call(arguments), a = o.length, s = 1 !== a || (e && m.isFunction(e.promise)) ? a : 0, l = 1 === s ? e : m.Deferred(), c = function (e, n, r) { return function (i) { ;(n[e] = this), (r[e] = arguments.length > 1 ? u.call(arguments) : i), r === t ? l.notifyWith(n, r) : --s || l.resolveWith(n, r) } } if (a > 1) for ( t = new Array(a), n = new Array(a), r = new Array(a); i < a; i++ ) o[i] && m.isFunction(o[i].promise) ? o[i] .promise() .progress(c(i, n, t)) .done(c(i, r, o)) .fail(l.reject) : --s return s || l.resolveWith(r, o), l.promise() }, }), (m.fn.ready = function (e) { return m.ready.promise().done(e), this }), m.extend({ isReady: !1, readyWait: 1, holdReady: function (e) { e ? m.readyWait++ : m.ready(!0) }, ready: function (e) { ;(!0 === e ? --m.readyWait : m.isReady) || ((m.isReady = !0), (!0 !== e && --m.readyWait > 0) || (P.resolveWith(s, [m]), m.fn.triggerHandler && (m(s).triggerHandler('ready'), m(s).off('ready')))) }, }), (m.ready.promise = function (e) { return ( P || ((P = m.Deferred()), 'complete' === s.readyState || ('loading' !== s.readyState && !s.documentElement.doScroll) ? i.setTimeout(m.ready) : (s.addEventListener('DOMContentLoaded', H), i.addEventListener('load', H))), P.promise(e) ) }), m.ready.promise() var M = function e(t, n, r, i, o, a, s) { var u = 0, l = t.length, c = null == r if ('object' === m.type(r)) for (u in ((o = !0), r)) e(t, n, u, r[u], !0, a, s) else if ( void 0 !== i && ((o = !0), m.isFunction(i) || (s = !0), c && (s ? (n.call(t, i), (n = null)) : ((c = n), (n = function (e, t, n) { return c.call(m(e), n) }))), n) ) for (; u < l; u++) n(t[u], r, s ? i : i.call(t[u], u, n(t[u], r))) return o ? t : c ? n.call(t) : l ? n(t[0], r) : a }, F = function (e) { return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType } function W() { this.expando = m.expando + W.uid++ } ;(W.uid = 1), (W.prototype = { register: function (e, t) { var n = t || {} return ( e.nodeType ? (e[this.expando] = n) : Object.defineProperty(e, this.expando, { value: n, writable: !0, configurable: !0, }), e[this.expando] ) }, cache: function (e) { if (!F(e)) return {} var t = e[this.expando] return ( t || ((t = {}), F(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[t] = n else for (r in t) i[r] = t[r] return i }, get: function (e, t) { return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][t] }, access: function (e, t, n) { var r return void 0 === t || (t && 'string' == typeof t && void 0 === n) ? void 0 !== (r = this.get(e, t)) ? r : this.get(e, m.camelCase(t)) : (this.set(e, t, n), void 0 !== n ? n : t) }, remove: function (e, t) { var n, r, i, o = e[this.expando] if (void 0 !== o) { if (void 0 === t) this.register(e) else { m.isArray(t) ? (r = t.concat(t.map(m.camelCase))) : ((i = m.camelCase(t)), (r = t in o ? [t, i] : (r = i) in o ? [r] : r.match(O) || [])), (n = r.length) for (; n--; ) delete o[r[n]] } ;(void 0 === t || m.isEmptyObject(o)) && (e.nodeType ? (e[this.expando] = void 0) : delete e[this.expando]) } }, hasData: function (e) { var t = e[this.expando] return void 0 !== t && !m.isEmptyObject(t) }, }) var R = new W(), I = new W(), $ = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, B = /[A-Z]/g function z(e, t, n) { var r if (void 0 === n && 1 === e.nodeType) if ( ((r = 'data-' + t.replace(B, '-$&').toLowerCase()), 'string' == typeof (n = e.getAttribute(r))) ) { try { n = 'true' === n || ('false' !== n && ('null' === n ? null : +n + '' === n ? +n : $.test(n) ? m.parseJSON(n) : n)) } catch (e) {} I.set(e, t, n) } else n = void 0 return n } m.extend({ hasData: function (e) { return I.hasData(e) || R.hasData(e) }, data: function (e, t, n) { return I.access(e, t, n) }, removeData: function (e, t) { I.remove(e, t) }, _data: function (e, t, n) { return R.access(e, t, n) }, _removeData: function (e, t) { R.remove(e, t) }, }), m.fn.extend({ data: function (e, t) { var n, i, o, a = this[0], s = a && a.attributes if (void 0 === e) { if ( this.length && ((o = I.get(a)), 1 === a.nodeType && !R.get(a, 'hasDataAttrs')) ) { for (n = s.length; n--; ) s[n] && 0 === (i = s[n].name).indexOf('data-') && ((i = m.camelCase(i.slice(5))), z(a, i, o[i])) R.set(a, 'hasDataAttrs', !0) } return o } return 'object' === r(e) ? this.each(function () { I.set(this, e) }) : M( this, function (t) { var n, r if (a && void 0 === t) return void 0 !== (n = I.get(a, e) || I.get(a, e.replace(B, '-$&').toLowerCase())) ? n : ((r = m.camelCase(e)), void 0 !== (n = I.get(a, r)) ? n : void 0 !== (n = z(a, r, void 0)) ? n : void 0) ;(r = m.camelCase(e)), this.each(function () { var n = I.get(this, r) I.set(this, r, t), e.indexOf('-') > -1 && void 0 !== n && I.set(this, e, t) }) }, null, t, arguments.length > 1, null, !0 ) }, removeData: function (e) { return this.each(function () { I.remove(this, e) }) }, }), m.extend({ queue: function (e, t, n) { var r if (e) return ( (t = (t || 'fx') + 'queue'), (r = R.get(e, t)), n && (!r || m.isArray(n) ? (r = R.access(e, t, m.makeArray(n))) : r.push(n)), r || [] ) }, dequeue: function (e, t) { t = t || 'fx' var n = m.queue(e, t), r = n.length, i = n.shift(), o = m._queueHooks(e, t) 'inprogress' === i && ((i = n.shift()), r--), i && ('fx' === t && n.unshift('inprogress'), delete o.stop, i.call( e, function () { m.dequeue(e, t) }, o )), !r && o && o.empty.fire() }, _queueHooks: function (e, t) { var n = t + 'queueHooks' return ( R.get(e, n) || R.access(e, n, { empty: m.Callbacks('once memory').add(function () { R.remove(e, [t + 'queue', n]) }), }) ) }, }), m.fn.extend({ queue: function (e, t) { var n = 2 return ( 'string' != typeof e && ((t = e), (e = 'fx'), n--), arguments.length < n ? m.queue(this[0], e) : void 0 === t ? this : this.each(function () { var n = m.queue(this, e, t) m._queueHooks(this, e), 'fx' === e && 'inprogress' !== n[0] && m.dequeue(this, e) }) ) }, dequeue: function (e) { return this.each(function () { m.dequeue(this, e) }) }, clearQueue: function (e) { return this.queue(e || 'fx', []) }, promise: function (e, t) { var n, r = 1, i = m.Deferred(), o = this, a = this.length, s = function () { --r || i.resolveWith(o, [o]) } for ( 'string' != typeof e && ((t = e), (e = void 0)), e = e || 'fx'; a--; ) (n = R.get(o[a], e + 'queueHooks')) && n.empty && (r++, n.empty.add(s)) return s(), i.promise(t) }, }) var X = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, U = new RegExp('^(?:([+-])=|)(' + X + ')([a-z%]*)$', 'i'), V = ['Top', 'Right', 'Bottom', 'Left'], G = function (e, t) { return ( (e = t || e), 'none' === m.css(e, 'display') || !m.contains(e.ownerDocument, e) ) } function Y(e, t, n, r) { var i, o = 1, a = 20, s = r ? function () { return r.cur() } : function () { return m.css(e, t, '') }, u = s(), l = (n && n[3]) || (m.cssNumber[t] ? '' : 'px'), c = (m.cssNumber[t] || ('px' !== l && +u)) && U.exec(m.css(e, t)) if (c && c[3] !== l) { ;(l = l || c[3]), (n = n || []), (c = +u || 1) do { ;(c /= o = o || '.5'), m.style(e, t, c + l) } while (o !== (o = s() / u) && 1 !== o && --a) } 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 Q = /^(?:checkbox|radio)$/i, J = /<([\w:-]+)/, K = /^$|\/(?:java|ecma)script/i, Z = { option: [1, "'], thead: [1, '', '
'], col: [2, '', '
'], tr: [2, '', '
'], td: [3, '', '
'], _default: [0, '', ''], } function ee(e, t) { var n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || '*') : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || '*') : [] return void 0 === t || (t && m.nodeName(e, t)) ? m.merge([e], n) : n } function te(e, t) { for (var n = 0, r = e.length; n < r; n++) R.set(e[n], 'globalEval', !t || R.get(t[n], 'globalEval')) } ;(Z.optgroup = Z.option), (Z.tbody = Z.tfoot = Z.colgroup = Z.caption = Z.thead), (Z.th = Z.td) var ne = /<|&#?\w+;/ function re(e, t, n, r, i) { for ( var o, a, s, u, l, c, d = t.createDocumentFragment(), f = [], p = 0, h = e.length; p < h; p++ ) if ((o = e[p]) || 0 === o) if ('object' === m.type(o)) m.merge(f, o.nodeType ? [o] : o) else if (ne.test(o)) { for ( a = a || d.appendChild(t.createElement('div')), s = (J.exec(o) || ['', ''])[1].toLowerCase(), u = Z[s] || Z._default, a.innerHTML = u[1] + m.htmlPrefilter(o) + u[2], c = u[0]; c--; ) a = a.lastChild m.merge(f, a.childNodes), ((a = d.firstChild).textContent = '') } else f.push(t.createTextNode(o)) for (d.textContent = '', p = 0; (o = f[p++]); ) if (r && m.inArray(o, r) > -1) i && i.push(o) else if ( ((l = m.contains(o.ownerDocument, o)), (a = ee(d.appendChild(o), 'script')), l && te(a), n) ) for (c = 0; (o = a[c++]); ) K.test(o.type || '') && n.push(o) return d } !(function () { var e = s .createDocumentFragment() .appendChild(s.createElement('div')), t = s.createElement('input') t.setAttribute('type', 'radio'), t.setAttribute('checked', 'checked'), t.setAttribute('name', 't'), e.appendChild(t), (v.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked), (e.innerHTML = ''), (v.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue) })() var ie = /^key/, oe = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, ae = /^([^.]*)(?:\.(.+)|)/ function se() { return !0 } function ue() { return !1 } function le() { try { return s.activeElement } catch (e) {} } function ce(e, t, n, i, o, a) { var s, u if ('object' === r(t)) { for (u in ('string' != typeof n && ((i = i || n), (n = void 0)), t)) ce(e, u, n, i, t[u], a) return e } if ( (null == i && null == o ? ((o = n), (i = n = void 0)) : null == o && ('string' == typeof n ? ((o = i), (i = void 0)) : ((o = i), (i = n), (n = void 0))), !1 === o) ) o = ue else if (!o) return e return ( 1 === a && ((s = o), ((o = function (e) { return m().off(e), s.apply(this, arguments) }).guid = s.guid || (s.guid = m.guid++))), e.each(function () { m.event.add(this, t, o, i, n) }) ) } ;(m.event = { global: {}, add: function (e, t, n, r, i) { var o, a, s, u, l, c, d, f, p, h, v, g = R.get(e) if (g) for ( n.handler && ((n = (o = n).handler), (i = o.selector)), n.guid || (n.guid = m.guid++), (u = g.events) || (u = g.events = {}), (a = g.handle) || (a = g.handle = function (t) { return void 0 !== m && m.event.triggered !== t.type ? m.event.dispatch.apply(e, arguments) : void 0 }), l = (t = (t || '').match(O) || ['']).length; l--; ) (p = v = (s = ae.exec(t[l]) || [])[1]), (h = (s[2] || '').split('.').sort()), p && ((d = m.event.special[p] || {}), (p = (i ? d.delegateType : d.bindType) || p), (d = m.event.special[p] || {}), (c = m.extend( { type: p, origType: v, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && m.expr.match.needsContext.test(i), namespace: h.join('.'), }, o )), (f = u[p]) || (((f = u[p] = []).delegateCount = 0), (d.setup && !1 !== d.setup.call(e, r, h, a)) || (e.addEventListener && e.addEventListener(p, a))), d.add && (d.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, c) : f.push(c), (m.event.global[p] = !0)) }, remove: function (e, t, n, r, i) { var o, a, s, u, l, c, d, f, p, h, v, g = R.hasData(e) && R.get(e) if (g && (u = g.events)) { for (l = (t = (t || '').match(O) || ['']).length; l--; ) if ( ((p = v = (s = ae.exec(t[l]) || [])[1]), (h = (s[2] || '').split('.').sort()), p) ) { for ( d = m.event.special[p] || {}, f = u[(p = (r ? d.delegateType : d.bindType) || p)] || [], s = s[2] && new RegExp( '(^|\\.)' + h.join('\\.(?:.*\\.|)') + '(\\.|$)' ), a = o = f.length; o--; ) (c = f[o]), (!i && v !== c.origType) || (n && n.guid !== c.guid) || (s && !s.test(c.namespace)) || (r && r !== c.selector && ('**' !== r || !c.selector)) || (f.splice(o, 1), c.selector && f.delegateCount--, d.remove && d.remove.call(e, c)) a && !f.length && ((d.teardown && !1 !== d.teardown.call(e, h, g.handle)) || m.removeEvent(e, p, g.handle), delete u[p]) } else for (p in u) m.event.remove(e, p + t[l], n, r, !0) m.isEmptyObject(u) && R.remove(e, 'handle events') } }, dispatch: function (e) { e = m.event.fix(e) var t, n, r, i, o, a, s = u.call(arguments), l = (R.get(this, 'events') || {})[e.type] || [], c = m.event.special[e.type] || {} if ( ((s[0] = e), (e.delegateTarget = this), !c.preDispatch || !1 !== c.preDispatch.call(this, e)) ) { for ( a = m.event.handlers.call(this, e, l), t = 0; (i = a[t++]) && !e.isPropagationStopped(); ) for ( e.currentTarget = i.elem, n = 0; (o = i.handlers[n++]) && !e.isImmediatePropagationStopped(); ) (e.rnamespace && !e.rnamespace.test(o.namespace)) || ((e.handleObj = o), (e.data = o.data), void 0 !== (r = ( (m.event.special[o.origType] || {}).handle || o.handler ).apply(i.elem, s)) && !1 === (e.result = r) && (e.preventDefault(), e.stopPropagation())) return c.postDispatch && c.postDispatch.call(this, e), e.result } }, handlers: function (e, t) { var n, r, i, o, a = [], s = t.delegateCount, u = e.target if ( s && u.nodeType && ('click' !== e.type || isNaN(e.button) || e.button < 1) ) for (; u !== this; u = u.parentNode || this) if ( 1 === u.nodeType && (!0 !== u.disabled || 'click' !== e.type) ) { for (r = [], n = 0; n < s; n++) void 0 === r[(i = (o = t[n]).selector + ' ')] && (r[i] = o.needsContext ? m(i, this).index(u) > -1 : m.find(i, this, null, [u]).length), r[i] && r.push(o) r.length && a.push({ elem: u, handlers: r }) } return ( s < t.length && a.push({ elem: this, handlers: t.slice(s) }), a ) }, props: 'altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which'.split( ' ' ), fixHooks: {}, keyHooks: { props: 'char charCode key keyCode'.split(' '), filter: function (e, t) { return ( null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e ) }, }, mouseHooks: { props: 'button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement'.split( ' ' ), filter: function (e, t) { var n, r, i, o = t.button return ( null == e.pageX && null != t.clientX && ((r = (n = e.target.ownerDocument || s).documentElement), (i = n.body), (e.pageX = t.clientX + ((r && r.scrollLeft) || (i && i.scrollLeft) || 0) - ((r && r.clientLeft) || (i && i.clientLeft) || 0)), (e.pageY = t.clientY + ((r && r.scrollTop) || (i && i.scrollTop) || 0) - ((r && r.clientTop) || (i && i.clientTop) || 0))), e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), e ) }, }, fix: function (e) { if (e[m.expando]) return e var t, n, r, i = e.type, o = e, a = this.fixHooks[i] for ( a || (this.fixHooks[i] = a = oe.test(i) ? this.mouseHooks : ie.test(i) ? this.keyHooks : {}), r = a.props ? this.props.concat(a.props) : this.props, e = new m.Event(o), t = r.length; t--; ) e[(n = r[t])] = o[n] return ( e.target || (e.target = s), 3 === e.target.nodeType && (e.target = e.target.parentNode), a.filter ? a.filter(e, o) : e ) }, special: { load: { noBubble: !0 }, focus: { trigger: function () { if (this !== le() && this.focus) return this.focus(), !1 }, delegateType: 'focusin', }, blur: { trigger: function () { if (this === le() && this.blur) return this.blur(), !1 }, delegateType: 'focusout', }, click: { trigger: function () { if ( 'checkbox' === this.type && this.click && m.nodeName(this, 'input') ) return this.click(), !1 }, _default: function (e) { return m.nodeName(e.target, 'a') }, }, beforeunload: { postDispatch: function (e) { void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) }, }, }, }), (m.removeEvent = function (e, t, n) { e.removeEventListener && e.removeEventListener(t, n) }), (m.Event = function (e, t) { if (!(this instanceof m.Event)) return new m.Event(e, t) e && e.type ? ((this.originalEvent = e), (this.type = e.type), (this.isDefaultPrevented = e.defaultPrevented || (void 0 === e.defaultPrevented && !1 === e.returnValue) ? se : ue)) : (this.type = e), t && m.extend(this, t), (this.timeStamp = (e && e.timeStamp) || m.now()), (this[m.expando] = !0) }), (m.Event.prototype = { constructor: m.Event, isDefaultPrevented: ue, isPropagationStopped: ue, isImmediatePropagationStopped: ue, isSimulated: !1, preventDefault: function () { var e = this.originalEvent ;(this.isDefaultPrevented = se), e && !this.isSimulated && e.preventDefault() }, stopPropagation: function () { var e = this.originalEvent ;(this.isPropagationStopped = se), e && !this.isSimulated && e.stopPropagation() }, stopImmediatePropagation: function () { var e = this.originalEvent ;(this.isImmediatePropagationStopped = se), e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation() }, }), m.each( { mouseenter: 'mouseover', mouseleave: 'mouseout', pointerenter: 'pointerover', pointerleave: 'pointerout', }, function (e, t) { m.event.special[e] = { delegateType: t, bindType: t, handle: function (e) { var n, r = e.relatedTarget, i = e.handleObj return ( (r && (r === this || m.contains(this, r))) || ((e.type = i.origType), (n = i.handler.apply(this, arguments)), (e.type = t)), n ) }, } } ), m.fn.extend({ on: function (e, t, n, r) { return ce(this, e, t, n, r) }, one: function (e, t, n, r) { return ce(this, e, t, n, r, 1) }, off: function (e, t, n) { var i, o if (e && e.preventDefault && e.handleObj) return ( (i = e.handleObj), m(e.delegateTarget).off( i.namespace ? i.origType + '.' + i.namespace : i.origType, i.selector, i.handler ), this ) if ('object' === r(e)) { for (o in e) this.off(o, t, e[o]) return this } return ( (!1 !== t && 'function' != typeof t) || ((n = t), (t = void 0)), !1 === n && (n = ue), this.each(function () { m.event.remove(this, e, n, t) }) ) }, }) var de = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, fe = /\s*$/g function me(e, t) { return m.nodeName(e, 'table') && m.nodeName(11 !== t.nodeType ? t : t.firstChild, 'tr') ? e.getElementsByTagName('tbody')[0] || e.appendChild(e.ownerDocument.createElement('tbody')) : e } function ge(e) { return (e.type = (null !== e.getAttribute('type')) + '/' + e.type), e } function ye(e) { var t = he.exec(e.type) return t ? (e.type = t[1]) : e.removeAttribute('type'), e } function be(e, t) { var n, r, i, o, a, s, u, l if (1 === t.nodeType) { if ( R.hasData(e) && ((o = R.access(e)), (a = R.set(t, o)), (l = o.events)) ) for (i in (delete a.handle, (a.events = {}), l)) for (n = 0, r = l[i].length; n < r; n++) m.event.add(t, i, l[i][n]) I.hasData(e) && ((s = I.access(e)), (u = m.extend({}, s)), I.set(t, u)) } } function xe(e, t) { var n = t.nodeName.toLowerCase() 'input' === n && Q.test(e.type) ? (t.checked = e.checked) : ('input' !== n && 'textarea' !== n) || (t.defaultValue = e.defaultValue) } function we(e, t, n, r) { t = l.apply([], t) var i, o, a, s, u, c, d = 0, f = e.length, p = f - 1, h = t[0], g = m.isFunction(h) if ( g || (f > 1 && 'string' == typeof h && !v.checkClone && pe.test(h)) ) return e.each(function (i) { var o = e.eq(i) g && (t[0] = h.call(this, i, o.html())), we(o, t, n, r) }) if ( f && ((o = (i = re(t, e[0].ownerDocument, !1, e, r)).firstChild), 1 === i.childNodes.length && (i = o), o || r) ) { for (s = (a = m.map(ee(i, 'script'), ge)).length; d < f; d++) (u = i), d !== p && ((u = m.clone(u, !0, !0)), s && m.merge(a, ee(u, 'script'))), n.call(e[d], u, d) if (s) for ( c = a[a.length - 1].ownerDocument, m.map(a, ye), d = 0; d < s; d++ ) (u = a[d]), K.test(u.type || '') && !R.access(u, 'globalEval') && m.contains(c, u) && (u.src ? m._evalUrl && m._evalUrl(u.src) : m.globalEval(u.textContent.replace(ve, ''))) } return e } function Te(e, t, n) { for ( var r, i = t ? m.filter(t, e) : e, o = 0; null != (r = i[o]); o++ ) n || 1 !== r.nodeType || m.cleanData(ee(r)), r.parentNode && (n && m.contains(r.ownerDocument, r) && te(ee(r, 'script')), r.parentNode.removeChild(r)) return e } m.extend({ htmlPrefilter: function (e) { return e.replace(de, '<$1>') }, clone: function (e, t, n) { var r, i, o, a, s = e.cloneNode(!0), u = m.contains(e.ownerDocument, e) if ( !( v.noCloneChecked || (1 !== e.nodeType && 11 !== e.nodeType) || m.isXMLDoc(e) ) ) for (a = ee(s), r = 0, i = (o = ee(e)).length; r < i; r++) xe(o[r], a[r]) if (t) if (n) for ( o = o || ee(e), a = a || ee(s), r = 0, i = o.length; r < i; r++ ) be(o[r], a[r]) else be(e, s) return ( (a = ee(s, 'script')).length > 0 && te(a, !u && ee(e, 'script')), s ) }, cleanData: function (e) { for ( var t, n, r, i = m.event.special, o = 0; void 0 !== (n = e[o]); o++ ) if (F(n)) { if ((t = n[R.expando])) { if (t.events) for (r in t.events) i[r] ? m.event.remove(n, r) : m.removeEvent(n, r, t.handle) n[R.expando] = void 0 } n[I.expando] && (n[I.expando] = void 0) } }, }), m.fn.extend({ domManip: we, detach: function (e) { return Te(this, e, !0) }, remove: function (e) { return Te(this, e) }, text: function (e) { return M( this, function (e) { return void 0 === e ? m.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 we(this, arguments, function (e) { ;(1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType) || me(this, e).appendChild(e) }) }, prepend: function () { return we(this, arguments, function (e) { if ( 1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType ) { var t = me(this, e) t.insertBefore(e, t.firstChild) } }) }, before: function () { return we(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function () { return we(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 && (m.cleanData(ee(e, !1)), (e.textContent = '')) return this }, clone: function (e, t) { return ( (e = null != e && e), (t = null == t ? e : t), this.map(function () { return m.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 && !fe.test(e) && !Z[(J.exec(e) || ['', ''])[1].toLowerCase()] ) { e = m.htmlPrefilter(e) try { for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (m.cleanData(ee(t, !1)), (t.innerHTML = e)) t = 0 } catch (e) {} } t && this.empty().append(e) }, null, e, arguments.length ) }, replaceWith: function () { var e = [] return we( this, arguments, function (t) { var n = this.parentNode m.inArray(this, e) < 0 && (m.cleanData(ee(this)), n && n.replaceChild(t, this)) }, e ) }, }), m.each( { appendTo: 'append', prependTo: 'prepend', insertBefore: 'before', insertAfter: 'after', replaceAll: 'replaceWith', }, function (e, t) { m.fn[e] = function (e) { for ( var n, r = [], i = m(e), o = i.length - 1, a = 0; a <= o; a++ ) (n = a === o ? this : this.clone(!0)), m(i[a])[t](n), c.apply(r, n.get()) return this.pushStack(r) } } ) var Ce, ke = { HTML: 'block', BODY: 'block' } function Se(e, t) { var n = m(t.createElement(e)).appendTo(t.body), r = m.css(n[0], 'display') return n.detach(), r } function je(e) { var t = s, n = ke[e] return ( n || (('none' !== (n = Se(e, t)) && n) || ((t = (Ce = ( Ce || m("', error: '

The requested content cannot be loaded.
Please try again later.

', closeBtn: '', next: '', prev: '', }, openEffect: 'fade', openSpeed: 250, openEasing: 'swing', openOpacity: !0, openMethod: 'zoomIn', closeEffect: 'fade', closeSpeed: 250, closeEasing: 'swing', closeOpacity: !0, closeMethod: 'zoomOut', nextEffect: 'elastic', nextSpeed: 250, nextEasing: 'swing', nextMethod: 'changeIn', prevEffect: 'elastic', prevSpeed: 250, prevEasing: 'swing', prevMethod: 'changeOut', helpers: { overlay: !0, title: !0 }, onCancel: f.noop, beforeLoad: f.noop, afterLoad: f.noop, beforeShow: f.noop, afterShow: f.noop, beforeChange: f.noop, beforeClose: f.noop, afterClose: f.noop, }, group: {}, opts: {}, previous: null, coming: null, current: null, isActive: !1, isOpen: !1, isOpened: !1, wrap: null, skin: null, outer: null, inner: null, player: { timer: null, isActive: !1 }, ajaxLoad: null, imgPreload: null, transitions: {}, helpers: {}, open: function (a, d) { if (a && (f.isPlainObject(d) || (d = {}), !1 !== b.close(!0))) return ( f.isArray(a) || (a = t(a) ? f(a).get() : [a]), f.each(a, function (e, c) { var k = {}, g, h, j, m, l 'object' === f.type(c) && (c.nodeType && (c = f(c)), t(c) ? ((k = { href: c.data('fancybox-href') || c.attr('href'), title: c.data('fancybox-title') || c.attr('title'), isDom: !0, element: c, }), f.metadata && f.extend(!0, k, c.metadata())) : (k = c)) g = d.href || k.href || (q(c) ? c : null) h = d.title !== v ? d.title : k.title || '' m = (j = d.content || k.content) ? 'html' : d.type || k.type !m && k.isDom && ((m = c.data('fancybox-type')), m || (m = (m = c.prop('class').match(/fancybox\.(\w+)/)) ? m[1] : null)) q(g) && (m || (b.isImage(g) ? (m = 'image') : b.isSWF(g) ? (m = 'swf') : '#' === g.charAt(0) ? (m = 'inline') : q(c) && ((m = 'html'), (j = c))), 'ajax' === m && ((l = g.split(/\s+/, 2)), (g = l.shift()), (l = l.shift()))) j || ('inline' === m ? g ? (j = f(q(g) ? g.replace(/.*(?=#[^\s]+$)/, '') : g)) : k.isDom && (j = c) : 'html' === m ? (j = g) : !m && !g && k.isDom && ((m = 'inline'), (j = c))) f.extend(k, { href: g, type: m, content: j, title: h, selector: l }) a[e] = k }), (b.opts = f.extend(!0, {}, b.defaults, d)), d.keys !== v && (b.opts.keys = d.keys ? f.extend({}, b.defaults.keys, d.keys) : !1), (b.group = a), b._start(b.opts.index) ) }, cancel: function () { var a = b.coming a && !1 !== b.trigger('onCancel') && (b.hideLoading(), b.ajaxLoad && b.ajaxLoad.abort(), (b.ajaxLoad = null), b.imgPreload && (b.imgPreload.onload = b.imgPreload.onerror = null), a.wrap && a.wrap.stop(!0, !0).trigger('onReset').remove(), (b.coming = null), b.current || b._afterZoomOut(a)) }, close: function (a) { b.cancel() !1 !== b.trigger('beforeClose') && (b.unbindEvents(), b.isActive && (!b.isOpen || !0 === a ? (f('.fancybox-wrap').stop(!0).trigger('onReset').remove(), b._afterZoomOut()) : ((b.isOpen = b.isOpened = !1), (b.isClosing = !0), f('.fancybox-item, .fancybox-nav').remove(), b.wrap.stop(!0, !0).removeClass('fancybox-opened'), b.transitions[b.current.closeMethod]()))) }, play: function (a) { var d = function () { clearTimeout(b.player.timer) }, e = function () { d() b.current && b.player.isActive && (b.player.timer = setTimeout(b.next, b.current.playSpeed)) }, c = function () { d() p.unbind('.player') b.player.isActive = !1 b.trigger('onPlayEnd') } if (!0 === a || (!b.player.isActive && !1 !== a)) { if ( b.current && (b.current.loop || b.current.index < b.group.length - 1) ) (b.player.isActive = !0), p.bind({ 'onCancel.player beforeClose.player': c, 'onUpdate.player': e, 'beforeLoad.player': d, }), e(), b.trigger('onPlayStart') } else c() }, next: function (a) { var d = b.current d && (q(a) || (a = d.direction.next), b.jumpto(d.index + 1, a, 'next')) }, prev: function (a) { var d = b.current d && (q(a) || (a = d.direction.prev), b.jumpto(d.index - 1, a, 'prev')) }, jumpto: function (a, d, e) { var c = b.current c && ((a = l(a)), (b.direction = d || c.direction[a >= c.index ? 'next' : 'prev']), (b.router = e || 'jumpto'), c.loop && (0 > a && (a = c.group.length + (a % c.group.length)), (a %= c.group.length)), c.group[a] !== v && (b.cancel(), b._start(a))) }, reposition: function (a, d) { var e = b.current, c = e ? e.wrap : null, k c && ((k = b._getPosition(d)), a && 'scroll' === a.type ? (delete k.position, c.stop(!0, !0).animate(k, 200)) : (c.css(k), (e.pos = f.extend({}, e.dim, k)))) }, update: function (a) { var d = a && a.type, e = !d || 'orientationchange' === d e && (clearTimeout(B), (B = null)) b.isOpen && !B && (B = setTimeout( function () { var c = b.current c && !b.isClosing && (b.wrap.removeClass('fancybox-tmp'), (e || 'load' === d || ('resize' === d && c.autoResize)) && b._setDimension(), ('scroll' === d && c.canShrink) || b.reposition(a), b.trigger('onUpdate'), (B = null)) }, e && !s ? 0 : 300 )) }, toggle: function (a) { b.isOpen && ((b.current.fitToView = 'boolean' === f.type(a) ? a : !b.current.fitToView), s && (b.wrap.removeAttr('style').addClass('fancybox-tmp'), b.trigger('onUpdate')), b.update()) }, hideLoading: function () { p.unbind('.loading') f('#fancybox-loading').remove() }, showLoading: function () { var a, d b.hideLoading() a = f('
') .click(b.cancel) .appendTo('body') p.bind('keydown.loading', function (a) { if (27 === (a.which || a.keyCode)) a.preventDefault(), b.cancel() }) b.defaults.fixed || ((d = b.getViewport()), a.css({ position: 'absolute', top: 0.5 * d.h + d.y, left: 0.5 * d.w + d.x, })) }, getViewport: function () { var a = (b.current && b.current.locked) || !1, d = { x: n.scrollLeft(), y: n.scrollTop() } a ? ((d.w = a[0].clientWidth), (d.h = a[0].clientHeight)) : ((d.w = s && r.innerWidth ? r.innerWidth : n.width()), (d.h = s && r.innerHeight ? r.innerHeight : n.height())) return d }, unbindEvents: function () { b.wrap && t(b.wrap) && b.wrap.unbind('.fb') p.unbind('.fb') n.unbind('.fb') }, bindEvents: function () { var a = b.current, d a && (n.bind( 'orientationchange.fb' + (s ? '' : ' resize.fb') + (a.autoCenter && !a.locked ? ' scroll.fb' : ''), b.update ), (d = a.keys) && p.bind('keydown.fb', function (e) { var c = e.which || e.keyCode, k = e.target || e.srcElement if (27 === c && b.coming) return !1 !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && (!k || (!k.type && !f(k).is('[contenteditable]'))) && f.each(d, function (d, k) { if (1 < a.group.length && k[c] !== v) return b[d](k[c]), e.preventDefault(), !1 if (-1 < f.inArray(c, k)) return b[d](), e.preventDefault(), !1 }) }), f.fn.mousewheel && a.mouseWheel && b.wrap.bind('mousewheel.fb', function (d, c, k, g) { for ( var h = f(d.target || null), j = !1; h.length && !j && !h.is('.fancybox-skin') && !h.is('.fancybox-wrap'); ) (j = h[0] && !(h[0].style.overflow && 'hidden' === h[0].style.overflow) && ((h[0].clientWidth && h[0].scrollWidth > h[0].clientWidth) || (h[0].clientHeight && h[0].scrollHeight > h[0].clientHeight))), (h = f(h).parent()) if (0 !== c && !j && 1 < b.group.length && !a.canShrink) { if (0 < g || 0 < k) b.prev(0 < g ? 'down' : 'left') else if (0 > g || 0 > k) b.next(0 > g ? 'up' : 'right') d.preventDefault() } })) }, trigger: function (a, d) { var e, c = d || b.coming || b.current if (c) { f.isFunction(c[a]) && (e = c[a].apply(c, Array.prototype.slice.call(arguments, 1))) if (!1 === e) return !1 c.helpers && f.each(c.helpers, function (d, e) { if (e && b.helpers[d] && f.isFunction(b.helpers[d][a])) b.helpers[d][a](f.extend(!0, {}, b.helpers[d].defaults, e), c) }) p.trigger(a) } }, isImage: function (a) { return ( q(a) && a.match( /(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i ) ) }, isSWF: function (a) { return q(a) && a.match(/\.(swf)((\?|#).*)?$/i) }, _start: function (a) { var d = {}, e, c a = l(a) e = b.group[a] || null if (!e) return !1 d = f.extend(!0, {}, b.opts, e) e = d.margin c = d.padding 'number' === f.type(e) && (d.margin = [e, e, e, e]) 'number' === f.type(c) && (d.padding = [c, c, c, c]) d.modal && f.extend(!0, d, { closeBtn: !1, closeClick: !1, nextClick: !1, arrows: !1, mouseWheel: !1, keys: null, helpers: { overlay: { closeClick: !1 } }, }) d.autoSize && (d.autoWidth = d.autoHeight = !0) 'auto' === d.width && (d.autoWidth = !0) 'auto' === d.height && (d.autoHeight = !0) d.group = b.group d.index = a b.coming = d if (!1 === b.trigger('beforeLoad')) b.coming = null else { c = d.type e = d.href if (!c) return ( (b.coming = null), b.current && b.router && 'jumpto' !== b.router ? ((b.current.index = a), b[b.router](b.direction)) : !1 ) b.isActive = !0 if ('image' === c || 'swf' === c) (d.autoHeight = d.autoWidth = !1), (d.scrolling = 'visible') 'image' === c && (d.aspectRatio = !0) 'iframe' === c && s && (d.scrolling = 'scroll') d.wrap = f(d.tpl.wrap) .addClass( 'fancybox-' + (s ? 'mobile' : 'desktop') + ' fancybox-type-' + c + ' fancybox-tmp ' + d.wrapCSS ) .appendTo(d.parent || 'body') f.extend(d, { skin: f('.fancybox-skin', d.wrap), outer: f('.fancybox-outer', d.wrap), inner: f('.fancybox-inner', d.wrap), }) f.each(['Top', 'Right', 'Bottom', 'Left'], function (a, b) { d.skin.css('padding' + b, w(d.padding[a])) }) b.trigger('onReady') if ('inline' === c || 'html' === c) { if (!d.content || !d.content.length) return b._error('content') } else if (!e) return b._error('href') 'image' === c ? b._loadImage() : 'ajax' === c ? b._loadAjax() : 'iframe' === c ? b._loadIframe() : b._afterLoad() } }, _error: function (a) { f.extend(b.coming, { type: 'html', autoWidth: !0, autoHeight: !0, minWidth: 0, minHeight: 0, scrolling: 'no', hasError: a, content: b.coming.tpl.error, }) b._afterLoad() }, _loadImage: function () { var a = (b.imgPreload = new Image()) a.onload = function () { this.onload = this.onerror = null b.coming.width = this.width / b.opts.pixelRatio b.coming.height = this.height / b.opts.pixelRatio b._afterLoad() } a.onerror = function () { this.onload = this.onerror = null b._error('image') } a.src = b.coming.href !0 !== a.complete && b.showLoading() }, _loadAjax: function () { var a = b.coming b.showLoading() b.ajaxLoad = f.ajax( f.extend({}, a.ajax, { url: a.href, error: function (a, e) { b.coming && 'abort' !== e ? b._error('ajax', a) : b.hideLoading() }, success: function (d, e) { 'success' === e && ((a.content = d), b._afterLoad()) }, }) ) }, _loadIframe: function () { var a = b.coming, d = f(a.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) .attr('scrolling', s ? 'auto' : a.iframe.scrolling) .attr('src', a.href) f(a.wrap).bind('onReset', function () { try { f(this) .find('iframe') .hide() .attr('src', '//about:blank') .end() .empty() } catch (a) {} }) a.iframe.preload && (b.showLoading(), d.one('load', function () { f(this).data('ready', 1) s || f(this).bind('load.fb', b.update) f(this) .parents('.fancybox-wrap') .width('100%') .removeClass('fancybox-tmp') .show() b._afterLoad() })) a.content = d.appendTo(a.inner) a.iframe.preload || b._afterLoad() }, _preloadImages: function () { var a = b.group, d = b.current, e = a.length, c = d.preload ? Math.min(d.preload, e - 1) : 0, f, g for (g = 1; g <= c; g += 1) (f = a[(d.index + g) % e]), 'image' === f.type && f.href && (new Image().src = f.href) }, _afterLoad: function () { var a = b.coming, d = b.current, e, c, k, g, h b.hideLoading() if (a && !1 !== b.isActive) if (!1 === b.trigger('afterLoad', a, d)) a.wrap.stop(!0).trigger('onReset').remove(), (b.coming = null) else { d && (b.trigger('beforeChange', d), d.wrap .stop(!0) .removeClass('fancybox-opened') .find('.fancybox-item, .fancybox-nav') .remove()) b.unbindEvents() e = a.content c = a.type k = a.scrolling f.extend(b, { wrap: a.wrap, skin: a.skin, outer: a.outer, inner: a.inner, current: a, previous: d, }) g = a.href switch (c) { case 'inline': case 'ajax': case 'html': a.selector ? (e = f('
').html(e).find(a.selector)) : t(e) && (e.data('fancybox-placeholder') || e.data( 'fancybox-placeholder', f('
') .insertAfter(e) .hide() ), (e = e.show().detach()), a.wrap.bind('onReset', function () { f(this).find(e).length && e .hide() .replaceAll(e.data('fancybox-placeholder')) .data('fancybox-placeholder', !1) })) break case 'image': e = a.tpl.image.replace('{href}', g) break case 'swf': ;(e = ''), (h = ''), f.each(a.swf, function (a, b) { e += '' h += ' ' + a + '="' + b + '"' }), (e += '') } ;(!t(e) || !e.parent().is(a.inner)) && a.inner.append(e) b.trigger('beforeShow') a.inner.css( 'overflow', 'yes' === k ? 'scroll' : 'no' === k ? 'hidden' : k ) b._setDimension() b.reposition() b.isOpen = !1 b.coming = null b.bindEvents() if (b.isOpened) { if (d.prevMethod) b.transitions[d.prevMethod]() } else f('.fancybox-wrap').not(a.wrap).stop(!0).trigger('onReset').remove() b.transitions[b.isOpened ? a.nextMethod : a.openMethod]() b._preloadImages() } }, _setDimension: function () { var a = b.getViewport(), d = 0, e = !1, c = !1, e = b.wrap, k = b.skin, g = b.inner, h = b.current, c = h.width, j = h.height, m = h.minWidth, u = h.minHeight, n = h.maxWidth, p = h.maxHeight, s = h.scrolling, q = h.scrollOutside ? h.scrollbarWidth : 0, x = h.margin, y = l(x[1] + x[3]), r = l(x[0] + x[2]), v, z, t, C, A, F, B, D, H e.add(k).add(g).width('auto').height('auto').removeClass('fancybox-tmp') x = l(k.outerWidth(!0) - k.width()) v = l(k.outerHeight(!0) - k.height()) z = y + x t = r + v C = E(c) ? ((a.w - z) * l(c)) / 100 : c A = E(j) ? ((a.h - t) * l(j)) / 100 : j if ('iframe' === h.type) { if (((H = h.content), h.autoHeight && 1 === H.data('ready'))) try { H[0].contentWindow.document.location && (g.width(C).height(9999), (F = H.contents().find('body')), q && F.css('overflow-x', 'hidden'), (A = F.outerHeight(!0))) } catch (G) {} } else if (h.autoWidth || h.autoHeight) g.addClass('fancybox-tmp'), h.autoWidth || g.width(C), h.autoHeight || g.height(A), h.autoWidth && (C = g.width()), h.autoHeight && (A = g.height()), g.removeClass('fancybox-tmp') c = l(C) j = l(A) D = C / A m = l(E(m) ? l(m, 'w') - z : m) n = l(E(n) ? l(n, 'w') - z : n) u = l(E(u) ? l(u, 'h') - t : u) p = l(E(p) ? l(p, 'h') - t : p) F = n B = p h.fitToView && ((n = Math.min(a.w - z, n)), (p = Math.min(a.h - t, p))) z = a.w - y r = a.h - r h.aspectRatio ? (c > n && ((c = n), (j = l(c / D))), j > p && ((j = p), (c = l(j * D))), c < m && ((c = m), (j = l(c / D))), j < u && ((j = u), (c = l(j * D)))) : ((c = Math.max(m, Math.min(c, n))), h.autoHeight && 'iframe' !== h.type && (g.width(c), (j = g.height())), (j = Math.max(u, Math.min(j, p)))) if (h.fitToView) if ( (g.width(c).height(j), e.width(c + x), (a = e.width()), (y = e.height()), h.aspectRatio) ) for (; (a > z || y > r) && c > m && j > u && !(19 < d++); ) (j = Math.max(u, Math.min(p, j - 10))), (c = l(j * D)), c < m && ((c = m), (j = l(c / D))), c > n && ((c = n), (j = l(c / D))), g.width(c).height(j), e.width(c + x), (a = e.width()), (y = e.height()) else (c = Math.max(m, Math.min(c, c - (a - z)))), (j = Math.max(u, Math.min(j, j - (y - r)))) q && 'auto' === s && j < A && c + x + q < z && (c += q) g.width(c).height(j) e.width(c + x) a = e.width() y = e.height() e = (a > z || y > r) && c > m && j > u c = h.aspectRatio ? c < F && j < B && c < C && j < A : (c < F || j < B) && (c < C || j < A) f.extend(h, { dim: { width: w(a), height: w(y) }, origWidth: C, origHeight: A, canShrink: e, canExpand: c, wPadding: x, hPadding: v, wrapSpace: y - k.outerHeight(!0), skinSpace: k.height() - j, }) !H && h.autoHeight && j > u && j < p && !c && g.height('auto') }, _getPosition: function (a) { var d = b.current, e = b.getViewport(), c = d.margin, f = b.wrap.width() + c[1] + c[3], g = b.wrap.height() + c[0] + c[2], c = { position: 'absolute', top: c[0], left: c[3] } d.autoCenter && d.fixed && !a && g <= e.h && f <= e.w ? (c.position = 'fixed') : d.locked || ((c.top += e.y), (c.left += e.x)) c.top = w(Math.max(c.top, c.top + (e.h - g) * d.topRatio)) c.left = w(Math.max(c.left, c.left + (e.w - f) * d.leftRatio)) return c }, _afterZoomIn: function () { var a = b.current a && ((b.isOpen = b.isOpened = !0), b.wrap.css('overflow', 'visible').addClass('fancybox-opened'), b.update(), (a.closeClick || (a.nextClick && 1 < b.group.length)) && b.inner.css('cursor', 'pointer').bind('click.fb', function (d) { !f(d.target).is('a') && !f(d.target).parent().is('a') && (d.preventDefault(), b[a.closeClick ? 'close' : 'next']()) }), a.closeBtn && f(a.tpl.closeBtn) .appendTo(b.skin) .bind('click.fb', function (a) { a.preventDefault() b.close() }), a.arrows && 1 < b.group.length && ((a.loop || 0 < a.index) && f(a.tpl.prev).appendTo(b.outer).bind('click.fb', b.prev), (a.loop || a.index < b.group.length - 1) && f(a.tpl.next).appendTo(b.outer).bind('click.fb', b.next)), b.trigger('afterShow'), !a.loop && a.index === a.group.length - 1 ? b.play(!1) : b.opts.autoPlay && !b.player.isActive && ((b.opts.autoPlay = !1), b.play())) }, _afterZoomOut: function (a) { a = a || b.current f('.fancybox-wrap').trigger('onReset').remove() f.extend(b, { group: {}, opts: {}, router: !1, current: null, isActive: !1, isOpened: !1, isOpen: !1, isClosing: !1, wrap: null, skin: null, outer: null, inner: null, }) b.trigger('afterClose', a) }, }) b.transitions = { getOrigPosition: function () { var a = b.current, d = a.element, e = a.orig, c = {}, f = 50, g = 50, h = a.hPadding, j = a.wPadding, m = b.getViewport() !e && a.isDom && d.is(':visible') && ((e = d.find('img:first')), e.length || (e = d)) t(e) ? ((c = e.offset()), e.is('img') && ((f = e.outerWidth()), (g = e.outerHeight()))) : ((c.top = m.y + (m.h - g) * a.topRatio), (c.left = m.x + (m.w - f) * a.leftRatio)) if ('fixed' === b.wrap.css('position') || a.locked) (c.top -= m.y), (c.left -= m.x) return (c = { top: w(c.top - h * a.topRatio), left: w(c.left - j * a.leftRatio), width: w(f + j), height: w(g + h), }) }, step: function (a, d) { var e, c, f = d.prop c = b.current var g = c.wrapSpace, h = c.skinSpace if ('width' === f || 'height' === f) (e = d.end === d.start ? 1 : (a - d.start) / (d.end - d.start)), b.isClosing && (e = 1 - e), (c = 'width' === f ? c.wPadding : c.hPadding), (c = a - c), b.skin[f](l('width' === f ? c : c - g * e)), b.inner[f](l('width' === f ? c : c - g * e - h * e)) }, zoomIn: function () { var a = b.current, d = a.pos, e = a.openEffect, c = 'elastic' === e, k = f.extend({ opacity: 1 }, d) delete k.position c ? ((d = this.getOrigPosition()), a.openOpacity && (d.opacity = 0.1)) : 'fade' === e && (d.opacity = 0.1) b.wrap .css(d) .animate(k, { duration: 'none' === e ? 0 : a.openSpeed, easing: a.openEasing, step: c ? this.step : null, complete: b._afterZoomIn, }) }, zoomOut: function () { var a = b.current, d = a.closeEffect, e = 'elastic' === d, c = { opacity: 0.1 } e && ((c = this.getOrigPosition()), a.closeOpacity && (c.opacity = 0.1)) b.wrap.animate(c, { duration: 'none' === d ? 0 : a.closeSpeed, easing: a.closeEasing, step: e ? this.step : null, complete: b._afterZoomOut, }) }, changeIn: function () { var a = b.current, d = a.nextEffect, e = a.pos, c = { opacity: 1 }, f = b.direction, g e.opacity = 0.1 'elastic' === d && ((g = 'down' === f || 'up' === f ? 'top' : 'left'), 'down' === f || 'right' === f ? ((e[g] = w(l(e[g]) - 200)), (c[g] = '+=200px')) : ((e[g] = w(l(e[g]) + 200)), (c[g] = '-=200px'))) 'none' === d ? b._afterZoomIn() : b.wrap .css(e) .animate(c, { duration: a.nextSpeed, easing: a.nextEasing, complete: b._afterZoomIn, }) }, changeOut: function () { var a = b.previous, d = a.prevEffect, e = { opacity: 0.1 }, c = b.direction 'elastic' === d && (e['down' === c || 'up' === c ? 'top' : 'left'] = ('up' === c || 'left' === c ? '-' : '+') + '=200px') a.wrap.animate(e, { duration: 'none' === d ? 0 : a.prevSpeed, easing: a.prevEasing, complete: function () { f(this).trigger('onReset').remove() }, }) }, } b.helpers.overlay = { defaults: { closeClick: !0, speedOut: 200, showEarly: !0, css: {}, locked: !s, fixed: !0, }, overlay: null, fixed: !1, el: f('html'), create: function (a) { a = f.extend({}, this.defaults, a) this.overlay && this.close() this.overlay = f('
').appendTo( b.coming ? b.coming.parent : a.parent ) this.fixed = !1 a.fixed && b.defaults.fixed && (this.overlay.addClass('fancybox-overlay-fixed'), (this.fixed = !0)) }, open: function (a) { var d = this a = f.extend({}, this.defaults, a) this.overlay ? this.overlay.unbind('.overlay').width('auto').height('auto') : this.create(a) this.fixed || (n.bind('resize.overlay', f.proxy(this.update, this)), this.update()) a.closeClick && this.overlay.bind('click.overlay', function (a) { if (f(a.target).hasClass('fancybox-overlay')) return b.isActive ? b.close() : d.close(), !1 }) this.overlay.css(a.css).show() }, close: function () { var a, b n.unbind('resize.overlay') this.el.hasClass('fancybox-lock') && (f('.fancybox-margin').removeClass('fancybox-margin'), (a = n.scrollTop()), (b = n.scrollLeft()), this.el.removeClass('fancybox-lock'), n.scrollTop(a).scrollLeft(b)) f('.fancybox-overlay').remove().hide() f.extend(this, { overlay: null, fixed: !1 }) }, update: function () { var a = '100%', b this.overlay.width(a).height('100%') I ? ((b = Math.max(G.documentElement.offsetWidth, G.body.offsetWidth)), p.width() > b && (a = p.width())) : p.width() > n.width() && (a = p.width()) this.overlay.width(a).height(p.height()) }, onReady: function (a, b) { var e = this.overlay f('.fancybox-overlay').stop(!0, !0) e || this.create(a) a.locked && this.fixed && b.fixed && (e || (this.margin = p.height() > n.height() ? f('html').css('margin-right').replace('px', '') : !1), (b.locked = this.overlay.append(b.wrap)), (b.fixed = !1)) !0 === a.showEarly && this.beforeShow.apply(this, arguments) }, beforeShow: function (a, b) { var e, c b.locked && (!1 !== this.margin && (f('*') .filter(function () { return ( 'fixed' === f(this).css('position') && !f(this).hasClass('fancybox-overlay') && !f(this).hasClass('fancybox-wrap') ) }) .addClass('fancybox-margin'), this.el.addClass('fancybox-margin')), (e = n.scrollTop()), (c = n.scrollLeft()), this.el.addClass('fancybox-lock'), n.scrollTop(e).scrollLeft(c)) this.open(a) }, onUpdate: function () { this.fixed || this.update() }, afterClose: function (a) { this.overlay && !b.coming && this.overlay.fadeOut(a.speedOut, f.proxy(this.close, this)) }, } b.helpers.title = { defaults: { type: 'float', position: 'bottom' }, beforeShow: function (a) { var d = b.current, e = d.title, c = a.type f.isFunction(e) && (e = e.call(d.element, d)) if (q(e) && '' !== f.trim(e)) { d = f( '
' + e + '
' ) switch (c) { case 'inside': c = b.skin break case 'outside': c = b.wrap break case 'over': c = b.inner break default: ;(c = b.skin), d.appendTo('body'), I && d.width(d.width()), d.wrapInner(''), (b.current.margin[2] += Math.abs(l(d.css('margin-bottom')))) } d['top' === a.position ? 'prependTo' : 'appendTo'](c) } }, } f.fn.fancybox = function (a) { var d, e = f(this), c = this.selector || '', k = function (g) { var h = f(this).blur(), j = d, k, l !g.ctrlKey && !g.altKey && !g.shiftKey && !g.metaKey && !h.is('.fancybox-wrap') && ((k = a.groupAttr || 'data-fancybox-group'), (l = h.attr(k)), l || ((k = 'rel'), (l = h.get(0)[k])), l && '' !== l && 'nofollow' !== l && ((h = c.length ? f(c) : e), (h = h.filter('[' + k + '="' + l + '"]')), (j = h.index(this))), (a.index = j), !1 !== b.open(h, a) && g.preventDefault()) } a = a || {} d = a.index || 0 !c || !1 === a.live ? e.unbind('click.fb-start').bind('click.fb-start', k) : p .undelegate(c, 'click.fb-start') .delegate( c + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', k ) this.filter('[data-fancybox-start=1]').trigger('click') return this } p.ready(function () { var a, d f.scrollbarWidth === v && (f.scrollbarWidth = function () { var a = f( '
' ).appendTo('body'), b = a.children(), b = b.innerWidth() - b.height(99).innerWidth() a.remove() return b }) if (f.support.fixedPosition === v) { a = f.support d = f('
').appendTo('body') var e = 20 === d[0].offsetTop || 15 === d[0].offsetTop d.remove() a.fixedPosition = e } f.extend(b.defaults, { scrollbarWidth: f.scrollbarWidth(), fixed: f.support.fixedPosition, parent: f('body'), }) a = f(r).width() J.addClass('fancybox-lock-test') d = f(r).width() J.removeClass('fancybox-lock-test') f( "' ).appendTo('head') }) })(window, document, jQuery) ;(function () { 'use strict' var $, Animation, Growl, __bind = function (fn, me) { return function () { return fn.apply(me, arguments) } } $ = jQuery Animation = (function () { function Animation() {} Animation.transitions = { webkitTransition: 'webkitTransitionEnd', mozTransition: 'mozTransitionEnd', oTransition: 'oTransitionEnd', transition: 'transitionend', } Animation.transition = function ($el) { var el, result, type, _ref el = $el[0] _ref = this.transitions for (type in _ref) { result = _ref[type] if (el.style[type] != null) { return result } } } return Animation })() Growl = (function () { Growl.settings = { namespace: 'growl', duration: 1000, close: '×', location: 'default', style: 'default', size: 'medium', } Growl.growl = function (settings) { if (settings == null) { settings = {} } this.initialize() return new Growl(settings) } Growl.initialize = function () { return $('body:not(:has(#growls))').append('
') } function Growl(settings) { if (settings == null) { settings = {} } this.html = __bind(this.html, this) this.$growl = __bind(this.$growl, this) this.$growls = __bind(this.$growls, this) this.animate = __bind(this.animate, this) this.remove = __bind(this.remove, this) this.dismiss = __bind(this.dismiss, this) this.present = __bind(this.present, this) this.close = __bind(this.close, this) this.cycle = __bind(this.cycle, this) this.unbind = __bind(this.unbind, this) this.bind = __bind(this.bind, this) this.render = __bind(this.render, this) this.settings = $.extend({}, Growl.settings, settings) this.$growls().attr('class', this.settings.location) this.render() } Growl.prototype.render = function () { var $growl $growl = this.$growl() this.$growls().append($growl) this.cycle($growl) } Growl.prototype.bind = function ($growl) { if ($growl == null) { $growl = this.$growl() } return $growl .find('.' + this.settings.namespace + '-close') .on('click', this.close) } Growl.prototype.unbind = function ($growl) { if ($growl == null) { $growl = this.$growl() } return $growl .find('.' + (this.settings.namespace - close)) .off('click', this.close) } Growl.prototype.cycle = function ($growl) { if ($growl == null) { $growl = this.$growl() } return $growl .queue(this.present) .delay(this.settings.duration) .queue(this.dismiss) .queue(this.remove) } Growl.prototype.close = function (event) { var $growl event.preventDefault() event.stopPropagation() $growl = this.$growl() return $growl.stop().queue(this.dismiss).queue(this.remove) } Growl.prototype.present = function (callback) { var $growl $growl = this.$growl() this.bind($growl) return this.animate( $growl, '' + this.settings.namespace + '-incoming', 'out', callback ) } Growl.prototype.dismiss = function (callback) { var $growl $growl = this.$growl() this.unbind($growl) return this.animate( $growl, '' + this.settings.namespace + '-outgoing', 'in', callback ) } Growl.prototype.remove = function (callback) { this.$growl().remove() return callback() } Growl.prototype.animate = function ($element, name, direction, callback) { var transition if (direction == null) { direction = 'in' } transition = Animation.transition($element) $element[direction === 'in' ? 'removeClass' : 'addClass'](name) $element.offset().position $element[direction === 'in' ? 'addClass' : 'removeClass'](name) if (callback == null) { return } if (transition != null) { $element.one(transition, callback) } else { callback() } } Growl.prototype.$growls = function () { return this.$_growls != null ? this.$_growls : (this.$_growls = $('#growls')) } Growl.prototype.$growl = function () { return this.$_growl != null ? this.$_growl : (this.$_growl = $(this.html())) } Growl.prototype.html = function () { return ( "
\n
" + this.settings.close + "
\n
" + this.settings.title + "
\n
" + this.settings.message + '
\n
' ) } return Growl })() $.growl = function (options) { if (options == null) { options = {} } return Growl.growl(options) } $.growl.error = function (options) { var settings if (options == null) { options = {} } settings = { title: 'Error!', style: 'error' } return $.growl($.extend(settings, options)) } $.growl.notice = function (options) { var settings if (options == null) { options = {} } settings = { title: 'Notice!', style: 'notice' } return $.growl($.extend(settings, options)) } $.growl.warning = function (options) { var settings if (options == null) { options = {} } settings = { title: 'Warning!', style: 'warning' } return $.growl($.extend(settings, options)) } }).call(this) ;(function (k) { 'use strict' k(['jquery'], function ($) { var j = ($.scrollTo = function (a, b, c) { return $(window).scrollTo(a, b, c) }) j.defaults = { axis: 'xy', duration: 0, limit: !0 } j.window = function (a) { return $(window)._scrollable() } $.fn._scrollable = function () { return this.map(function () { var a = this, isWin = !a.nodeName || $.inArray(a.nodeName.toLowerCase(), [ 'iframe', '#document', 'html', 'body', ]) != -1 if (!isWin) return a var b = (a.contentWindow || a).document || a.ownerDocument || a return /webkit/i.test(navigator.userAgent) || b.compatMode == 'BackCompat' ? b.body : b.documentElement }) } $.fn.scrollTo = function (f, g, h) { if (typeof g == 'object') { h = g g = 0 } if (typeof h == 'function') h = { onAfter: h } if (f == 'max') f = 9e9 h = $.extend({}, j.defaults, h) g = g || h.duration h.queue = h.queue && h.axis.length > 1 if (h.queue) g /= 2 h.offset = both(h.offset) h.over = both(h.over) return this._scrollable() .each(function () { if (f == null) return var d = this, $elem = $(d), targ = f, toff, attr = {}, win = $elem.is('html,body') switch (typeof targ) { case 'number': case 'string': if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) { targ = both(targ) break } targ = win ? $(targ) : $(targ, this) if (!targ.length) return case 'object': if (targ.is || targ.style) toff = (targ = $(targ)).offset() } var e = ($.isFunction(h.offset) && h.offset(d, targ)) || h.offset $.each(h.axis.split(''), function (i, a) { var b = a == 'x' ? 'Left' : 'Top', pos = b.toLowerCase(), key = 'scroll' + b, old = d[key], max = j.max(d, a) if (toff) { attr[key] = toff[pos] + (win ? 0 : old - $elem.offset()[pos]) if (h.margin) { attr[key] -= parseInt(targ.css('margin' + b)) || 0 attr[key] -= parseInt(targ.css('border' + b + 'Width')) || 0 } attr[key] += e[pos] || 0 if (h.over[pos]) attr[key] += targ[a == 'x' ? 'width' : 'height']() * h.over[pos] } else { var c = targ[pos] attr[key] = c.slice && c.slice(-1) == '%' ? (parseFloat(c) / 100) * max : c } if (h.limit && /^\d+$/.test(attr[key])) attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max) if (!i && h.queue) { if (old != attr[key]) animate(h.onAfterFirst) delete attr[key] } }) animate(h.onAfter) function animate(a) { $elem.animate( attr, g, h.easing, a && function () { a.call(this, targ, h) } ) } }) .end() } j.max = function (a, b) { var c = b == 'x' ? 'Width' : 'Height', scroll = 'scroll' + c if (!$(a).is('html,body')) return a[scroll] - $(a)[c.toLowerCase()]() var d = 'client' + c, html = a.ownerDocument.documentElement, body = a.ownerDocument.body return Math.max(html[scroll], body[scroll]) - Math.min(html[d], body[d]) } function both(a) { return $.isFunction(a) || $.isPlainObject(a) ? a : { top: a, left: a } } return j }) })( typeof define === 'function' && define.amd ? define : function (a, b) { if (typeof module !== 'undefined' && module.exports) { module.exports = b(require('jquery')) } else { b(jQuery) } } ) ;(function (a) { var b = (a.serialScroll = function (c) { return a(window).serialScroll(c) }) b.defaults = { duration: 1e3, axis: 'x', event: 'click', start: 0, step: 1, lock: !0, cycle: !0, constant: !0, } a.fn.serialScroll = function (c) { return this.each(function () { var t = a.extend({}, b.defaults, c), s = t.event, i = t.step, r = t.lazy, e = t.target ? this : document, u = a(t.target || this, e), p = u[0], m = t.items, h = t.start, g = t.interval, k = t.navigation, l if (!r) { m = d() } if (t.force) { f({}, h) } a(t.prev || [], e).bind(s, -i, q) a(t.next || [], e).bind(s, i, q) if (!p.ssbound) { u.bind('prev.serialScroll', -i, q) .bind('next.serialScroll', i, q) .bind('goto.serialScroll', f) } if (g) { u.bind('start.serialScroll', function (v) { if (!g) { o() g = !0 n() } }).bind('stop.serialScroll', function () { o() g = !1 }) } u.bind('notify.serialScroll', function (x, w) { var v = j(w) if (v > -1) { h = v } }) p.ssbound = !0 if (t.jump) { ;(r ? u : d()).bind(s, function (v) { f(v, j(v.target)) }) } if (k) { k = a(k, e).bind(s, function (v) { v.data = Math.round(d().length / k.length) * k.index(this) f(v, this) }) } function q(v) { v.data += h f(v, this) } function f(B, z) { if (!isNaN(z)) { B.data = z z = p } var C = B.data, v, D = B.type, A = t.exclude ? d().slice(0, -t.exclude) : d(), y = A.length, w = A[C], x = t.duration if (D) { B.preventDefault() } if (g) { o() l = setTimeout(n, t.interval) } if (!w) { v = C < 0 ? 0 : y - 1 if (h != v) { C = v } else { if (!t.cycle) { return } else { C = y - v - 1 } } w = A[C] } if ( !w || (t.lock && u.is(':animated')) || (D && t.onBefore && t.onBefore(B, w, u, d(), C) === !1) ) { return } if (t.stop) { u.queue('fx', []).stop() } if (t.constant) { x = Math.abs((x / i) * (h - C)) } u.scrollTo(w, x, t).trigger('notify.serialScroll', [C]) } function n() { u.trigger('next.serialScroll') } function o() { clearTimeout(l) } function d() { return a(m, p) } function j(w) { if (!isNaN(w)) { return w } var x = d(), v while ((v = x.index(w)) == -1 && w != p) { w = w.parentNode } return v } }) } })(jQuery) /*! * jQuery Cookie Plugin * https://github.com/carhartl/jquery-cookie * * Copyright 2011, Klaus Hartl * Dual licensed under the MIT or GPL Version 2 licenses. * http://www.opensource.org/licenses/mit-license.php * http://www.opensource.org/licenses/GPL-2.0 */ ;(function ($) { $.cookie = function (key, value, options) { if ( arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined) ) { options = $.extend({}, options) if (value === null || value === undefined) { options.expires = -1 } if (typeof options.expires === 'number') { var days = options.expires, t = (options.expires = new Date()) t.setDate(t.getDate() + days) } value = String(value) return (document.cookie = [ encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '', ].join('')) } options = value || {} var decode = options.raw ? function (s) { return s } : decodeURIComponent var pairs = document.cookie.split('; ') for (var i = 0, pair; (pair = pairs[i] && pairs[i].split('=')); i++) { if (decode(pair[0]) === key) return decode(pair[1] || '') } return null } })(jQuery) /*! For license information please see front.js.LICENSE.txt */ ;(() => { var t = { 557: () => { !(function (t) { if (((t.support.touch = 'ontouchend' in document), t.support.touch)) { var e, n = t.ui.mouse.prototype, r = n._mouseInit, i = n._mouseDestroy ;(n._touchStart = function (t) { !e && this._mouseCapture(t.originalEvent.changedTouches[0]) && ((e = !0), (this._touchMoved = !1), o(t, 'mouseover'), o(t, 'mousemove'), o(t, 'mousedown')) }), (n._touchMove = function (t) { e && ((this._touchMoved = !0), o(t, 'mousemove')) }), (n._touchEnd = function (t) { e && (o(t, 'mouseup'), o(t, 'mouseout'), this._touchMoved || o(t, 'click'), (e = !1)) }), (n._mouseInit = function () { var e = this e.element.bind({ touchstart: t.proxy(e, '_touchStart'), touchmove: t.proxy(e, '_touchMove'), touchend: t.proxy(e, '_touchEnd'), }), r.call(e) }), (n._mouseDestroy = function () { var e = this e.element.unbind({ touchstart: t.proxy(e, '_touchStart'), touchmove: t.proxy(e, '_touchMove'), touchend: t.proxy(e, '_touchEnd'), }), i.call(e) }) } function o(t, e) { if (!(t.originalEvent.touches.length > 1)) { t.preventDefault() var n = t.originalEvent.changedTouches[0], r = document.createEvent('MouseEvents') r.initMouseEvent( e, !0, !0, window, 1, n.screenX, n.screenY, n.clientX, n.clientY, !1, !1, !1, !1, 0, null ), t.target.dispatchEvent(r) } } })(jQuery) }, 658: (t, e, n) => { var r = /[\\^$.*+?()[\]{}|]/g, i = RegExp(r.source), o = 'object' == typeof n.g && n.g && n.g.Object === Object && n.g, a = 'object' == typeof self && self && self.Object === Object && self, u = o || a || Function('return this')(), c = Object.prototype.toString, s = u.Symbol, l = s ? s.prototype : void 0, f = l ? l.toString : void 0 t.exports = function (t) { var e return (t = null == (e = t) ? '' : (function (t) { if ('string' == typeof t) return t if ( (function (t) { return ( 'symbol' == typeof t || ((function (t) { return !!t && 'object' == typeof t })(t) && '[object Symbol]' == c.call(t)) ) })(t) ) return f ? f.call(t) : '' var e = t + '' return '0' == e && 1 / t == -1 / 0 ? '-0' : e })(e)) && i.test(t) ? t.replace(r, '\\$&') : t } }, 741: () => {}, 580: () => {}, 765: () => {}, 379: (t, e, n) => { 'use strict' var r, i = (function () { var t = {} return function (e) { if (void 0 === t[e]) { var n = document.querySelector(e) if ( window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement ) try { n = n.contentDocument.head } catch (t) { n = null } t[e] = n } return t[e] } })(), o = [] function a(t) { for (var e = -1, n = 0; n < o.length; n++) if (o[n].identifier === t) { e = n break } return e } function u(t, e) { for (var n = {}, r = [], i = 0; i < t.length; i++) { var u = t[i], c = e.base ? u[0] + e.base : u[0], s = n[c] || 0, l = ''.concat(c, ' ').concat(s) n[c] = s + 1 var f = a(l), p = { css: u[1], media: u[2], sourceMap: u[3] } ;-1 !== f ? (o[f].references++, o[f].updater(p)) : o.push({ identifier: l, updater: h(p, e), references: 1 }), r.push(l) } return r } function c(t) { var e = document.createElement('style'), r = t.attributes || {} if (void 0 === r.nonce) { var o = n.nc o && (r.nonce = o) } if ( (Object.keys(r).forEach(function (t) { e.setAttribute(t, r[t]) }), 'function' == typeof t.insert) ) t.insert(e) else { var a = i(t.insert || 'head') if (!a) throw new Error( "Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid." ) a.appendChild(e) } return e } var s, l = ((s = []), function (t, e) { return (s[t] = e), s.filter(Boolean).join('\n') }) function f(t, e, n, r) { var i = n ? '' : r.media ? '@media '.concat(r.media, ' {').concat(r.css, '}') : r.css if (t.styleSheet) t.styleSheet.cssText = l(e, i) else { var o = document.createTextNode(i), a = t.childNodes a[e] && t.removeChild(a[e]), a.length ? t.insertBefore(o, a[e]) : t.appendChild(o) } } function p(t, e, n) { var r = n.css, i = n.media, o = n.sourceMap if ( (i ? t.setAttribute('media', i) : t.removeAttribute('media'), o && 'undefined' != typeof btoa && (r += '\n/*# sourceMappingURL=data:application/json;base64,'.concat( btoa(unescape(encodeURIComponent(JSON.stringify(o)))), ' */' )), t.styleSheet) ) t.styleSheet.cssText = r else { for (; t.firstChild; ) t.removeChild(t.firstChild) t.appendChild(document.createTextNode(r)) } } var y = null, d = 0 function h(t, e) { var n, r, i if (e.singleton) { var o = d++ ;(n = y || (y = c(e))), (r = f.bind(null, n, o, !1)), (i = f.bind(null, n, o, !0)) } else (n = c(e)), (r = p.bind(null, n, e)), (i = function () { !(function (t) { if (null === t.parentNode) return !1 t.parentNode.removeChild(t) })(n) }) return ( r(t), function (e) { if (e) { if ( e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap ) return r((t = e)) } else i() } ) } t.exports = function (t, e) { ;(e = e || {}).singleton || 'boolean' == typeof e.singleton || (e.singleton = (void 0 === r && (r = Boolean( window && document && document.all && !window.atob )), r)) var n = u((t = t || []), e) return function (t) { if ( ((t = t || []), '[object Array]' === Object.prototype.toString.call(t)) ) { for (var r = 0; r < n.length; r++) { var i = a(n[r]) o[i].references-- } for (var c = u(t, e), s = 0; s < n.length; s++) { var l = a(n[s]) 0 === o[l].references && (o[l].updater(), o.splice(l, 1)) } n = c } } } }, }, e = {} function n(r) { if (e[r]) return e[r].exports var i = (e[r] = { exports: {} }) return t[r](i, i.exports, n), i.exports } ;(n.n = (t) => { var e = t && t.__esModule ? () => t.default : () => t return n.d(e, { a: e }), e }), (n.d = (t, e) => { for (var r in e) n.o(e, r) && !n.o(t, r) && Object.defineProperty(t, r, { enumerable: !0, get: e[r] }) }), (n.g = (function () { if ('object' == typeof globalThis) return globalThis try { return this || new Function('return this')() } catch (t) { if ('object' == typeof window) return window } })()), (n.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e)), (() => { 'use strict' function t(t, e) { ;(null == e || e > t.length) && (e = t.length) for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n] return r } n(557) const e = function (e) { return e.split('&').map(function (e) { var n, r, i = ((n = e.split('=')), (r = 2), (function (t) { if (Array.isArray(t)) return t })(n) || (function (t, e) { if ( 'undefined' != typeof Symbol && Symbol.iterator in Object(t) ) { var n = [], r = !0, i = !1, o = void 0 try { for ( var a, u = t[Symbol.iterator](); !(r = (a = u.next()).done) && (n.push(a.value), !e || n.length !== e); r = !0 ); } catch (t) { ;(i = !0), (o = t) } finally { try { r || null == u.return || u.return() } finally { if (i) throw o } } return n } })(n, r) || (function (e, n) { if (e) { if ('string' == typeof e) return t(e, n) var r = Object.prototype.toString.call(e).slice(8, -1) return ( 'Object' === r && e.constructor && (r = e.constructor.name), 'Map' === r || 'Set' === r ? Array.from(e) : 'Arguments' === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? t(e, n) : void 0 ) } })(n, r) || (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.' ) })()), o = i[0], a = i[1] return { name: o, value: decodeURIComponent(a).replace(/\+/g, ' ') } }) }, r = function t(e) { !(function (t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') })(this, t), (this.message = e), (this.name = 'LocalizationException') } function i(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } const o = (function () { function t(e, n, r, i, o, a, u, c, s, l, f) { !(function (t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') })(this, t), (this.decimal = e), (this.group = n), (this.list = r), (this.percentSign = i), (this.minusSign = o), (this.plusSign = a), (this.exponential = u), (this.superscriptingExponent = c), (this.perMille = s), (this.infinity = l), (this.nan = f), this.validateData() } var e, n return ( (e = t), (n = [ { key: 'getDecimal', value: function () { return this.decimal }, }, { key: 'getGroup', value: function () { return this.group }, }, { key: 'getList', value: function () { return this.list }, }, { key: 'getPercentSign', value: function () { return this.percentSign }, }, { key: 'getMinusSign', value: function () { return this.minusSign }, }, { key: 'getPlusSign', value: function () { return this.plusSign }, }, { key: 'getExponential', value: function () { return this.exponential }, }, { key: 'getSuperscriptingExponent', value: function () { return this.superscriptingExponent }, }, { key: 'getPerMille', value: function () { return this.perMille }, }, { key: 'getInfinity', value: function () { return this.infinity }, }, { key: 'getNan', value: function () { return this.nan }, }, { key: 'validateData', value: function () { if (!this.decimal || 'string' != typeof this.decimal) throw new r('Invalid decimal') if (!this.group || 'string' != typeof this.group) throw new r('Invalid group') if (!this.list || 'string' != typeof this.list) throw new r('Invalid symbol list') if (!this.percentSign || 'string' != typeof this.percentSign) throw new r('Invalid percentSign') if (!this.minusSign || 'string' != typeof this.minusSign) throw new r('Invalid minusSign') if (!this.plusSign || 'string' != typeof this.plusSign) throw new r('Invalid plusSign') if (!this.exponential || 'string' != typeof this.exponential) throw new r('Invalid exponential') if ( !this.superscriptingExponent || 'string' != typeof this.superscriptingExponent ) throw new r('Invalid superscriptingExponent') if (!this.perMille || 'string' != typeof this.perMille) throw new r('Invalid perMille') if (!this.infinity || 'string' != typeof this.infinity) throw new r('Invalid infinity') if (!this.nan || 'string' != typeof this.nan) throw new r('Invalid nan') }, }, ]) && i(e.prototype, n), t ) })() function a(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } const u = (function () { function t(e, n, i, a, u, c, s, l) { if ( ((function (t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') })(this, t), (this.positivePattern = e), (this.negativePattern = n), (this.symbol = i), (this.maxFractionDigits = a), (this.minFractionDigits = a < u ? a : u), (this.groupingUsed = c), (this.primaryGroupSize = s), (this.secondaryGroupSize = l), !this.positivePattern || 'string' != typeof this.positivePattern) ) throw new r('Invalid positivePattern') if (!this.negativePattern || 'string' != typeof this.negativePattern) throw new r('Invalid negativePattern') if (!(this.symbol && this.symbol instanceof o)) throw new r('Invalid symbol') if ('number' != typeof this.maxFractionDigits) throw new r('Invalid maxFractionDigits') if ('number' != typeof this.minFractionDigits) throw new r('Invalid minFractionDigits') if ('boolean' != typeof this.groupingUsed) throw new r('Invalid groupingUsed') if ('number' != typeof this.primaryGroupSize) throw new r('Invalid primaryGroupSize') if ('number' != typeof this.secondaryGroupSize) throw new r('Invalid secondaryGroupSize') } var e, n return ( (e = t), (n = [ { key: 'getSymbol', value: function () { return this.symbol }, }, { key: 'getPositivePattern', value: function () { return this.positivePattern }, }, { key: 'getNegativePattern', value: function () { return this.negativePattern }, }, { key: 'getMaxFractionDigits', value: function () { return this.maxFractionDigits }, }, { key: 'getMinFractionDigits', value: function () { return this.minFractionDigits }, }, { key: 'isGroupingUsed', value: function () { return this.groupingUsed }, }, { key: 'getPrimaryGroupSize', value: function () { return this.primaryGroupSize }, }, { key: 'getSecondaryGroupSize', value: function () { return this.secondaryGroupSize }, }, ]) && a(e.prototype, n), t ) })() function c(t) { return (c = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t })(t) } function s(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } function l(t, e) { return (l = Object.setPrototypeOf || function (t, e) { return (t.__proto__ = e), t })(t, e) } function f(t, e) { return !e || ('object' !== c(e) && 'function' != typeof e) ? (function (t) { if (void 0 === t) throw new ReferenceError( "this hasn't been initialised - super() hasn't been called" ) return t })(t) : e } function p(t) { return (p = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t) })(t) } const y = (function (t) { !(function (t, e) { if ('function' != typeof e && null !== e) throw new TypeError( 'Super expression must either be null or a function' ) ;(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 }, })), e && l(t, e) })(c, t) var e, n, i, o, a, u = ((o = c), (a = (function () { if ('undefined' == typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' == typeof Proxy) return !0 try { return ( Date.prototype.toString.call( Reflect.construct(Date, [], function () {}) ), !0 ) } catch (t) { return !1 } })()), function () { var t, e = p(o) if (a) { var n = p(this).constructor t = Reflect.construct(e, arguments, n) } else t = e.apply(this, arguments) return f(this, t) }) function c(t, e, n, i, o, a, s, l, f, p) { var y if ( ((function (t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') })(this, c), ((y = u.call(this, t, e, n, i, o, a, s, l)).currencySymbol = f), (y.currencyCode = p), !y.currencySymbol || 'string' != typeof y.currencySymbol) ) throw new r('Invalid currencySymbol') if (!y.currencyCode || 'string' != typeof y.currencyCode) throw new r('Invalid currencyCode') return y } return ( (e = c), (i = [ { key: 'getCurrencyDisplay', value: function () { return 'symbol' }, }, ]), (n = [ { key: 'getCurrencySymbol', value: function () { return this.currencySymbol }, }, { key: 'getCurrencyCode', value: function () { return this.currencyCode }, }, ]) && s(e.prototype, n), i && s(e, i), c ) })(u) function d(t, e, n) { return (d = h() ? Reflect.construct : function (t, e, n) { var r = [null] r.push.apply(r, e) var i = new (Function.bind.apply(t, r))() return n && v(i, n.prototype), i }).apply(null, arguments) } function h() { if ('undefined' == typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' == typeof Proxy) return !0 try { return ( Date.prototype.toString.call( Reflect.construct(Date, [], function () {}) ), !0 ) } catch (t) { return !1 } } function v(t, e) { return (v = Object.setPrototypeOf || function (t, e) { return (t.__proto__ = e), t })(t, e) } function g(t) { return ( (function (t) { if (Array.isArray(t)) return b(t) })(t) || (function (t) { if ('undefined' != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t) })(t) || m(t) || (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(t, e) { if (t) { if ('string' == typeof t) return b(t, e) var n = Object.prototype.toString.call(t).slice(8, -1) return ( 'Object' === n && t.constructor && (n = t.constructor.name), 'Map' === n || 'Set' === n ? Array.from(t) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? b(t, e) : void 0 ) } } function b(t, e) { ;(null == e || e > t.length) && (e = t.length) for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n] return r } function S(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } var w = n(658) const x = (function () { function t(e) { !(function (t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') })(this, t), (this.numberSpecification = e) } var e, n, r return ( (e = t), (r = [ { key: 'build', value: function (e) { var n return ( (n = void 0 !== e.numberSymbols ? d(o, g(e.numberSymbols)) : d(o, g(e.symbol))), new t( e.currencySymbol ? new y( e.positivePattern, e.negativePattern, n, parseInt(e.maxFractionDigits, 10), parseInt(e.minFractionDigits, 10), e.groupingUsed, e.primaryGroupSize, e.secondaryGroupSize, e.currencySymbol, e.currencyCode ) : new u( e.positivePattern, e.negativePattern, n, parseInt(e.maxFractionDigits, 10), parseInt(e.minFractionDigits, 10), e.groupingUsed, e.primaryGroupSize, e.secondaryGroupSize ) ) ) }, }, ]), (n = [ { key: 'format', value: function (t, e) { void 0 !== e && (this.numberSpecification = e) var n, r, i = Math.abs(t).toFixed( this.numberSpecification.getMaxFractionDigits() ), o = ((n = this.extractMajorMinorDigits(i)), (r = 2), (function (t) { if (Array.isArray(t)) return t })(n) || (function (t, e) { if ( 'undefined' != typeof Symbol && Symbol.iterator in Object(t) ) { var n = [], r = !0, i = !1, o = void 0 try { for ( var a, u = t[Symbol.iterator](); !(r = (a = u.next()).done) && (n.push(a.value), !e || n.length !== e); r = !0 ); } catch (t) { ;(i = !0), (o = t) } finally { try { r || null == u.return || u.return() } finally { if (i) throw o } } return n } })(n, r) || m(n, r) || (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.' ) })()), a = o[0], u = o[1], c = (a = this.splitMajorGroups(a)) ;(u = this.adjustMinorDigitsZeroes(u)) && (c += '.' + u) var s = this.getCldrPattern(t < 0) return ( (c = this.addPlaceholders(c, s)), (c = this.replaceSymbols(c)), this.performSpecificReplacements(c) ) }, }, { key: 'extractMajorMinorDigits', value: function (t) { var e = t.toString().split('.') return [e[0], void 0 === e[1] ? '' : e[1]] }, }, { key: 'splitMajorGroups', value: function (t) { if (!this.numberSpecification.isGroupingUsed()) return t var e = t.split('').reverse(), n = [] for ( n.push( e.splice(0, this.numberSpecification.getPrimaryGroupSize()) ); e.length; ) n.push( e.splice( 0, this.numberSpecification.getSecondaryGroupSize() ) ) n = n.reverse() var r = [] return ( n.forEach(function (t) { r.push(t.reverse().join('')) }), r.join(',') ) }, }, { key: 'adjustMinorDigitsZeroes', value: function (t) { var e = t return ( e.length > this.numberSpecification.getMaxFractionDigits() && (e = e.replace(/0+$/, '')), e.length < this.numberSpecification.getMinFractionDigits() && (e = e.padEnd( this.numberSpecification.getMinFractionDigits(), '0' )), e ) }, }, { key: 'getCldrPattern', value: function (t) { return t ? this.numberSpecification.getNegativePattern() : this.numberSpecification.getPositivePattern() }, }, { key: 'replaceSymbols', value: function (t) { var e = this.numberSpecification.getSymbol(), n = {} return ( (n['.'] = e.getDecimal()), (n[','] = e.getGroup()), (n['-'] = e.getMinusSign()), (n['%'] = e.getPercentSign()), (n['+'] = e.getPlusSign()), this.strtr(t, n) ) }, }, { key: 'strtr', value: function (t, e) { var n = Object.keys(e).map(w) return t .split(RegExp('('.concat(n.join('|'), ')'))) .map(function (t) { return e[t] || t }) .join('') }, }, { key: 'addPlaceholders', value: function (t, e) { return e.replace(/#?(,#+)*0(\.[0#]+)*/, t) }, }, { key: 'performSpecificReplacements', value: function (t) { return this.numberSpecification instanceof y ? t .split('¤') .join(this.numberSpecification.getCurrencySymbol()) : t }, }, ]) && S(e.prototype, n), r && S(e, r), t ) })() var j = {}, P = function (t, e, n, r) { void 0 === j[t] ? e.text( e .text() .replace( /([^\d]*)(?:[\d\s.,]+)([^\d]+)(?:[\d\s.,]+)(.*)/, '$1'.concat(n, '$2').concat(r, '$3') ) ) : e.text(''.concat(j[t].format(n), ' - ').concat(j[t].format(r))) } const k = function () { $('.faceted-slider').each(function () { var t = $(this), n = t.data('slider-values'), r = t.data('slider-specifications') null != r && (j[t.data('slider-id')] = x.build(r)), P( t.data('slider-id'), $('#facet_label_'.concat(t.data('slider-id'))), null === n ? t.data('slider-min') : n[0], null === n ? t.data('slider-max') : n[1] ), $('#slider-range_'.concat(t.data('slider-id'))).slider({ range: !0, min: t.data('slider-min'), max: t.data('slider-max'), values: [ null === n ? t.data('slider-min') : n[0], null === n ? t.data('slider-max') : n[1], ], stop: function (n, r) { var i = t.data('slider-encoded-url').split('?'), o = [] i.length > 1 && (o = e(i[1])) var a = !1 o.forEach(function (t) { 'q' === t.name && (a = !0) }), a || o.push({ name: 'q', value: '' }), o.forEach(function (e) { 'q' === e.name && (e.value += [ e.value.length > 0 ? '/' : '', t.data('slider-label'), '-', t.data('slider-unit'), '-', r.values[0], '-', r.values[1], ].join('')) }) var u = [i[0], '?', $.param(o)].join('') prestashop.emit('updateFacets', u) }, slide: function (e, n) { P( t.data('slider-id'), $('#facet_label_'.concat(t.data('slider-id'))), n.values[0], n.values[1] ) }, }) }) } var M = n(379), I = n.n(M), _ = n(580), E = n.n(_) I()(E(), { insert: 'head', singleton: !1 }), E().locals, $(document).ready(function () { prestashop.on('updateProductList', function () { $('.faceted-overlay').remove(), k() }), k(), prestashop.on('updateFacets', function () { 1 !== $('.faceted-overlay').length && $('body').append( '
\n
\n
\n
\n
' ) }) }) var D = n(765), O = n.n(D) I()(O(), { insert: 'head', singleton: !1 }), O().locals var C = n(741), F = n.n(C) I()(F(), { insert: 'head', singleton: !1 }), F().locals })() })() /* * NOTICE OF LICENSE * * This product is licensed for one customer to use on one installation (test stores and multishop included). * Site developer has the right to modify this module to suit their needs, but can not redistribute the module in * whole or in part. Any other use of this module constitutes a violation of the user agreement. * * DISCLAIMER * * NO WARRANTIES OF DATA SAFETY OR MODULE SECURITY * ARE EXPRESSED OR IMPLIED. USE THIS MODULE IN ACCORDANCE * WITH YOUR MERCHANT AGREEMENT, KNOWING THAT VIOLATIONS OF * PCI COMPLIANCY OR A DATA BREACH CAN COST THOUSANDS OF DOLLARS * IN FINES AND DAMAGE A STORES REPUTATION. USE AT YOUR OWN RISK. * * @author idnovate.com * @copyright 2022 idnovate.com * @license See above */ ;(function ($, F) { F.transitions.dropIn = function () { var endPos = F._getPosition(!0) endPos.top = parseInt(endPos.top, 10) - 200 + 'px' endPos.opacity = 0 F.wrap .css(endPos) .show() .animate( { top: '+=200px', opacity: 1 }, { duration: F.current.openSpeed, complete: F._afterZoomIn } ) } F.transitions.dropOut = function () { F.wrap .removeClass('fancybox-opened') .animate( { top: '-=200px', opacity: 0 }, { duration: F.current.closeSpeed, complete: F._afterZoomOut } ) } F.transitions.superscaleIn = function () { F.wrap.addClass('superscale') setTimeout(function () { F.wrap.addClass('superscale-transitions') F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.superscaleOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('superscale superscale-transitions') F._afterZoomOut() }, 300) } F.transitions.fadescaleIn = function () { F.wrap.addClass('fadescale') setTimeout(function () { F.wrap.addClass('fadescale-transitions') F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.fadescaleOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('fadescale fadescale-transitions') F._afterZoomOut() }, 300) } F.transitions.sliderightIn = function () { F.wrap.addClass('slideright') setTimeout(function () { F.wrap.addClass('slideright-transitions') F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.sliderightOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('slideright slideright-transitions') F._afterZoomOut() }, 300) } F.transitions.slidebottomIn = function () { F.wrap.addClass('slidebottom') setTimeout(function () { F.wrap.addClass('slidebottom-transitions') F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.slidebottomOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('slidebottom slidebottom-transitions') F._afterZoomOut() }, 300) } F.transitions.newspaperIn = function () { F.wrap.addClass('newspaper') setTimeout(function () { F.wrap.addClass('newspaper-transitions') F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.newspaperOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('newspaper newspaper-transitions') F._afterZoomOut() }, 300) } F.transitions.fallIn = function () { F.wrap.addClass('fall') setTimeout(function () { F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.fallOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('fall') F._afterZoomOut() }, 300) } F.transitions.sidefallIn = function () { F.wrap.addClass('sidefall') setTimeout(function () { F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.sidefallOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('sidefall') F._afterZoomOut() }, 300) } F.transitions.stickyupIn = function () { F.wrap.addClass('stickyup') setTimeout(function () { F.wrap.addClass('show stickyup-transitions') F._afterZoomIn() }) } F.transitions.stickyupOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('stickyup stickyup-transitions') F._afterZoomOut() }, 300) } F.transitions.horizontalflipIn = function () { F.wrap.addClass('horizflip') setTimeout(function () { F.wrap.addClass('show horizflip-transitions') F._afterZoomIn() }) } F.transitions.horizontalflipOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('horizflip horizflip-transitions') F._afterZoomOut() }, 300) } F.transitions.verticalflipIn = function () { F.wrap.addClass('vertflip') setTimeout(function () { F.wrap.addClass('show vertflip-transitions') F._afterZoomIn() }) } F.transitions.verticalflipOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('vertflip vertflip-transitions') F._afterZoomOut() }, 300) } F.transitions.signIn = function () { F.wrap.addClass('sign') setTimeout(function () { F.wrap.addClass('show sign-transitions') F._afterZoomIn() }) } F.transitions.signOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('sign sign-transitions') F._afterZoomOut() }, 300) } F.transitions.slitIn = function () { F.wrap.addClass('slit') setTimeout(function () { F.wrap.addClass('show') F._afterZoomIn() }) } F.transitions.slitOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('slit') F._afterZoomOut() }, 300) } F.transitions.rotatebottomIn = function () { F.wrap.addClass('rotatebottom') setTimeout(function () { F.wrap.addClass('show rotatebottom-transitions') F._afterZoomIn() }) } F.transitions.rotatebottomOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('rotatebottom-transitions rotatebottom') F._afterZoomOut() }, 300) } F.transitions.rotateleftIn = function () { F.wrap.addClass('rotateleft') setTimeout(function () { F.wrap.addClass('show rotateleft-transitions') F._afterZoomIn() }) } F.transitions.rotateleftOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('rotateleft-transitions rotateleft') F._afterZoomOut() }, 300) } F.transitions.blurIn = function () { F.wrap .siblings() .not('.fancybox-wrap') .not('.fancybox-overlay') .addClass('blur-overlay') F.wrap.addClass('blur') setTimeout(function () { F.wrap.addClass('blur-transitions show') F._afterZoomIn() }) } F.transitions.blurOut = function () { F.wrap.removeClass('show') setTimeout(function () { F.wrap.removeClass('blur-transitions blur') F.wrap .siblings() .not('.fancybox-wrap') .not('.fancybox-overlay') .removeClass('blur-overlay') F._afterZoomOut() }, 300) } })(jQuery, jQuery.fancybox) !(function (e) { 'function' == typeof define && define.amd ? define(['jquery'], e) : 'object' == typeof module && 'object' == typeof module.exports ? (module.exports = e(require('jquery'))) : e(jQuery) })(function (e) { return ( (function (A) { 'use strict' var L = (A.tablesorter = { version: '2.32.0', parsers: [], widgets: [], defaults: { theme: 'default', widthFixed: !1, showProcessing: !1, headerTemplate: '{content}', onRenderTemplate: null, onRenderHeader: null, cancelSelection: !0, tabIndex: !0, dateFormat: 'mmddyyyy', sortMultiSortKey: 'shiftKey', sortResetKey: 'ctrlKey', usNumberFormat: !0, delayInit: !1, serverSideSorting: !1, resort: !0, headers: null, ignoreCase: !0, sortForce: null, sortList: [], sortAppend: null, sortStable: !1, sortInitialOrder: 'asc', sortLocaleCompare: !1, sortReset: !1, sortRestart: !1, emptyTo: 'bottom', stringTo: 'max', duplicateSpan: !0, textExtraction: 'basic', textAttribute: 'data-text', textSorter: null, numberSorter: null, initWidgets: !0, widgetClass: 'widget-{name}', widgets: [], widgetOptions: { zebra: ['even', 'odd'] }, initialized: null, tableClass: '', cssAsc: '', cssDesc: '', cssNone: '', cssHeader: '', cssHeaderRow: '', cssProcessing: '', cssChildRow: 'tablesorter-childRow', cssInfoBlock: 'tablesorter-infoOnly', cssNoSort: 'tablesorter-noSort', cssIgnoreRow: 'tablesorter-ignoreRow', cssIcon: 'tablesorter-icon', cssIconNone: '', cssIconAsc: '', cssIconDesc: '', cssIconDisabled: '', pointerClick: 'click', pointerDown: 'mousedown', pointerUp: 'mouseup', selectorHeaders: '> thead th, > thead td', selectorSort: 'th, td', selectorRemove: '.remove-me', debug: !1, headerList: [], empties: {}, strings: {}, parsers: [], globalize: 0, imgAttr: 0, }, css: { table: 'tablesorter', cssHasChild: 'tablesorter-hasChildRow', childRow: 'tablesorter-childRow', colgroup: 'tablesorter-colgroup', header: 'tablesorter-header', headerRow: 'tablesorter-headerRow', headerIn: 'tablesorter-header-inner', icon: 'tablesorter-icon', processing: 'tablesorter-processing', sortAsc: 'tablesorter-headerAsc', sortDesc: 'tablesorter-headerDesc', sortNone: 'tablesorter-headerUnSorted', }, language: { sortAsc: 'Ascending sort applied, ', sortDesc: 'Descending sort applied, ', sortNone: 'No sort applied, ', sortDisabled: 'sorting is disabled', nextAsc: 'activate to apply an ascending sort', nextDesc: 'activate to apply a descending sort', nextNone: 'activate to remove the sort', }, regex: { templateContent: /\{content\}/g, templateIcon: /\{icon\}/g, templateName: /\{name\}/i, spaces: /\s+/g, nonWord: /\W/g, formElements: /(input|select|button|textarea)/i, chunk: /(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, chunks: /(^\\0|\\0$)/, hex: /^0x[0-9a-f]+$/i, comma: /,/g, digitNonUS: /[\s|\.]/g, digitNegativeTest: /^\s*\([.\d]+\)/, digitNegativeReplace: /^\s*\(([.\d]+)\)/, digitTest: /^[\-+(]?\d+[)]?$/, digitReplace: /[,.'"\s]/g, }, string: { max: 1, min: -1, emptymin: 1, emptymax: -1, zero: 0, none: 0, null: 0, top: !0, bottom: !1, }, keyCodes: { enter: 13 }, dates: {}, instanceMethods: {}, setup: function (t, r) { var e, o, s, a t && t.tHead && 0 !== t.tBodies.length && !0 !== t.hasInitialized ? ((e = ''), (o = A(t)), (s = A.metadata), (t.hasInitialized = !1), (t.isProcessing = !0), (t.config = r), A.data(t, 'tablesorter', r), L.debug(r, 'core') && (console[console.group ? 'group' : 'log']( 'Initializing tablesorter v' + L.version ), A.data(t, 'startoveralltimer', new Date())), (r.supportsDataObject = (((a = A.fn.jquery.split('.'))[0] = parseInt(a[0], 10)), 1 < a[0] || (1 === a[0] && 4 <= parseInt(a[1], 10)))), (r.emptyTo = r.emptyTo.toLowerCase()), (r.stringTo = r.stringTo.toLowerCase()), (r.last = { sortList: [], clickedIndex: -1 }), /tablesorter\-/.test(o.attr('class')) || (e = '' !== r.theme ? ' tablesorter-' + r.theme : ''), r.namespace ? (r.namespace = '.' + r.namespace.replace(L.regex.nonWord, '')) : (r.namespace = '.tablesorter' + Math.random().toString(16).slice(2)), (r.table = t), (r.$table = o .addClass( L.css.table + ' ' + r.tableClass + e + ' ' + r.namespace.slice(1) ) .attr('role', 'grid')), (r.$headers = o.find(r.selectorHeaders)), r.$table.children().children('tr').attr('role', 'row'), (r.$tbodies = o .children('tbody:not(.' + r.cssInfoBlock + ')') .attr({ 'aria-live': 'polite', 'aria-relevant': 'all' })), r.$table.children('caption').length && ((e = r.$table.children('caption')[0]).id || (e.id = r.namespace.slice(1) + 'caption'), r.$table.attr('aria-labelledby', e.id)), (r.widgetInit = {}), (r.textExtraction = r.$table.attr('data-text-extraction') || r.textExtraction || 'basic'), L.buildHeaders(r), L.fixColumnWidth(t), L.addWidgetFromClass(t), L.applyWidgetOptions(t), L.setupParsers(r), (r.totalRows = 0), r.debug && L.validateOptions(r), r.delayInit || L.buildCache(r), L.bindEvents(t, r.$headers, !0), L.bindMethods(r), r.supportsDataObject && void 0 !== o.data().sortlist ? (r.sortList = o.data().sortlist) : s && o.metadata() && o.metadata().sortlist && (r.sortList = o.metadata().sortlist), L.applyWidget(t, !0), 0 < r.sortList.length ? ((r.last.sortList = r.sortList), L.sortOn(r, r.sortList, {}, !r.initWidgets)) : (L.setHeadersCss(r), r.initWidgets && L.applyWidget(t, !1)), r.showProcessing && o .unbind('sortBegin' + r.namespace + ' sortEnd' + r.namespace) .bind( 'sortBegin' + r.namespace + ' sortEnd' + r.namespace, function (e) { clearTimeout(r.timerProcessing), L.isProcessing(t), 'sortBegin' === e.type && (r.timerProcessing = setTimeout(function () { L.isProcessing(t, !0) }, 500)) } ), (t.hasInitialized = !0), (t.isProcessing = !1), L.debug(r, 'core') && (console.log( 'Overall initialization time:' + L.benchmark(A.data(t, 'startoveralltimer')) ), L.debug(r, 'core')) && console.groupEnd && console.groupEnd(), o.triggerHandler('tablesorter-initialized', t), 'function' == typeof r.initialized && r.initialized(t)) : L.debug(r, 'core') && (t.hasInitialized ? console.warn( 'Stopping initialization. Tablesorter has already been initialized' ) : console.error( 'Stopping initialization! No table, thead or tbody', t )) }, bindMethods: function (t) { var e = t.$table, r = t.namespace, o = 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ' .split(' ') .join(r + ' ') e.unbind(o.replace(L.regex.spaces, ' ')) .bind('sortReset' + r, function (e, t) { e.stopPropagation(), L.sortReset(this.config, function (e) { e.isApplyingWidgets ? setTimeout(function () { L.applyWidget(e, '', t) }, 100) : L.applyWidget(e, '', t) }) }) .bind('updateAll' + r, function (e, t, r) { e.stopPropagation(), L.updateAll(this.config, t, r) }) .bind('update' + r + ' updateRows' + r, function (e, t, r) { e.stopPropagation(), L.update(this.config, t, r) }) .bind('updateHeaders' + r, function (e, t) { e.stopPropagation(), L.updateHeaders(this.config, t) }) .bind('updateCell' + r, function (e, t, r, o) { e.stopPropagation(), L.updateCell(this.config, t, r, o) }) .bind('addRows' + r, function (e, t, r, o) { e.stopPropagation(), L.addRows(this.config, t, r, o) }) .bind('updateComplete' + r, function () { this.isUpdating = !1 }) .bind('sorton' + r, function (e, t, r, o) { e.stopPropagation(), L.sortOn(this.config, t, r, o) }) .bind('appendCache' + r, function (e, t, r) { e.stopPropagation(), L.appendCache(this.config, r), A.isFunction(t) && t(this) }) .bind('updateCache' + r, function (e, t, r) { e.stopPropagation(), L.updateCache(this.config, t, r) }) .bind('applyWidgetId' + r, function (e, t) { e.stopPropagation(), L.applyWidgetId(this, t) }) .bind('applyWidgets' + r, function (e, t) { e.stopPropagation(), L.applyWidget(this, !1, t) }) .bind('refreshWidgets' + r, function (e, t, r) { e.stopPropagation(), L.refreshWidgets(this, t, r) }) .bind('removeWidget' + r, function (e, t, r) { e.stopPropagation(), L.removeWidget(this, t, r) }) .bind('destroy' + r, function (e, t, r) { e.stopPropagation(), L.destroy(this, t, r) }) .bind('resetToLoadState' + r, function (e) { e.stopPropagation(), L.removeWidget(this, !0, !1) e = A.extend(!0, {}, t.originalSettings) ;((t = A.extend(!0, {}, L.defaults, e)).originalSettings = e), (this.hasInitialized = !1), L.setup(this, t) }) }, bindEvents: function (e, t, r) { var o, s = (e = A(e)[0]).config, a = s.namespace, n = null !0 !== r && (t.addClass(a.slice(1) + '_extra_headers'), (o = L.getClosest(t, 'table')).length) && 'TABLE' === o[0].nodeName && o[0] !== e && A(o[0]).addClass(a.slice(1) + '_extra_table'), (o = ( s.pointerDown + ' ' + s.pointerUp + ' ' + s.pointerClick + ' sort keyup ' ) .replace(L.regex.spaces, ' ') .split(' ') .join(a + ' ')), t .find(s.selectorSort) .add(t.filter(s.selectorSort)) .unbind(o) .bind(o, function (e, t) { var r = A(e.target), o = ' ' + e.type + ' ' if ( !( (1 !== (e.which || e.button) && !o.match(' ' + s.pointerClick + ' | sort | keyup ')) || (' keyup ' === o && e.which !== L.keyCodes.enter) || (o.match(' ' + s.pointerClick + ' ') && void 0 !== e.which) || (o.match(' ' + s.pointerUp + ' ') && n !== e.target && !0 !== t) ) ) if (o.match(' ' + s.pointerDown + ' ')) (n = e.target), '1' === (t = r.jquery.split('.'))[0] && t[1] < 4 && e.preventDefault() else { if ( ((n = null), (o = L.getClosest(A(this), '.' + L.css.header)), L.regex.formElements.test(e.target.nodeName) || r.hasClass(s.cssNoSort) || 0 < r.parents('.' + s.cssNoSort).length || o.hasClass('sorter-false') || 0 < r.parents('button').length) ) return !s.cancelSelection s.delayInit && L.isEmptyObject(s.cache) && L.buildCache(s), (s.last.clickedIndex = o.attr('data-column') || o.index()), (t = s.$headerIndexed[s.last.clickedIndex][0]) && !t.sortDisabled && L.initSort(s, t, e) } }), s.cancelSelection && t .attr('unselectable', 'on') .bind('selectstart', !1) .css({ 'user-select': 'none', MozUserSelect: 'none' }) }, buildHeaders: function (i) { var e, l, t, r for ( i.headerList = [], i.headerContent = [], i.sortVars = [], L.debug(i, 'core') && (t = new Date()), i.columns = L.computeColumnIndex( i.$table.children('thead, tfoot').children('tr') ), l = i.cssIcon ? '' : '', i.$headers = A( A.map(i.$table.find(i.selectorHeaders), function (e, t) { var r, o, s, a, n = A(e) if (!L.getClosest(n, 'tr').hasClass(i.cssIgnoreRow)) return ( /(th|td)/i.test(e.nodeName) || ((a = L.getClosest(n, 'th, td')), n.attr('data-column', a.attr('data-column'))), (r = L.getColumnData(i.table, i.headers, t, !0)), (i.headerContent[t] = n.html()), '' === i.headerTemplate || n.find('.' + L.css.headerIn).length || ((s = i.headerTemplate .replace(L.regex.templateContent, n.html()) .replace( L.regex.templateIcon, n.find('.' + L.css.icon).length ? '' : l )), i.onRenderTemplate && (o = i.onRenderTemplate.apply(n, [t, s])) && 'string' == typeof o && (s = o), n.html( '
' + s + '
' )), i.onRenderHeader && i.onRenderHeader.apply(n, [t, i, i.$table]), (o = parseInt(n.attr('data-column'), 10)), (e.column = o), (a = L.getOrder( L.getData(n, r, 'sortInitialOrder') || i.sortInitialOrder )), (i.sortVars[o] = { count: -1, order: a ? i.sortReset ? [1, 0, 2] : [1, 0] : i.sortReset ? [0, 1, 2] : [0, 1], lockedOrder: !1, sortedBy: '', }), void 0 !== (a = L.getData(n, r, 'lockedOrder') || !1) && !1 !== a && ((i.sortVars[o].lockedOrder = !0), (i.sortVars[o].order = L.getOrder(a) ? [1, 1] : [0, 0])), (i.headerList[t] = e), n.addClass(L.css.header + ' ' + i.cssHeader), L.getClosest(n, 'tr') .addClass(L.css.headerRow + ' ' + i.cssHeaderRow) .attr('role', 'row'), i.tabIndex && n.attr('tabindex', 0), e ) }) ), i.$headerIndexed = [], r = 0; r < i.columns; r++ ) L.isEmptyObject(i.sortVars[r]) && (i.sortVars[r] = {}), (e = i.$headers.filter('[data-column="' + r + '"]')), (i.$headerIndexed[r] = e.length ? (e.not('.sorter-false').length ? e.not('.sorter-false') : e ).filter(':last') : A()) i.$table .find(i.selectorHeaders) .attr({ scope: 'col', role: 'columnheader' }), L.updateHeader(i), L.debug(i, 'core') && (console.log('Built headers:' + L.benchmark(t)), console.log(i.$headers)) }, addInstanceMethods: function (e) { A.extend(L.instanceMethods, e) }, setupParsers: function (e, t) { var r, o, s, a, n, i, l, d, c, g, p, u, f, h, m = e.table, b = 0, y = L.debug(e, 'core'), w = {} if ( ((e.$tbodies = e.$table.children( 'tbody:not(.' + e.cssInfoBlock + ')' )), 0 === (h = (f = void 0 === t ? e.$tbodies : t).length)) ) return y ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '' for ( y && ((u = new Date()), console[console.group ? 'group' : 'log']( 'Detecting parsers for each column' )), o = { extractors: [], parsers: [] }; b < h; ) { if ((r = f[b].rows).length) for (a = e.columns, i = n = 0; i < a; i++) { if ( (l = e.$headerIndexed[n]) && l.length && ((d = L.getColumnData(m, e.headers, n)), (p = L.getParserById(L.getData(l, d, 'extractor'))), (g = L.getParserById(L.getData(l, d, 'sorter'))), (c = 'false' === L.getData(l, d, 'parser')), (e.empties[n] = ( L.getData(l, d, 'empty') || e.emptyTo || (e.emptyToBottom ? 'bottom' : 'top') ).toLowerCase()), (e.strings[n] = ( L.getData(l, d, 'string') || e.stringTo || 'max' ).toLowerCase()), (p = p || !1), (g = (g = c ? L.getParserById('no-parser') : g) || L.detectParserForColumn(e, r, -1, n)), y && (w['(' + n + ') ' + l.text()] = { parser: g.id, extractor: p ? p.id : 'none', string: e.strings[n], empty: e.empties[n], }), (o.parsers[n] = g), (o.extractors[n] = p), 0 < (s = l[0].colSpan - 1)) ) for (n += s, a += s; 0 < s + 1; ) (o.parsers[n - s] = g), (o.extractors[n - s] = p), s-- n++ } b += o.parsers.length ? h : 1 } y && (L.isEmptyObject(w) ? console.warn(' No parsers detected!') : console[console.table ? 'table' : 'log'](w), console.log('Completed detecting parsers' + L.benchmark(u)), console.groupEnd) && console.groupEnd(), (e.parsers = o.parsers), (e.extractors = o.extractors) }, addParser: function (e) { for (var t = L.parsers.length, r = !0, o = 0; o < t; o++) L.parsers[o].id.toLowerCase() === e.id.toLowerCase() && (r = !1) r && (L.parsers[L.parsers.length] = e) }, getParserById: function (e) { if ('false' != e) for (var t = L.parsers.length, r = 0; r < t; r++) if (L.parsers[r].id.toLowerCase() === e.toString().toLowerCase()) return L.parsers[r] return !1 }, detectParserForColumn: function (e, t, r, o) { for ( var s, a, n, i = L.parsers.length, l = !1, d = '', c = L.debug(e, 'core'), g = !0; '' === d && g; ) (n = t[++r]) && r < 50 ? n.className.indexOf(L.cssIgnoreRow) < 0 && ((l = t[r].cells[o]), (d = L.getElementText(e, l, o)), (a = A(l)), c) && console.log( 'Checking if value was empty on row ' + r + ', column: ' + o + ': "' + d + '"' ) : (g = !1) for (; 0 <= --i; ) if ( (s = L.parsers[i]) && 'text' !== s.id && s.is && s.is(d, e.table, l, a) ) return s return L.getParserById('text') }, getElementText: function (e, t, r) { var o, s, a return t ? ((s = e.textExtraction || ''), (a = t.jquery ? t : A(t)), 'string' == typeof s ? 'basic' === s && void 0 !== (o = a.attr(e.textAttribute)) ? A.trim(o) : A.trim(t.textContent || a.text()) : 'function' == typeof s ? A.trim(s(a[0], e.table, r)) : 'function' == typeof (o = L.getColumnData(e.table, s, r)) ? A.trim(o(a[0], e.table, r)) : A.trim(a[0].textContent || a.text())) : '' }, getParsedText: function (e, t, r, o) { var s = '' + (o = void 0 === o ? L.getElementText(e, t, r) : o), a = e.parsers[r], n = e.extractors[r] return (s = a && (n && 'function' == typeof n.format && (o = n.format(o, e.table, t, r)), (s = 'no-parser' === a.id ? '' : a.format('' + o, e.table, t, r)), e.ignoreCase) && 'string' == typeof s ? s.toLowerCase() : s) }, buildCache: function (e, t, r) { var o, s, a, n, i, l, d, c, g, p, u, f, h, m, b, y, w, x, C, v, $, I, D = e.table, R = e.parsers, T = L.debug(e, 'core') if ( ((e.$tbodies = e.$table.children( 'tbody:not(.' + e.cssInfoBlock + ')' )), (d = void 0 === r ? e.$tbodies : r), (e.cache = {}), (e.totalRows = 0), !R) ) return T ? console.warn('Warning: *Empty table!* Not building a cache') : '' for ( T && (f = new Date()), e.showProcessing && L.isProcessing(D, !0), l = 0; l < d.length; l++ ) { for ( y = [], o = e.cache[l] = { normalized: [] }, h = (d[l] && d[l].rows.length) || 0, n = 0; n < h; ++n ) if ( ((m = { child: [], raw: [] }), (g = []), !(c = A(d[l].rows[n])).hasClass(e.selectorRemove.slice(1))) ) if (c.hasClass(e.cssChildRow) && 0 !== n) for ( $ = o.normalized.length - 1, (b = o.normalized[$][e.columns]).$row = b.$row.add(c), c.prev().hasClass(e.cssChildRow) || c.prev().addClass(L.css.cssHasChild), p = c.children('th, td'), $ = b.child.length, b.child[$] = [], v = e.columns, i = x = 0; i < v; i++ ) (u = p[i]) && ((b.child[$][i] = L.getParsedText(e, u, i)), 0 < (w = p[i].colSpan - 1)) && ((x += w), (v += w)), x++ else { for ( m.$row = c, m.order = n, v = e.columns, i = x = 0; i < v; ++i ) { if ( (u = c[0].cells[i]) && x < e.columns && (!(C = void 0 !== R[x]) && T && console.warn( 'No parser found for row: ' + n + ', column: ' + i + '; cell containing: "' + A(u).text() + '"; does it have a header?' ), (s = L.getElementText(e, u, x)), (m.raw[x] = s), (a = L.getParsedText(e, u, x, s)), (g[x] = a), C && 'numeric' === (R[x].type || '').toLowerCase() && (y[x] = Math.max(Math.abs(a) || 0, y[x] || 0)), 0 < (w = u.colSpan - 1)) ) { for (I = 0; I <= w; ) (a = e.duplicateSpan || 0 === I ? a : ('string' != typeof e.textExtraction && L.getElementText(e, u, x + I)) || ''), (m.raw[x + I] = a), (g[x + I] = a), I++ ;(x += w), (v += w) } x++ } ;(g[e.columns] = m), (o.normalized[o.normalized.length] = g) } ;(o.colMax = y), (e.totalRows += o.normalized.length) } if ((e.showProcessing && L.isProcessing(D), T)) { for ( $ = Math.min(5, e.cache[0].normalized.length), console[console.group ? 'group' : 'log']( 'Building cache for ' + e.totalRows + ' rows (showing ' + $ + ' rows in log) and ' + e.columns + ' columns' + L.benchmark(f) ), s = {}, i = 0; i < e.columns; i++ ) for (x = 0; x < $; x++) s['row: ' + x] || (s['row: ' + x] = {}), (s['row: ' + x][e.$headerIndexed[i].text()] = e.cache[0].normalized[x][i]) console[console.table ? 'table' : 'log'](s), console.groupEnd && console.groupEnd() } A.isFunction(t) && t(D) }, getColumnText: function (e, t, r, o) { var s, a, n, i, l, d, c, g, p, u, f = 'function' == typeof r, h = 'all' === t, m = { raw: [], parsed: [], $cell: [] }, b = (e = A(e)[0]).config if (!L.isEmptyObject(b)) { for (l = b.$tbodies.length, s = 0; s < l; s++) for (d = (n = b.cache[s].normalized).length, a = 0; a < d; a++) (i = n[a]), (o && !i[b.columns].$row.is(o)) || ((u = !0), (g = h ? i.slice(0, b.columns) : i[t]), (i = i[b.columns]), (c = h ? i.raw : i.raw[t]), (p = h ? i.$row.children() : i.$row.children().eq(t)), !1 !== (u = f ? r({ tbodyIndex: s, rowIndex: a, parsed: g, raw: c, $row: i.$row, $cell: p, }) : u) && ((m.parsed[m.parsed.length] = g), (m.raw[m.raw.length] = c), (m.$cell[m.$cell.length] = p))) return m } L.debug(b, 'core') && console.warn('No cache found - aborting getColumnText function!') }, setHeadersCss: function (s) { function e(e, t) { e.removeClass(n) .addClass(i[t]) .attr('aria-sort', d[t]) .find('.' + L.css.icon) .removeClass(l[2]) .addClass(l[t]) } var t, r, o = s.sortList, a = o.length, n = L.css.sortNone + ' ' + s.cssNone, i = [ L.css.sortAsc + ' ' + s.cssAsc, L.css.sortDesc + ' ' + s.cssDesc, ], l = [s.cssIconAsc, s.cssIconDesc, s.cssIconNone], d = ['ascending', 'descending'], c = s.$table .find('tfoot tr') .children('td, th') .add(A(s.namespace + '_extra_headers')) .removeClass(i.join(' ')), g = s.$headers .add(A('thead ' + s.namespace + '_extra_headers')) .removeClass(i.join(' ')) .addClass(n) .attr('aria-sort', 'none') .find('.' + L.css.icon) .removeClass(l.join(' ')) .end() for ( g .not('.sorter-false') .find('.' + L.css.icon) .addClass(l[2]), s.cssIconDisabled && g .filter('.sorter-false') .find('.' + L.css.icon) .addClass(s.cssIconDisabled), t = 0; t < a; t++ ) if (2 !== o[t][1]) { if ( (g = (g = s.$headers.filter(function (e) { for ( var t = !0, e = s.$headers.eq(e), r = parseInt(e.attr('data-column'), 10), o = r + L.getClosest(e, 'th, td')[0].colSpan; r < o; r++ ) t = t || !1 return t })) .not('.sorter-false') .filter( '[data-column="' + o[t][0] + '"]' + (1 === a ? ':last' : '') )).length ) for (r = 0; r < g.length; r++) g[r].sortDisabled || e(g.eq(r), o[t][1]) c.length && e(c.filter('[data-column="' + o[t][0] + '"]'), o[t][1]) } for (a = s.$headers.length, t = 0; t < a; t++) L.setColumnAriaLabel(s, s.$headers.eq(t)) }, getClosest: function (e, t) { return A.fn.closest ? e.closest(t) : e.is(t) ? e : e.parents(t).filter(':first') }, setColumnAriaLabel: function (e, t, r) { var o, s t.length && ((o = parseInt(t.attr('data-column'), 10)), (e = e.sortVars[o]), (o = t.hasClass(L.css.sortAsc) ? 'sortAsc' : t.hasClass(L.css.sortDesc) ? 'sortDesc' : 'sortNone'), (s = A.trim(t.text()) + ': ' + L.language[o]), t.hasClass('sorter-false') || !1 === r ? (s += L.language.sortDisabled) : ((o = (e.count + 1) % e.order.length), (r = e.order[o]), (s += L.language[ 0 === r ? 'nextAsc' : 1 === r ? 'nextDesc' : 'nextNone' ])), t.attr('aria-label', s), e.sortedBy ? t.attr('data-sortedBy', e.sortedBy) : t.removeAttr('data-sortedBy')) }, updateHeader: function (e) { for (var t, r, o = e.table, s = e.$headers.length, a = 0; a < s; a++) (t = e.$headers.eq(a)), (r = L.getColumnData(o, e.headers, a, !0)), (r = 'false' === L.getData(t, r, 'sorter') || 'false' === L.getData(t, r, 'parser')), L.setColumnSort(e, t, r) }, setColumnSort: function (e, t, r) { var o = e.table.id ;(t[0].sortDisabled = r), t[r ? 'addClass' : 'removeClass']('sorter-false').attr( 'aria-disabled', '' + r ), e.tabIndex && (r ? t.removeAttr('tabindex') : t.attr('tabindex', '0')), o && (r ? t.removeAttr('aria-controls') : t.attr('aria-controls', o)) }, updateHeaderSortCount: function (e, t) { var r, o, s, a, n, i, l, d = t || e.sortList, c = d.length for (e.sortList = [], s = 0; s < c; s++) if (((i = d[s]), (r = parseInt(i[0], 10)) < e.columns)) { switch ( (e.sortVars[r].order || ((l = L.getOrder(e.sortInitialOrder) ? e.sortReset ? [1, 0, 2] : [1, 0] : e.sortReset ? [0, 1, 2] : [0, 1]), (e.sortVars[r].order = l), (e.sortVars[r].count = 0)), (l = e.sortVars[r].order), (o = (o = ('' + i[1]).match(/^(1|d|s|o|n)/)) ? o[0] : '')) ) { case '1': case 'd': o = 1 break case 's': o = a || 0 break case 'o': o = 0 === (n = l[(a || 0) % l.length]) ? 1 : 1 === n ? 0 : 2 break case 'n': o = l[++e.sortVars[r].count % l.length] break default: o = 0 } ;(a = 0 === s ? o : a), (i = [r, parseInt(o, 10) || 0]), (e.sortList[e.sortList.length] = i), (o = A.inArray(i[1], l)), (e.sortVars[r].count = 0 <= o ? o : i[1] % l.length) } }, updateAll: function (e, t, r) { var o = e.table ;(o.isUpdating = !0), L.refreshWidgets(o, !0, !0), L.buildHeaders(e), L.bindEvents(o, e.$headers, !0), L.bindMethods(e), L.commonUpdate(e, t, r) }, update: function (e, t, r) { ;(e.table.isUpdating = !0), L.updateHeader(e), L.commonUpdate(e, t, r) }, updateHeaders: function (e, t) { ;(e.table.isUpdating = !0), L.buildHeaders(e), L.bindEvents(e.table, e.$headers, !0), L.resortComplete(e, t) }, updateCell: function (e, t, r, o) { if (A(t).closest('tr').hasClass(e.cssChildRow)) console.warn( 'Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead' ) else if (L.isEmptyObject(e.cache)) L.updateHeader(e), L.commonUpdate(e, r, o) else { ;(e.table.isUpdating = !0), e.$table.find(e.selectorRemove).remove() var s, a, n, i, l = e.$tbodies, d = A(t), c = l.index(L.getClosest(d, 'tbody')), g = e.cache[c], p = L.getClosest(d, 'tr') if (((t = d[0]), l.length && 0 <= c)) { if ( ((l = l .eq(c) .find('tr') .not('.' + e.cssChildRow) .index(p)), (c = g.normalized[l]), (i = p[0].cells.length) !== e.columns) ) for (s = !1, a = n = 0; a < i; a++) s || p[0].cells[a] === t ? (s = !0) : (n += p[0].cells[a].colSpan) else n = d.index() ;(s = L.getElementText(e, t, n)), (c[e.columns].raw[n] = s), (s = L.getParsedText(e, t, n, s)), (c[n] = s), 'numeric' === (e.parsers[n].type || '').toLowerCase() && (g.colMax[n] = Math.max(Math.abs(s) || 0, g.colMax[n] || 0)), !1 !== (s = 'undefined' !== r ? r : e.resort) ? L.checkResort(e, s, o) : L.resortComplete(e, o) } else L.debug(e, 'core') && console.error( 'updateCell aborted, tbody missing or not within the indicated table' ), (e.table.isUpdating = !1) } }, addRows: function (e, t, r, o) { var s, a, n, i, l, d, c, g, p, u, f, h = 'string' == typeof t && 1 === e.$tbodies.length && /'), t = e.$table.width(), s = (o = e.$tbodies.find('tr:first').children(':visible')) .length, a = 0; a < s; a++ ) (r = parseInt((o.eq(a).width() / t) * 1e3, 10) / 10 + '%'), n.append(A('').css('width', r)) e.$table.prepend(n) } }, getData: function (e, t, r) { var o, s, a = '', e = A(e) return e.length ? ((o = !!A.metadata && e.metadata()), (s = ' ' + (e.attr('class') || '')), void 0 !== e.data(r) || void 0 !== e.data(r.toLowerCase()) ? (a += e.data(r) || e.data(r.toLowerCase())) : o && void 0 !== o[r] ? (a += o[r]) : t && void 0 !== t[r] ? (a += t[r]) : ' ' !== s && s.match(' ' + r + '-') && (a = s.match(new RegExp('\\s' + r + '-([\\w-]+)'))[1] || ''), A.trim(a)) : '' }, getColumnData: function (e, t, r, o, s) { if ('object' != typeof t || null === t) return t var a, e = (e = A(e)[0]).config, s = s || e.$headers, n = (e.$headerIndexed && e.$headerIndexed[r]) || s.find('[data-column="' + r + '"]:last') if (void 0 !== t[r]) return o ? t[r] : t[s.index(n)] for (a in t) if ('string' == typeof a && n.filter(a).add(n.find(a)).length) return t[a] }, isProcessing: function (e, t, r) { var o = (e = A(e))[0].config, s = r || e.find('.' + L.css.header) t ? (void 0 !== r && 0 < o.sortList.length && (s = s.filter(function () { return ( !this.sortDisabled && 0 <= L.isValueInArray( parseFloat(A(this).attr('data-column')), o.sortList ) ) })), e.add(s).addClass(L.css.processing + ' ' + o.cssProcessing)) : e.add(s).removeClass(L.css.processing + ' ' + o.cssProcessing) }, processTbody: function (e, t, r) { if (((e = A(e)[0]), r)) return ( (e.isProcessing = !0), t.before(''), A.fn.detach ? t.detach() : t.remove() ) r = A(e).find('colgroup.tablesorter-savemyplace') t.insertAfter(r), r.remove(), (e.isProcessing = !1) }, clearTableBody: function (e) { A(e)[0].config.$tbodies.children().detach() }, characterEquivalents: { a: 'áàâãäąå', A: 'ÁÀÂÃÄĄÅ', c: 'çćč', C: 'ÇĆČ', e: 'éèêëěę', E: 'ÉÈÊËĚĘ', i: 'íìİîïı', I: 'ÍÌİÎÏ', o: 'óòôõöō', O: 'ÓÒÔÕÖŌ', ss: 'ß', SS: 'ẞ', u: 'úùûüů', U: 'ÚÙÛÜŮ', }, replaceAccents: function (e) { var t, r = '[', o = L.characterEquivalents if (!L.characterRegex) { for (t in ((L.characterRegexArray = {}), o)) 'string' == typeof t && ((r += o[t]), (L.characterRegexArray[t] = new RegExp('[' + o[t] + ']', 'g'))) L.characterRegex = new RegExp(r + ']') } if (L.characterRegex.test(e)) for (t in o) 'string' == typeof t && (e = e.replace(L.characterRegexArray[t], t)) return e }, validateOptions: function (e) { var t, r, o, s, a = 'headers sortForce sortList sortAppend widgets'.split(' '), n = e.originalSettings if (n) { for (t in (L.debug(e, 'core') && (s = new Date()), n)) if ('undefined' === (o = typeof L.defaults[t])) console.warn( 'Tablesorter Warning! "table.config.' + t + '" option not recognized' ) else if ('object' === o) for (r in n[t]) (o = L.defaults[t] && typeof L.defaults[t][r]), A.inArray(t, a) < 0 && 'undefined' === o && console.warn( 'Tablesorter Warning! "table.config.' + t + '.' + r + '" option not recognized' ) L.debug(e, 'core') && console.log('validate options time:' + L.benchmark(s)) } }, restoreHeaders: function (e) { for ( var t, r = A(e)[0].config, o = r.$table.find(r.selectorHeaders), s = o.length, a = 0; a < s; a++ ) (t = o.eq(a)).find('.' + L.css.headerIn).length && t.html(r.headerContent[a]) }, destroy: function (e, t, r) { var o, s, a, n, i ;(e = A(e)[0]).hasInitialized && (L.removeWidget(e, !0, !1), (o = A(e)), (s = e.config), (n = (a = o.find('thead:first')) .find('tr.' + L.css.headerRow) .removeClass(L.css.headerRow + ' ' + s.cssHeaderRow)), (i = o.find('tfoot:first > tr').children('th, td')), !1 === t && 0 <= A.inArray('uitheme', s.widgets) && (o.triggerHandler('applyWidgetId', ['uitheme']), o.triggerHandler('applyWidgetId', ['zebra'])), a.find('tr').not(n).remove(), (a = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave ' + 'keypress sortBegin sortEnd resetToLoadState ' .split(' ') .join(s.namespace + ' ')), o.removeData('tablesorter').unbind(a.replace(L.regex.spaces, ' ')), s.$headers .add(i) .removeClass( [ L.css.header, s.cssHeader, s.cssAsc, s.cssDesc, L.css.sortAsc, L.css.sortDesc, L.css.sortNone, ].join(' ') ) .removeAttr('data-column') .removeAttr('aria-label') .attr('aria-disabled', 'true'), n.find(s.selectorSort).unbind( 'mousedown mouseup keypress ' .split(' ') .join(s.namespace + ' ') .replace(L.regex.spaces, ' ') ), L.restoreHeaders(e), o.toggleClass( L.css.table + ' ' + s.tableClass + ' tablesorter-' + s.theme, !1 === t ), o.removeClass(s.namespace.slice(1)), (e.hasInitialized = !1), delete e.config.cache, 'function' == typeof r && r(e), L.debug(s, 'core')) && console.log('tablesorter has been removed') }, }) ;(A.fn.tablesorter = function (t) { return this.each(function () { var e = A.extend(!0, {}, L.defaults, t, L.instanceMethods) ;(e.originalSettings = t), !this.hasInitialized && L.buildTable && 'TABLE' !== this.nodeName ? L.buildTable(this, e) : L.setup(this, e) }) }), (window.console && window.console.log) || ((L.logs = []), ((console = {}).log = console.warn = console.error = console.table = function () { var e = 1 < arguments.length ? arguments : arguments[0] L.logs[L.logs.length] = { date: Date.now(), log: e } })), L.addParser({ id: 'no-parser', is: function () { return !1 }, format: function () { return '' }, type: 'text', }), L.addParser({ id: 'text', is: function () { return !0 }, format: function (e, t) { t = t.config return ( e && ((e = A.trim(t.ignoreCase ? e.toLocaleLowerCase() : e)), (e = t.sortLocaleCompare ? L.replaceAccents(e) : e)), e ) }, type: 'text', }), (L.regex.nondigit = /[^\w,. \-()]/g), L.addParser({ id: 'digit', is: function (e) { return L.isDigit(e) }, format: function (e, t) { var r = L.formatFloat((e || '').replace(L.regex.nondigit, ''), t) return e && 'number' == typeof r ? r : e && A.trim(e && t.config.ignoreCase ? e.toLocaleLowerCase() : e) }, type: 'numeric', }), (L.regex.currencyReplace = /[+\-,. ]/g), (L.regex.currencyTest = /^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/), L.addParser({ id: 'currency', is: function (e) { return ( (e = (e || '').replace(L.regex.currencyReplace, '')), L.regex.currencyTest.test(e) ) }, format: function (e, t) { var r = L.formatFloat((e || '').replace(L.regex.nondigit, ''), t) return e && 'number' == typeof r ? r : e && A.trim(e && t.config.ignoreCase ? e.toLocaleLowerCase() : e) }, type: 'numeric', }), (L.regex.urlProtocolTest = /^(https?|ftp|file):\/\//), (L.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/), L.addParser({ id: 'url', is: function (e) { return L.regex.urlProtocolTest.test(e) }, format: function (e) { return e && A.trim(e.replace(L.regex.urlProtocolReplace, '')) }, type: 'text', }), (L.regex.dash = /-/g), (L.regex.isoDate = /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/), L.addParser({ id: 'isoDate', is: function (e) { return L.regex.isoDate.test(e) }, format: function (e) { var t = e && new Date(e.replace(L.regex.dash, '/')) return t instanceof Date && isFinite(t) ? t.getTime() : e }, type: 'numeric', }), (L.regex.percent = /%/g), (L.regex.percentTest = /(\d\s*?%|%\s*?\d)/), L.addParser({ id: 'percent', is: function (e) { return L.regex.percentTest.test(e) && e.length < 15 }, format: function (e, t) { return e && L.formatFloat(e.replace(L.regex.percent, ''), t) }, type: 'numeric', }), L.addParser({ id: 'image', is: function (e, t, r, o) { return 0 < o.find('img').length }, format: function (e, t, r) { return ( A(r) .find('img') .attr(t.config.imgAttr || 'alt') || e ) }, parsed: !0, type: 'text', }), (L.regex.dateReplace = /(\S)([AP]M)$/i), (L.regex.usLongDateTest1 = /^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i), (L.regex.usLongDateTest2 = /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i), L.addParser({ id: 'usLongDate', is: function (e) { return ( L.regex.usLongDateTest1.test(e) || L.regex.usLongDateTest2.test(e) ) }, format: function (e) { var t = e && new Date(e.replace(L.regex.dateReplace, '$1 $2')) return t instanceof Date && isFinite(t) ? t.getTime() : e }, type: 'numeric', }), (L.regex.shortDateTest = /(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/), (L.regex.shortDateReplace = /[\-.,]/g), (L.regex.shortDateXXY = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/), (L.regex.shortDateYMD = /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/), (L.convertFormat = function (e, t) { ;(e = (e || '') .replace(L.regex.spaces, ' ') .replace(L.regex.shortDateReplace, '/')), 'mmddyyyy' === t ? (e = e.replace(L.regex.shortDateXXY, '$3/$1/$2')) : 'ddmmyyyy' === t ? (e = e.replace(L.regex.shortDateXXY, '$3/$2/$1')) : 'yyyymmdd' === t && (e = e.replace(L.regex.shortDateYMD, '$1/$2/$3')) t = new Date(e) return t instanceof Date && isFinite(t) ? t.getTime() : '' }), L.addParser({ id: 'shortDate', is: function (e) { return ( (e = (e || '') .replace(L.regex.spaces, ' ') .replace(L.regex.shortDateReplace, '/')), L.regex.shortDateTest.test(e) ) }, format: function (e, t, r, o) { var s, a return ( e && ((t = ((a = (s = t.config).$headerIndexed[o]).length && a.data('dateFormat')) || L.getData(a, L.getColumnData(t, s.headers, o), 'dateFormat') || s.dateFormat), a.length && a.data('dateFormat', t), L.convertFormat(e, t) || e) ) }, type: 'numeric', }), (L.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i), (L.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i), L.addParser({ id: 'time', is: function (e) { return L.regex.timeTest.test(e) }, format: function (e) { var t = (e || '').match(L.regex.timeMatch), r = new Date(e), t = e && (null !== t ? t[0] : '00:00 AM'), t = t && new Date( '2000/01/01 ' + t.replace(L.regex.dateReplace, '$1 $2') ) return t instanceof Date && isFinite(t) ? (r instanceof Date && isFinite(r) ? r.getTime() : 0) ? parseFloat(t.getTime() + '.' + r.getTime()) : t.getTime() : e }, type: 'numeric', }), L.addParser({ id: 'metadata', is: function () { return !1 }, format: function (e, t, r) { ;(t = t.config), (t = t.parserMetadataName || 'sortValue') return A(r).metadata()[t] }, type: 'numeric', }), L.addWidget({ id: 'zebra', priority: 90, format: function (e, t, r) { for ( var o, s, a, n, i, l = new RegExp(t.cssChildRow, 'i'), d = t.$tbodies.add( A(t.namespace + '_extra_table').children( 'tbody:not(.' + t.cssInfoBlock + ')' ) ), c = 0; c < d.length; c++ ) for ( s = 0, i = (o = d.eq(c).children('tr:visible').not(t.selectorRemove)) .length, n = 0; n < i; n++ ) (a = o.eq(n)), l.test(a[0].className) || s++, a .removeClass(r.zebra[(a = s % 2 == 0) ? 1 : 0]) .addClass(r.zebra[a ? 0 : 1]) }, remove: function (e, t, r, o) { if (!o) for ( var s, a = t.$tbodies, n = (r.zebra || ['even', 'odd']).join(' '), i = 0; i < a.length; i++ ) (s = L.processTbody(e, a.eq(i), !0)).children().removeClass(n), L.processTbody(e, s, !1) }, }) })(e), e.tablesorter ) }) ;(function (factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory) } else if (typeof module === 'object' && typeof module.exports === 'object') { module.exports = factory(require('jquery')) } else { factory(jQuery) } })(function (jQuery) { /*! tablesorter (FORK) - updated 2024-08-13 (v2.32.0)*/ !(function (e) { 'function' == typeof define && define.amd ? define(['jquery'], e) : 'object' == typeof module && 'object' == typeof module.exports ? (module.exports = e(require('jquery'))) : e(jQuery) })(function (e) { return ( (function (h, u, p) { 'use strict' var g = h.tablesorter || {} h.extend(!0, g.defaults, { fixedUrl: '', widgetOptions: { storage_fixedUrl: '', storage_group: '', storage_page: '', storage_storageType: '', storage_tableId: '', storage_useSessionStorage: '', }, }), (g.storage = function (e, t, r, i) { var a = !1, l = {}, s = (e = h(e)[0]).config, n = s && s.widgetOptions, o = g.debug(s, 'storage'), c = ((i && i.storageType) || (n && n.storage_storageType)) .toString() .charAt(0) .toLowerCase(), d = c ? '' : (i && i.useSessionStorage) || (n && n.storage_useSessionStorage), f = h(e), e = (i && i.id) || f.attr( (i && i.group) || (n && n.storage_group) || 'data-table-group' ) || (n && n.storage_tableId) || e.id || h('.tablesorter').index(f), f = (i && i.url) || f.attr( (i && i.page) || (n && n.storage_page) || 'data-table-page' ) || (n && n.storage_fixedUrl) || (s && s.fixedUrl) || u.location.pathname if ( 'c' !== c && (c = 's' === c || d ? 'sessionStorage' : 'localStorage') in u ) try { u[c].setItem('_tmptest', 'temp'), (a = !0), u[c].removeItem('_tmptest') } catch (e) { console.warn(c + ' is not supported in this browser') } if ( (o && console.log('Storage >> Using', a ? c : 'cookies'), h.parseJSON && (l = a ? h.parseJSON(u[c][t] || 'null') || {} : ((i = p.cookie.split(/[;\s|=]/)), (0 !== (n = h.inArray(t, i) + 1) && h.parseJSON(i[n] || 'null')) || {})), void 0 === r || !u.JSON || !JSON.hasOwnProperty('stringify')) ) return l && l[f] ? l[f][e] : '' l[f] || (l[f] = {}), (l[f][e] = r), a ? (u[c][t] = JSON.stringify(l)) : ((s = new Date()).setTime(s.getTime() + 31536e6), (p.cookie = t + '=' + JSON.stringify(l).replace(/\"/g, '"') + '; expires=' + s.toGMTString() + '; path=/')) }) })(e, window, document), (function (S) { 'use strict' var C = S.tablesorter || {} ;(C.themes = { bootstrap: { table: 'table table-bordered table-striped', caption: 'caption', header: 'bootstrap-header', sortNone: '', sortAsc: '', sortDesc: '', active: '', hover: '', icons: '', iconSortNone: 'bootstrap-icon-unsorted', iconSortAsc: 'glyphicon glyphicon-chevron-up', iconSortDesc: 'glyphicon glyphicon-chevron-down', filterRow: '', footerRow: '', footerCells: '', even: '', odd: '', }, jui: { table: 'ui-widget ui-widget-content ui-corner-all', caption: 'ui-widget-content', header: 'ui-widget-header ui-corner-all ui-state-default', sortNone: '', sortAsc: '', sortDesc: '', active: 'ui-state-active', hover: 'ui-state-hover', icons: 'ui-icon', iconSortNone: 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', iconSortAsc: 'ui-icon-carat-1-n ui-icon-caret-1-n', iconSortDesc: 'ui-icon-carat-1-s ui-icon-caret-1-s', filterRow: '', footerRow: '', footerCells: '', even: 'ui-widget-content', odd: 'ui-state-default', }, }), S.extend(C.css, { wrapper: 'tablesorter-wrapper' }), C.addWidget({ id: 'uitheme', priority: 10, format: function (e, t, r) { var i, a, l, s, n, o, c, d, f, h, u, p, g = C.themes, m = t.$table.add(S(t.namespace + '_extra_table')), b = t.$headers.add(S(t.namespace + '_extra_headers')), y = t.theme || 'jui', _ = g[y] || {}, v = S.trim( [_.sortNone, _.sortDesc, _.sortAsc, _.active].join(' ') ), w = S.trim( [_.iconSortNone, _.iconSortDesc, _.iconSortAsc].join(' ') ), x = C.debug(t, 'uitheme') for ( x && (n = new Date()), (m.hasClass('tablesorter-' + y) && t.theme === t.appliedTheme && r.uitheme_applied) || ((r.uitheme_applied = !0), (h = g[t.appliedTheme] || {}), (g = (p = !S.isEmptyObject(h)) ? [h.sortNone, h.sortDesc, h.sortAsc, h.active].join(' ') : ''), (u = p ? [h.iconSortNone, h.iconSortDesc, h.iconSortAsc].join( ' ' ) : ''), p && ((r.zebra[0] = S.trim( ' ' + r.zebra[0].replace(' ' + h.even, '') )), (r.zebra[1] = S.trim( ' ' + r.zebra[1].replace(' ' + h.odd, '') )), t.$tbodies .children() .removeClass([h.even, h.odd].join(' '))), _.even && (r.zebra[0] += ' ' + _.even), _.odd && (r.zebra[1] += ' ' + _.odd), m .children('caption') .removeClass(h.caption || '') .addClass(_.caption), (d = m .removeClass( (t.appliedTheme ? 'tablesorter-' + (t.appliedTheme || '') : '') + ' ' + (h.table || '') ) .addClass('tablesorter-' + y + ' ' + (_.table || '')) .children('tfoot')), (t.appliedTheme = t.theme), d.length && d .children('tr') .removeClass(h.footerRow || '') .addClass(_.footerRow) .children('th, td') .removeClass(h.footerCells || '') .addClass(_.footerCells), b .removeClass( (p ? [h.header, h.hover, g].join(' ') : '') || '' ) .addClass(_.header) .not('.sorter-false') .unbind('mouseenter.tsuitheme mouseleave.tsuitheme') .bind( 'mouseenter.tsuitheme mouseleave.tsuitheme', function (e) { S(this)[ 'mouseenter' === e.type ? 'addClass' : 'removeClass' ](_.hover || '') } ), b.each(function () { var e = S(this) e.find('.' + C.css.wrapper).length || e.wrapInner( '
' ) }), t.cssIcon && b .find('.' + C.css.icon) .removeClass(p ? [h.icons, u].join(' ') : '') .addClass(_.icons || ''), C.hasWidget(t.table, 'filter') && ((a = function () { m.children('thead') .children('.' + C.css.filterRow) .removeClass((p && h.filterRow) || '') .addClass(_.filterRow || '') }), r.filter_initialized ? a() : m.one('filterInit', function () { a() }))), i = 0; i < t.columns; i++ ) (o = t.$headers .add(S(t.namespace + '_extra_headers')) .not('.sorter-false') .filter('[data-column="' + i + '"]')), (c = C.css.icon ? o.find('.' + C.css.icon) : S()), (f = b .not('.sorter-false') .filter('[data-column="' + i + '"]:last')).length && (o.removeClass(v), c.removeClass(w), f[0].sortDisabled ? c.removeClass(_.icons || '') : ((l = _.sortNone), (s = _.iconSortNone), f.hasClass(C.css.sortAsc) ? ((l = [_.sortAsc, _.active].join(' ')), (s = _.iconSortAsc)) : f.hasClass(C.css.sortDesc) && ((l = [_.sortDesc, _.active].join(' ')), (s = _.iconSortDesc)), o.addClass(l), c.addClass(s || ''))) x && console.log( 'uitheme >> Applied ' + y + ' theme' + C.benchmark(n) ) }, remove: function (e, t, r, i) { var a, l, s, n, o r.uitheme_applied && ((a = t.$table), (t = t.appliedTheme || 'jui'), (l = C.themes[t] || C.themes.jui), (s = a.children('thead').children()), (n = l.sortNone + ' ' + l.sortDesc + ' ' + l.sortAsc), (o = l.iconSortNone + ' ' + l.iconSortDesc + ' ' + l.iconSortAsc), a.removeClass('tablesorter-' + t + ' ' + l.table), (r.uitheme_applied = !1), i || (a.find(C.css.header).removeClass(l.header), s .unbind('mouseenter.tsuitheme mouseleave.tsuitheme') .removeClass(l.hover + ' ' + n + ' ' + l.active) .filter('.' + C.css.filterRow) .removeClass(l.filterRow), s.find('.' + C.css.icon).removeClass(l.icons + ' ' + o))) }, }) })(e), (function (m) { 'use strict' var b = m.tablesorter || {} b.addWidget({ id: 'columns', priority: 65, options: { columns: ['primary', 'secondary', 'tertiary'] }, format: function (e, t, r) { for ( var i, a, l, s, n, o = t.$table, c = t.$tbodies, d = t.sortList, f = d.length, h = (r && r.columns) || ['primary', 'secondary', 'tertiary'], u = h.length - 1, p = h.join(' '), g = 0; g < c.length; g++ ) (a = (i = b.processTbody(e, c.eq(g), !0)).children('tr')).each( function () { if ( ((l = m(this)), 'none' !== this.style.display && ((s = l.children().removeClass(p)), d) && d[0] && (s.eq(d[0][0]).addClass(h[0]), 1 < f)) ) for (n = 1; n < f; n++) s.eq(d[n][0]).addClass(h[n] || h[u]) } ), b.processTbody(e, i, !1) if ( ((t = !1 !== r.columns_thead ? ['thead tr'] : []), !1 !== r.columns_tfoot && t.push('tfoot tr'), t.length && ((a = o.find(t.join(',')).children().removeClass(p)), f)) ) for (n = 0; n < f; n++) a.filter('[data-column="' + d[n][0] + '"]').addClass( h[n] || h[u] ) }, remove: function (e, t, r) { var i, a, l = t.$tbodies, s = (r.columns || ['primary', 'secondary', 'tertiary']).join(' ') for ( t.$headers.removeClass(s), t.$table .children('tfoot') .children('tr') .children('th, td') .removeClass(s), i = 0; i < l.length; i++ ) (a = b.processTbody(e, l.eq(i), !0)) .children('tr') .each(function () { m(this).children().removeClass(s) }), b.processTbody(e, a, !1) }, }) })(e), (function (A) { 'use strict' var I, O, E = A.tablesorter || {}, g = E.css, o = E.keyCodes A.extend(g, { filterRow: 'tablesorter-filter-row', filter: 'tablesorter-filter', filterDisabled: 'disabled', filterRowHide: 'hideme', }), A.extend(o, { backSpace: 8, escape: 27, space: 32, left: 37, down: 40, }), E.addWidget({ id: 'filter', priority: 50, options: { filter_cellFilter: '', filter_childRows: !1, filter_childByColumn: !1, filter_childWithSibs: !0, filter_columnAnyMatch: !0, filter_columnFilters: !0, filter_cssFilter: '', filter_defaultAttrib: 'data-value', filter_defaultFilter: {}, filter_excludeFilter: {}, filter_external: '', filter_filteredRow: 'filtered', filter_filterLabel: 'Filter "{{label}}" column by...', filter_formatter: null, filter_functions: null, filter_hideEmpty: !0, filter_hideFilters: !1, filter_ignoreCase: !0, filter_liveSearch: !0, filter_matchType: { input: 'exact', select: 'exact' }, filter_onlyAvail: 'filter-onlyAvail', filter_placeholder: { search: '', select: '' }, filter_reset: null, filter_resetOnEsc: !0, filter_saveFilters: !1, filter_searchDelay: 300, filter_searchFiltered: !0, filter_selectSource: null, filter_selectSourceSeparator: '|', filter_serversideFiltering: !1, filter_startsWith: !1, filter_useParsedData: !1, }, format: function (e, t, r) { t.$table.hasClass('hasFilters') || I.init(e, t, r) }, remove: function (e, t, r, i) { var a, l, s = t.$table, n = t.$tbodies, o = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterFomatterUpdate filterEnd search stickyHeadersInit ' .split(' ') .join(t.namespace + 'filter ') if ( (s .removeClass('hasFilters') .unbind(o.replace(E.regex.spaces, ' ')) .find('.' + g.filterRow) .remove(), (r.filter_initialized = !1), !i) ) { for (a = 0; a < n.length; a++) (l = E.processTbody(e, n.eq(a), !0)) .children() .removeClass(r.filter_filteredRow) .show(), E.processTbody(e, l, !1) r.filter_reset && A(document).undelegate( r.filter_reset, 'click' + t.namespace + 'filter' ) } }, }), (I = E.filter = { regex: { regex: /^\/((?:\\\/|[^\/])+)\/([migyu]{0,5})?$/, child: /tablesorter-childRow/, filtered: /filtered/, type: /undefined|number/, exact: /(^[\"\'=]+)|([\"\'=]+$)/g, operators: /[<>=]/g, query: '(q|query)', wild01: /\?/g, wild0More: /\*/g, quote: /\"/g, isNeg1: /(>=?\s*-\d)/, isNeg2: /(<=?\s*\d)/, }, types: { or: function (e, t, r) { if ( (!O.orTest.test(t.iFilter) && !O.orSplit.test(t.filter)) || O.regex.test(t.filter) ) return null for ( var i, a, l = A.extend({}, t), s = t.filter.split(O.orSplit), n = t.iFilter.split(O.orSplit), o = s.length, c = 0; c < o; c++ ) { ;(l.nestedFilters = !0), (l.filter = '' + (I.parseFilter(e, s[c], t) || '')), (l.iFilter = '' + (I.parseFilter(e, n[c], t) || '')), (a = '(' + (I.parseFilter(e, l.filter, t) || '') + ')') try { if ( (i = new RegExp( t.isMatch ? a : '^' + a + '$', e.widgetOptions.filter_ignoreCase ? 'i' : '' ).test(l.exact) || I.processTypes(e, l, r)) ) return i } catch (e) { return null } } return i || !1 }, and: function (e, t, r) { if (O.andTest.test(t.filter)) { for ( var i, a, l, s = A.extend({}, t), n = t.filter.split(O.andSplit), o = t.iFilter.split(O.andSplit), c = n.length, d = 0; d < c; d++ ) { ;(s.nestedFilters = !0), (s.filter = '' + (I.parseFilter(e, n[d], t) || '')), (s.iFilter = '' + (I.parseFilter(e, o[d], t) || '')), (l = ('(' + (I.parseFilter(e, s.filter, t) || '') + ')') .replace(O.wild01, '\\S{1}') .replace(O.wild0More, '\\S*')) try { ;(a = new RegExp( t.isMatch ? l : '^' + l + '$', e.widgetOptions.filter_ignoreCase ? 'i' : '' ).test(s.exact) || I.processTypes(e, s, r)), (i = (0 === d || i) && a) } catch (e) { return null } } return i || !1 } return null }, regex: function (e, t) { if (O.regex.test(t.filter)) { var r, i = t.filter_regexCache[t.index] || O.regex.exec(t.filter), a = i instanceof RegExp try { a || (t.filter_regexCache[t.index] = i = new RegExp(i[1], i[2])), (r = i.test(t.exact)) } catch (e) { r = !1 } return r } return null }, operators: function (e, t) { var r, i, a, l, s, n, o return O.operTest.test(t.iFilter) && '' !== t.iExact ? ((a = e.table), (l = t.parsed[t.index]), (s = E.formatFloat( t.iFilter.replace(O.operators, ''), a )), (n = e.parsers[t.index] || {}), (o = s), (!l && 'numeric' !== n.type) || ((i = A.trim('' + t.iFilter.replace(O.operators, ''))), (s = 'number' != typeof (r = I.parseFilter(e, i, t, !0)) || '' === r || isNaN(r) ? s : r)), (e = (!l && 'numeric' !== n.type) || isNaN(s) || void 0 === t.cache ? ((i = isNaN(t.iExact) ? t.iExact.replace(E.regex.nondigit, '') : t.iExact), E.formatFloat(i, a)) : t.cache), O.gtTest.test(t.iFilter) ? (r = O.gteTest.test(t.iFilter) ? s <= e : s < e) : O.ltTest.test(t.iFilter) && (r = O.lteTest.test(t.iFilter) ? e <= s : e < s), (!r && '' === o) || r) : null }, notMatch: function (e, t) { var r, i return O.notTest.test(t.iFilter) ? ((i = t.iFilter.replace('!', '')), (i = I.parseFilter(e, i, t) || ''), O.exact.test(i) ? '' === (i = i.replace(O.exact, '')) || A.trim(i) !== t.iExact : ((r = t.iExact.search(A.trim(i))), '' === i || (t.anyMatch ? r < 0 : !(e.widgetOptions.filter_startsWith ? 0 === r : 0 <= r)))) : null }, exact: function (e, t) { var r return O.exact.test(t.iFilter) ? ((r = t.iFilter.replace(O.exact, '')), (e = I.parseFilter(e, r, t) || ''), t.anyMatch ? 0 <= A.inArray(e, t.rowArray) : e == t.iExact) : null }, range: function (e, t) { var r, i, a, l, s, n, o, c return O.toTest.test(t.iFilter) ? ((a = e.table), (l = t.index), (s = t.parsed[l]), (o = (n = t.iFilter.split(O.toSplit))[0].replace( E.regex.nondigit, '' ) || ''), (c = E.formatFloat(I.parseFilter(e, o, t), a)), (o = n[1].replace(E.regex.nondigit, '') || ''), (i = E.formatFloat(I.parseFilter(e, o, t), a)), (!s && 'numeric' !== e.parsers[l].type) || ((c = '' === (r = e.parsers[l].format( '' + n[0], a, e.$headers.eq(l), l )) || isNaN(r) ? c : r), (i = '' === (r = e.parsers[l].format( '' + n[1], a, e.$headers.eq(l), l )) || isNaN(r) ? i : r)), (r = (!s && 'numeric' !== e.parsers[l].type) || isNaN(c) || isNaN(i) ? ((o = isNaN(t.iExact) ? t.iExact.replace(E.regex.nondigit, '') : t.iExact), E.formatFloat(o, a)) : t.cache), i < c && ((o = c), (c = i), (i = o)), (c <= r && r <= i) || '' === c || '' === i) : null }, wild: function (e, t) { if (O.wildOrTest.test(t.iFilter)) { var r = '' + (I.parseFilter(e, t.iFilter, t) || '') !O.wildTest.test(r) && t.nestedFilters && (r = t.isMatch ? r : '^(' + r + ')$') try { return new RegExp( r .replace(O.wild01, '\\S{1}') .replace(O.wild0More, '\\S*'), e.widgetOptions.filter_ignoreCase ? 'i' : '' ).test(t.exact) } catch (e) {} } return null }, fuzzy: function (e, t) { if (O.fuzzyTest.test(t.iFilter)) { for ( var r = 0, i = t.iExact.length, a = t.iFilter.slice(1), l = I.parseFilter(e, a, t) || '', s = 0; s < i; s++ ) t.iExact[s] === l[r] && (r += 1) return r === l.length } return null }, }, init: function (r) { E.language = A.extend( !0, {}, { to: 'to', or: 'or', and: 'and' }, E.language ) function e(e, t, r) { return '' === (t = t.trim()) ? '' : (e || '') + t + (r || '') } var t, i, a, l, s, n, o, c, d = r.config, f = d.widgetOptions if ( (d.$table.addClass('hasFilters'), (d.lastSearch = []), (f.filter_searchTimer = null), (f.filter_initTimer = null), (f.filter_formatterCount = 0), (f.filter_formatterInit = []), (f.filter_anyColumnSelector = '[data-column="all"],[data-column="any"]'), (f.filter_multipleColumnSelector = '[data-column*="-"],[data-column*=","]'), (n = '\\{' + O.query + '\\}'), A.extend(O, { child: new RegExp(d.cssChildRow), filtered: new RegExp(f.filter_filteredRow), alreadyFiltered: new RegExp( '(\\s+(-' + e('|', E.language.or) + e('|', E.language.to) + ')\\s+)', 'i' ), toTest: new RegExp( '\\s+(-' + e('|', E.language.to) + ')\\s+', 'i' ), toSplit: new RegExp( '(?:\\s+(?:-' + e('|', E.language.to) + ')\\s+)', 'gi' ), andTest: new RegExp( '\\s+(' + e('', E.language.and, '|') + '&&)\\s+', 'i' ), andSplit: new RegExp( '(?:\\s+(?:' + e('', E.language.and, '|') + '&&)\\s+)', 'gi' ), orTest: new RegExp( '(\\|' + e('|\\s+', E.language.or, '\\s+') + ')', 'i' ), orSplit: new RegExp( '(?:\\|' + e('|\\s+(?:', E.language.or, ')\\s+') + ')', 'gi' ), iQuery: new RegExp(n, 'i'), igQuery: new RegExp(n, 'ig'), operTest: /^[<>]=?/, gtTest: />/, gteTest: />=/, ltTest: /' + (l.data('placeholder') || l.attr('data-placeholder') || f.filter_placeholder.select || '') + '' : ''), 0 <= (a = n = i).indexOf( f.filter_selectSourceSeparator ) && ((a = (n = i.split( f.filter_selectSourceSeparator ))[1]), (n = n[0])), (t += '')) d.$table .find('thead') .find( 'select.' + g.filter + '[data-column="' + s + '"]' ) .append(t), ('function' == typeof (a = f.filter_selectSource) || E.getColumnData(r, a, s)) && I.buildSelect( d.table, s, '', !0, l.hasClass(f.filter_onlyAvail) ) } I.buildDefault(r, !0), I.bindSearch(r, d.$table.find('.' + g.filter), !0), f.filter_external && I.bindSearch(r, f.filter_external), f.filter_hideFilters && I.hideFilters(d), d.showProcessing && ((a = 'filterStart filterEnd ' .split(' ') .join(d.namespace + 'filter-sp ')), d.$table .unbind(a.replace(E.regex.spaces, ' ')) .bind(a, function (e, t) { ;(l = t ? d.$table .find('.' + g.header) .filter('[data-column]') .filter(function () { return '' !== t[A(this).data('column')] }) : ''), E.isProcessing( r, 'filterStart' === e.type, t ? l : '' ) })), (d.filteredRows = d.totalRows), (a = 'tablesorter-initialized pagerBeforeInitialized ' .split(' ') .join(d.namespace + 'filter ')), d.$table .unbind(a.replace(E.regex.spaces, ' ')) .bind(a, function () { I.completeInit(this) }), d.pager && d.pager.initialized && !f.filter_initialized ? (d.$table.triggerHandler('filterFomatterUpdate'), setTimeout(function () { I.filterInitComplete(d) }, 100)) : f.filter_initialized || I.completeInit(r) }, completeInit: function (e) { var t = e.config, r = t.widgetOptions, i = I.setDefaults(e, t, r) || [] !i.length || (t.delayInit && '' === i.join('')) || E.setFilters(e, i, !0), t.$table.triggerHandler('filterFomatterUpdate'), setTimeout(function () { r.filter_initialized || I.filterInitComplete(t) }, 100) }, formatterUpdated: function (e, t) { ;(e = e && e.closest('table')), (e = e.length && e[0].config), (e = e && e.widgetOptions) e && !e.filter_initialized && (e.filter_formatterInit[t] = 1) }, filterInitComplete: function (e) { function t() { ;(a.filter_initialized = !0), (e.lastSearch = e.$table.data('lastSearch')), e.$table.triggerHandler('filterInit', e), I.findRows(e.table, e.lastSearch || []), E.debug(e, 'filter') && console.log('Filter >> Widget initialized') } var r, i, a = e.widgetOptions, l = 0 if (A.isEmptyObject(a.filter_formatter)) t() else { for (i = a.filter_formatterInit.length, r = 0; r < i; r++) 1 === a.filter_formatterInit[r] && l++ clearTimeout(a.filter_initTimer), a.filter_initialized || l !== a.filter_formatterCount ? a.filter_initialized || (a.filter_initTimer = setTimeout(function () { t() }, 500)) : t() } }, processFilters: function (e, t) { for ( var r = [], i = t ? encodeURIComponent : decodeURIComponent, a = e.length, l = 0; l < a; l++ ) e[l] && (r[l] = i(e[l])) return r }, setDefaults: function (e, t, r) { var i, a, l, s, n = E.getFilters(e) || [] if ( (r.filter_saveFilters && E.storage && ((e = E.storage(e, 'tablesorter-filters') || []), ((i = A.isArray(e)) && '' === e.join('')) || !i || (n = I.processFilters(e))), '' === n.join('')) ) for ( s = t.$headers .add(r.filter_$externalFilters) .filter('[' + r.filter_defaultAttrib + ']'), a = 0; a <= t.columns; a++ ) (l = a === t.columns ? 'all' : a), (n[a] = s .filter('[data-column="' + l + '"]') .attr(r.filter_defaultAttrib) || n[a] || '') return t.$table.data('lastSearch', n), n }, parseFilter: function (e, t, r, i) { return i || r.parsed[r.index] ? e.parsers[r.index].format(t, e.table, [], r.index) : t }, buildRow: function (e, t, r) { for ( var i, a, l, s, n, o, c, d = r.filter_cellFilter, f = t.columns, h = A.isArray(d), u = '', p = 0; p < f; p++ ) t.$headerIndexed[p].length && (u = (u += 1 < (c = (t.$headerIndexed[p] && t.$headerIndexed[p][0].colSpan) || 0) ? '') for ( t.$filters = A((u += '')) .appendTo(t.$table.children('thead').eq(0)) .children('td'), p = 0; p < f; p++ ) (a = t.$headerIndexed[p]) && a.length && ((i = I.getColumnElm(t, t.$filters, p)), (o = E.getColumnData(e, r.filter_functions, p)), (l = (r.filter_functions && o && 'function' != typeof o) || a.hasClass('filter-select')), (s = E.getColumnData(e, t.headers, p)), (s = 'false' === E.getData(a[0], s, 'filter') || 'false' === E.getData(a[0], s, 'parser')), l ? (u = A('').appendTo(i)), u && ((c = a.data('placeholder') || a.attr('data-placeholder') || r.filter_placeholder.search || ''), u.attr('placeholder', c))), u) && ((n = (A.isArray(r.filter_cssFilter) ? (void 0 !== r.filter_cssFilter[p] && r.filter_cssFilter[p]) || '' : r.filter_cssFilter) || ''), u.addClass(g.filter + ' ' + n), (c = (n = r.filter_filterLabel).match(/{{([^}]+?)}}/g)), A.each((c = c || ['{{label}}']), function (e, t) { var r = new RegExp(t, 'g'), t = a.attr('data-' + t.replace(/{{|}}/g, '')), t = void 0 === t ? a.text() : t n = n.replace(r, A.trim(t)) }), u.attr({ 'data-column': i.attr('data-column'), 'aria-label': n, }), s) && (u .attr('placeholder', '') .addClass(g.filterDisabled)[0].disabled = !0) }, bindSearch: function (a, e, t) { var r, l, s, i, n ;(a = A(a)[0]), (e = A(e)).length && ((l = a.config), (s = l.widgetOptions), (i = l.namespace + 'filter'), (n = s.filter_$externalFilters), !0 !== t && ((r = s.filter_anyColumnSelector + ',' + s.filter_multipleColumnSelector), (s.filter_$anyMatch = e.filter(r)), n && n.length ? (s.filter_$externalFilters = s.filter_$externalFilters.add(e)) : (s.filter_$externalFilters = e), E.setFilters( a, l.$table.data('lastSearch') || [], !1 === t )), (r = 'keypress keyup keydown search change input ' .split(' ') .join(i + ' ')), e .attr('data-lastSearchTime', new Date().getTime()) .unbind(r.replace(E.regex.spaces, ' ')) .bind('keydown' + i, function (e) { if ( e.which === o.escape && !a.config.widgetOptions.filter_resetOnEsc ) return !1 }) .bind('keyup' + i, function (e) { s = a.config.widgetOptions var t = parseInt(A(this).attr('data-column'), 10), r = 'boolean' == typeof s.filter_liveSearch ? s.filter_liveSearch : E.getColumnData(a, s.filter_liveSearch, t) if ( (void 0 === r && (r = s.filter_liveSearch.fallback || !1), A(this).attr( 'data-lastSearchTime', new Date().getTime() ), e.which === o.escape) ) this.value = s.filter_resetOnEsc ? '' : l.lastSearch[t] else { if ( '' !== this.value && (('number' == typeof r && this.value.length < r) || (e.which !== o.enter && e.which !== o.backSpace && (e.which < o.space || (e.which >= o.left && e.which <= o.down)))) ) return if ( !1 === r && '' !== this.value && e.which !== o.enter ) return } I.searching(a, !0, !0, t) }) .bind( 'search change keypress input blur ' .split(' ') .join(i + ' '), function (e) { var t = parseInt(A(this).attr('data-column'), 10), r = e.type, i = 'boolean' == typeof s.filter_liveSearch ? s.filter_liveSearch : E.getColumnData(a, s.filter_liveSearch, t) !a.config.widgetOptions.filter_initialized || (e.which !== o.enter && 'search' !== r && 'blur' !== r && (('change' !== r && 'input' !== r) || (!0 !== i && (!0 === i || 'INPUT' === e.target.nodeName)) || this.value === l.lastSearch[t])) || (e.preventDefault(), A(this).attr( 'data-lastSearchTime', new Date().getTime() ), I.searching( a, 'keypress' !== r || e.which === o.enter, !0, t )) } )) }, searching: function (e, t, r, i) { var a, l = e.config.widgetOptions void 0 === i ? (a = !1) : void 0 === (a = 'boolean' == typeof l.filter_liveSearch ? l.filter_liveSearch : E.getColumnData(e, l.filter_liveSearch, i)) && (a = l.filter_liveSearch.fallback || !1), clearTimeout(l.filter_searchTimer), void 0 === t || !0 === t ? (l.filter_searchTimer = setTimeout( function () { I.checkFilters(e, t, r) }, a ? l.filter_searchDelay : 10 )) : I.checkFilters(e, t, r) }, equalFilters: function (e, t, r) { var i, a = [], l = [], s = e.columns + 1 for ( t = A.isArray(t) ? t : [], r = A.isArray(r) ? r : [], i = 0; i < s; i++ ) (a[i] = t[i] || ''), (l[i] = r[i] || '') return a.join(',') === l.join(',') }, checkFilters: function (e, t, r) { var i = e.config, a = i.widgetOptions, l = A.isArray(t), s = l ? t : E.getFilters(e, !0), n = s || [] if (A.isEmptyObject(i.cache)) i.delayInit && (!i.pager || (i.pager && i.pager.initialized)) && E.updateCache(i, function () { I.checkFilters(e, !1, r) }) else { if ( (l && (E.setFilters(e, s, !1, !0 !== r), a.filter_initialized || ((i.lastSearch = []), (i.lastCombinedFilter = ''))), a.filter_hideFilters && i.$table .find('.' + g.filterRow) .triggerHandler( I.hideFiltersCheck(i) ? 'mouseleave' : 'mouseenter' ), I.equalFilters(i, i.lastSearch, n)) ) { if (!1 !== t) return ;(i.lastCombinedFilter = ''), (i.lastSearch = []) } if ( ((s = s || []), (s = Array.prototype.map ? s.map(String) : s.join('�').split('�')), a.filter_initialized && i.$table.triggerHandler('filterStart', [s]), !i.showProcessing) ) return I.findRows(e, s, n), !1 setTimeout(function () { return I.findRows(e, s, n), !1 }, 30) } }, hideFiltersCheck: function (e) { if ('function' == typeof e.widgetOptions.filter_hideFilters) { var t = e.widgetOptions.filter_hideFilters(e) if ('boolean' == typeof t) return t } return '' === E.getFilters(e.$table).join('') }, hideFilters: function (i, e) { var a ;(e || i.$table) .find('.' + g.filterRow) .addClass(g.filterRowHide) .bind('mouseenter mouseleave', function (e) { var t = e, r = A(this) clearTimeout(a), (a = setTimeout(function () { ;/enter|over/.test(t.type) ? r.removeClass(g.filterRowHide) : A(document.activeElement).closest('tr')[0] !== r[0] && r.toggleClass( g.filterRowHide, I.hideFiltersCheck(i) ) }, 200)) }) .find('input, select') .bind('focus blur', function (e) { var t = e, r = A(this).closest('tr') clearTimeout(a), (a = setTimeout(function () { clearTimeout(a), r.toggleClass( g.filterRowHide, I.hideFiltersCheck(i) && 'focus' !== t.type ) }, 200)) }) }, defaultFilter: function (e, t) { if ('' === e) return e var r = O.iQuery, i = t.match(O.igQuery).length, a = 1 < i ? A.trim(e).split(/\s/) : [A.trim(e)], l = a.length - 1, s = 0, n = t for (l < 1 && 1 < i && (a[1] = a[0]); r.test(n); ) (n = n.replace(r, a[s++] || '')), r.test(n) && s < l && '' !== (a[s] || '') && (n = t.replace(r, n)) return n }, getLatestSearch: function (e) { return e ? e.sort(function (e, t) { return ( A(t).attr('data-lastSearchTime') - A(e).attr('data-lastSearchTime') ) }) : e || A() }, findRange: function (e, t, r) { var i, a, l, s, n, o, c, d, f = [] if (/^[0-9]+$/.test(t)) return [parseInt(t, 10)] if (!r && /-/.test(t)) for ( d = (i = t.match(/(\d+)\s*-\s*(\d+)/g)) ? i.length : 0, c = 0; c < d; c++ ) { for ( a = i[c].split(/\s*-\s*/), l = parseInt(a[0], 10) || 0, (s = parseInt(a[1], 10) || e.columns - 1) < l && ((a = l), (l = s), (s = a)), s >= e.columns && (s = e.columns - 1); l <= s; l++ ) f[f.length] = l t = t.replace(i[c], '') } if (!r && /,/.test(t)) for (d = (n = t.split(/\s*,\s*/)).length, o = 0; o < d; o++) '' !== n[o] && (c = parseInt(n[o], 10)) < e.columns && (f[f.length] = c) if (!f.length) for (c = 0; c < e.columns; c++) f[f.length] = c return f }, getColumnElm: function (t, e, r) { return e.filter(function () { var e = I.findRange(t, A(this).attr('data-column')) return -1 < A.inArray(r, e) }) }, multipleColumns: function (e, t) { var r = e.widgetOptions, r = r.filter_initialized || !t.filter(r.filter_anyColumnSelector).length, t = A.trim(I.getLatestSearch(t).attr('data-column') || '') return I.findRange(e, t, !r) }, processTypes: function (e, t, r) { var i, a = null, l = null for (i in I.types) A.inArray(i, r.excludeMatch) < 0 && null === l && null !== (l = I.types[i](e, t, r)) && ((t.matchedOn = i), (a = l)) return a }, matchType: function (e, t) { var r = e.widgetOptions, i = e.$headerIndexed[t], r = !( i.hasClass('filter-exact') || (!i.hasClass('filter-match') && (r.filter_columnFilters ? (i = e.$filters .find('.' + g.filter) .add(r.filter_$externalFilters) .filter('[data-column="' + t + '"]')) : r.filter_$externalFilters && (i = r.filter_$externalFilters.filter( '[data-column="' + t + '"]' )), !i.length || 'match' !== e.widgetOptions.filter_matchType[ (i[0].nodeName || '').toLowerCase() ])) ) return r }, processRow: function (t, r, e) { var i, a, l, s, n, o = t.widgetOptions, c = !0, d = o.filter_$anyMatch && o.filter_$anyMatch.length, f = o.filter_$anyMatch && o.filter_$anyMatch.length ? I.multipleColumns(t, o.filter_$anyMatch) : [] if ( ((r.$cells = r.$row.children()), (r.matchedOn = null), (r.anyMatchFlag && 1 < f.length) || (r.anyMatchFilter && !d)) ) { if ( ((r.anyMatch = !0), (r.isMatch = !0), (r.rowArray = r.$cells .map(function (e) { if (-1 < A.inArray(e, f) || (r.anyMatchFilter && !d)) return ( r.parsed[e] ? (n = r.cacheArray[e]) : ((n = r.rawArray[e]), (n = A.trim( o.filter_ignoreCase ? n.toLowerCase() : n )), t.sortLocaleCompare && (n = E.replaceAccents(n))), n ) }) .get()), (r.filter = r.anyMatchFilter), (r.iFilter = r.iAnyMatchFilter), (r.exact = r.rowArray.join(' ')), (r.iExact = o.filter_ignoreCase ? r.exact.toLowerCase() : r.exact), (r.cache = r.cacheArray.slice(0, -1).join(' ')), (e.excludeMatch = e.noAnyMatch), null !== (a = I.processTypes(t, r, e))) ) c = a else if (o.filter_startsWith) for ( c = !1, f = Math.min(t.columns, r.rowArray.length); !c && 0 < f; ) f--, (c = c || 0 === r.rowArray[f].indexOf(r.iFilter)) else c = 0 <= (r.iExact + r.childRowText).indexOf(r.iFilter) if (((r.anyMatch = !1), r.filters.join('') === r.filter)) return c } for (f = 0; f < t.columns; f++) (r.filter = r.filters[f]), (r.index = f), (e.excludeMatch = e.excludeFilter[f]), r.filter && ((r.cache = r.cacheArray[f]), (i = r.parsed[f] ? r.cache : r.rawArray[f] || ''), (r.exact = t.sortLocaleCompare ? E.replaceAccents(i) : i), (r.iExact = !O.type.test(typeof r.exact) && o.filter_ignoreCase ? r.exact.toLowerCase() : r.exact), (r.isMatch = I.matchType(t, f)), (i = c), (s = (o.filter_columnFilters && t.$filters .add(o.filter_$externalFilters) .filter('[data-column="' + f + '"]') .find('select option:selected') .attr('data-function-name')) || ''), t.sortLocaleCompare && (r.filter = E.replaceAccents(r.filter)), o.filter_defaultFilter && O.iQuery.test(e.defaultColFilter[f]) && (r.filter = I.defaultFilter( r.filter, e.defaultColFilter[f] )), (r.iFilter = o.filter_ignoreCase ? (r.filter || '').toLowerCase() : r.filter), (a = null), (l = e.functions[f]) && ('function' == typeof l ? (a = l(r.exact, r.cache, r.filter, f, r.$row, t, r)) : 'function' == typeof l[s || r.filter] && (a = l[(n = s || r.filter)]( r.exact, r.cache, r.filter, f, r.$row, t, r ))), (c = !!(i = null === a && ((a = I.processTypes(t, r, e)), (n = !0 === l && ('and' === r.matchedOn || 'or' === r.matchedOn)), null === a || n) ? !0 === l ? r.isMatch ? 0 <= ('' + r.iExact).search(r.iFilter) : r.filter === r.exact : ((n = (r.iExact + r.childRowText).indexOf( I.parseFilter(t, r.iFilter, r) )), (!o.filter_startsWith && 0 <= n) || (o.filter_startsWith && 0 === n)) : a) && c)) return c }, findRows: function (e, r, t) { if ( !I.equalFilters(e.config, e.config.lastSearch, t) && e.config.widgetOptions.filter_initialized ) { var i, a, l, s, n, o, c, d, f, h, u, p, g, m, b, y, _, v, w, x, S, C, z, $ = A.extend([], r), F = e.config, R = F.widgetOptions, T = E.debug(F, 'filter'), k = { anyMatch: !1, filters: r, filter_regexCache: [] }, H = { noAnyMatch: ['range', 'operators'], functions: [], excludeFilter: [], defaultColFilter: [], defaultAnyFilter: E.getColumnData( e, R.filter_defaultFilter, F.columns, !0 ) || '', } for (k.parsed = [], f = 0; f < F.columns; f++) (k.parsed[f] = R.filter_useParsedData || (F.parsers && F.parsers[f] && F.parsers[f].parsed) || (E.getData && 'parsed' === E.getData( F.$headerIndexed[f], E.getColumnData(e, F.headers, f), 'filter' )) || F.$headerIndexed[f].hasClass('filter-parsed')), (H.functions[f] = E.getColumnData(e, R.filter_functions, f) || F.$headerIndexed[f].hasClass('filter-select')), (H.defaultColFilter[f] = E.getColumnData(e, R.filter_defaultFilter, f) || ''), (H.excludeFilter[f] = ( E.getColumnData(e, R.filter_excludeFilter, f, !0) || '' ).split(/\s+/)) for ( T && (console.log( 'Filter >> Starting filter widget search', r ), (m = new Date())), F.filteredRows = 0, t = $ || [], c = F.totalRows = 0; c < F.$tbodies.length; c++ ) { if ( ((d = E.processTbody(e, F.$tbodies.eq(c), !0)), (f = F.columns), (a = F.cache[c].normalized), (s = A( A.map(a, function (e) { return e[f].$row.get() }) )), '' === t.join('') || R.filter_serversideFiltering) ) s.removeClass(R.filter_filteredRow) .not('.' + F.cssChildRow) .css('display', '') else { if ( ((i = (s = s.not('.' + F.cssChildRow)).length), ((R.filter_$anyMatch && R.filter_$anyMatch.length) || void 0 !== r[F.columns]) && ((k.anyMatchFlag = !0), (k.anyMatchFilter = '' + (r[F.columns] || (R.filter_$anyMatch && I.getLatestSearch(R.filter_$anyMatch).val()) || '')), R.filter_columnAnyMatch)) ) { for ( w = k.anyMatchFilter.split(O.andSplit), x = !1, y = 0; y < w.length; y++ ) 1 < (S = w[y].split(':')).length && (isNaN(S[0]) ? A.each(F.headerContent, function (e, t) { ;-1 < t.toLowerCase().indexOf(S[0]) && (r[(C = e)] = S[1]) }) : (C = parseInt(S[0], 10) - 1), 0 <= C) && C < F.columns && ((r[C] = S[1]), w.splice(y, 1), y--, (x = !0)) x && (k.anyMatchFilter = w.join(' && ')) } if ( ((v = R.filter_searchFiltered), (u = F.lastSearch || F.$table.data('lastSearch') || []), v) ) for (y = 0; y < f + 1; y++) (b = r[y] || ''), v || (y = f), (v = v && u.length && 0 === b.indexOf(u[y] || '') && !O.alreadyFiltered.test(b) && !O.exactTest.test(b) && !(O.isNeg1.test(b) || O.isNeg2.test(b)) && !( '' !== b && F.$filters && F.$filters .filter('[data-column="' + y + '"]') .find('select').length && !I.matchType(F, y) )) for ( _ = s.not('.' + R.filter_filteredRow).length, v && 0 === _ && (v = !1), T && console.log( 'Filter >> Searching through ' + (v && _ < i ? _ : 'all') + ' rows' ), k.anyMatchFlag && (F.sortLocaleCompare && (k.anyMatchFilter = E.replaceAccents( k.anyMatchFilter )), R.filter_defaultFilter && O.iQuery.test(H.defaultAnyFilter) && ((k.anyMatchFilter = I.defaultFilter( k.anyMatchFilter, H.defaultAnyFilter )), (v = !1)), (k.iAnyMatchFilter = R.filter_ignoreCase && F.ignoreCase ? k.anyMatchFilter.toLowerCase() : k.anyMatchFilter)), o = 0; o < i; o++ ) if ( ((z = s[o].className), !( (o && O.child.test(z)) || (v && O.filtered.test(z)) )) ) { if ( ((k.$row = s.eq(o)), (k.rowIndex = o), (k.cacheArray = a[o]), (l = k.cacheArray[F.columns]), (k.rawArray = l.raw), (k.childRowText = ''), !R.filter_childByColumn) ) { for (z = '', h = l.child, y = 0; y < h.length; y++) z += ' ' + h[y].join(' ') || '' k.childRowText = R.filter_childRows ? R.filter_ignoreCase ? z.toLowerCase() : z : '' } if ( ((p = !1), (g = I.processRow(F, k, H)), (n = l.$row), (b = !!g), (h = l.$row.filter(':gt(0)')), R.filter_childRows && h.length) ) { if (R.filter_childByColumn) for ( R.filter_childWithSibs || (h.addClass(R.filter_filteredRow), (n = n.eq(0))), y = 0; y < h.length; y++ ) (k.$row = h.eq(y)), (k.cacheArray = l.child[y]), (k.rawArray = k.cacheArray), (b = I.processRow(F, k, H)), (p = p || b), !R.filter_childWithSibs && b && h.eq(y).removeClass(R.filter_filteredRow) p = p || g } else p = b n.toggleClass(R.filter_filteredRow, !p)[0].display = p ? '' : 'none' } } ;(F.filteredRows += s.not( '.' + R.filter_filteredRow ).length), (F.totalRows += s.length), E.processTbody(e, d, !1) } ;(F.lastCombinedFilter = $.join('')), (F.lastSearch = $), F.$table.data('lastSearch', $), R.filter_saveFilters && E.storage && E.storage( e, 'tablesorter-filters', I.processFilters($, !0) ), T && console.log( 'Filter >> Completed search' + E.benchmark(m) ), R.filter_initialized && (F.$table.triggerHandler('filterBeforeEnd', F), F.$table.triggerHandler('filterEnd', F)), setTimeout(function () { E.applyWidget(F.table) }, 0) } }, getOptionSource: function (e, t, r) { var i = (e = A(e)[0]).config, a = !1, l = i.widgetOptions.filter_selectSource, i = i.$table.data('lastSearch') || [], s = 'function' == typeof l || E.getColumnData(e, l, t) if ((r && '' !== i[t] && (r = !1), !0 === s)) a = l(e, t, r) else { if ( s instanceof A || ('string' === A.type(s) && 0 <= s.indexOf('')) ) return s if (A.isArray(s)) a = s else if ( 'object' === A.type(l) && s && null === (a = s(e, t, r)) ) return null } return ( !1 === a && (a = I.getOptions(e, t, r)), I.processOptions(e, t, a) ) }, processOptions: function (i, a, r) { if (!A.isArray(r)) return !1 var l, e, t, s, n, o = (i = A(i)[0]).config, c = null != a && 0 <= a && a < o.columns, d = !!c && o.$headerIndexed[a].hasClass('filter-select-sort-desc'), f = [] if ( ((r = A.grep(r, function (e, t) { return !!e.text || A.inArray(e, r) === t })), !c || !o.$headerIndexed[a].hasClass('filter-select-nosort')) ) { for (s = r.length, t = 0; t < s; t++) (n = (e = r[t]).text || e), (n = ( (c && o.parsers && o.parsers.length && o.parsers[a].format(n, i, [], a)) || n ).toString()), (n = o.widgetOptions.filter_ignoreCase ? n.toLowerCase() : n), e.text ? ((e.parsed = n), (f[f.length] = e)) : (f[f.length] = { text: e, parsed: n }) for ( l = o.textSorter || '', f.sort(function (e, t) { var r = (d ? t : e).parsed, e = (d ? e : t).parsed return c && 'function' == typeof l ? l(r, e, !0, a, i) : c && 'object' == typeof l && l.hasOwnProperty(a) ? l[a](r, e, !0, a, i) : !E.sortNatural || E.sortNatural(r, e) }), r = [], s = f.length, t = 0; t < s; t++ ) r[r.length] = f[t] } return r }, getOptions: function (e, t, r) { for ( var i, a, l, s, n, o, c, d = (e = A(e)[0]).config, f = d.widgetOptions, h = [], u = 0; u < d.$tbodies.length; u++ ) for ( s = d.cache[u], a = d.cache[u].normalized.length, i = 0; i < a; i++ ) if ( ((l = s.row ? s.row[i] : s.normalized[i][d.columns].$row[0]), !r || !l.className.match(f.filter_filteredRow)) ) if ( f.filter_useParsedData || d.parsers[t].parsed || d.$headerIndexed[t].hasClass('filter-parsed') ) { if ( ((h[h.length] = '' + s.normalized[i][t]), f.filter_childRows && f.filter_childByColumn) ) for ( c = s.normalized[i][d.columns].$row.length - 1, n = 0; n < c; n++ ) h[h.length] = '' + s.normalized[i][d.columns].child[n][t] } else if ( ((h[h.length] = s.normalized[i][d.columns].raw[t]), f.filter_childRows && f.filter_childByColumn) ) for ( c = s.normalized[i][d.columns].$row.length, n = 1; n < c; n++ ) (o = s.normalized[i][d.columns].$row .eq(n) .children() .eq(t)), (h[h.length] = '' + E.getElementText(d, o, t)) return h }, buildSelect: function (e, t, r, i, a) { if ( ((e = A(e)[0]), (t = parseInt(t, 10)), e.config.cache && !A.isEmptyObject(e.config.cache)) ) { var l, s, n, o, c, d = e.config, f = d.widgetOptions, h = d.$headerIndexed[t], u = '', h = d.$table .find('thead') .find('select.' + g.filter + '[data-column="' + t + '"]') .val() if ( (void 0 !== r && '' !== r) || null !== (r = I.getOptionSource(e, t, a)) ) { if (A.isArray(r)) { for (l = 0; l < r.length; l++) if ((c = r[l]).text) { for (s in ((c['data-function-name'] = void 0 === c.value ? c.text : c.value), (u += '') } else '' + c != '[object Object]' && (0 <= (s = n = c = ('' + c).replace(O.quote, '"')).indexOf( f.filter_selectSourceSeparator ) && ((s = (o = n.split( f.filter_selectSourceSeparator ))[0]), (n = o[1])), (u += '' !== c ? '' : '')) r = [] } ;(e = (d.$filters || d.$table.children('thead')).find( '.' + g.filter )), (a = (e = f.filter_$externalFilters ? e && e.length ? e.add(f.filter_$externalFilters) : f.filter_$externalFilters : e).filter('select[data-column="' + t + '"]')) .length && (a[i ? 'html' : 'append'](u), A.isArray(r) || a.append(r).val(h), a.val(h)) } } }, buildDefault: function (e, t) { for ( var r, i, a = e.config, l = a.widgetOptions, s = a.columns, n = 0; n < s; n++ ) (i = !( (r = a.$headerIndexed[n]).hasClass('filter-false') || r.hasClass('parser-false') )), (r.hasClass('filter-select') || !0 === E.getColumnData(e, l.filter_functions, n)) && i && I.buildSelect(e, n, '', t, r.hasClass(l.filter_onlyAvail)) }, }), (O = I.regex), (E.getFilters = function (e, t, r, i) { var a, l, s, n, o = [], c = e ? A(e)[0].config : '', d = c ? c.widgetOptions : '' if ( (!0 !== t && d && !d.filter_columnFilters) || (A.isArray(r) && I.equalFilters(c, r, c.lastSearch)) ) return A(e).data('lastSearch') || [] if ( c && (c.$filters && (l = c.$filters.find('.' + g.filter)), (l = d.filter_$externalFilters ? l && l.length ? l.add(d.filter_$externalFilters) : d.filter_$externalFilters : l)) && l.length ) for (o = r || [], a = 0; a < c.columns + 1; a++) (n = a === c.columns ? d.filter_anyColumnSelector + ',' + d.filter_multipleColumnSelector : '[data-column="' + a + '"]'), (s = l.filter(n)).length && ((s = I.getLatestSearch(s)), A.isArray(r) ? (i && 1 < s.length && (s = s.slice(1)), (s = a === c.columns ? (n = s.filter(d.filter_anyColumnSelector)).length ? n : s : s) .val(r[a]) .trigger('change' + c.namespace)) : ((o[a] = s.val() || ''), (a === c.columns ? s .slice(1) .filter( '[data-column*="' + s.attr('data-column') + '"]' ) : s.slice(1) ).val(o[a])), a === c.columns) && s.length && (d.filter_$anyMatch = s) return o }), (E.setFilters = function (e, t, r, i) { var a = e ? A(e)[0].config : '', e = E.getFilters(e, !0, t, i) return ( void 0 === r && (r = !0), a && r && ((a.lastCombinedFilter = null), (a.lastSearch = []), I.searching(a.table, t, i), a.$table.triggerHandler('filterFomatterUpdate')), 0 !== e.length ) }) })(e), (function (C, z) { 'use strict' var $ = C.tablesorter || {} function F(e, t) { var r = isNaN(t.stickyHeaders_offset) ? C(t.stickyHeaders_offset) : [] return r.length ? r.height() || 0 : parseInt(t.stickyHeaders_offset, 10) || 0 } C.extend($.css, { sticky: 'tablesorter-stickyHeader', stickyVis: 'tablesorter-sticky-visible', stickyHide: 'tablesorter-sticky-hidden', stickyWrap: 'tablesorter-sticky-wrapper', }), ($.addHeaderResizeEvent = function (e, t, r) { if ((e = C(e)[0]).config) { var r = C.extend({}, { timer: 250 }, r), o = e.config, c = o.widgetOptions, i = function (e) { var t, r, i, a, l, s, n = o.$headers.length for (c.resize_flag = !0, r = [], t = 0; t < n; t++) (a = (i = o.$headers.eq(t)).data('savedSizes') || [0, 0]), (l = i[0].offsetWidth), (s = i[0].offsetHeight), (l === a[0] && s === a[1]) || (i.data('savedSizes', [l, s]), r.push(i[0])) r.length && !1 !== e && o.$table.triggerHandler('resize', [r]), (c.resize_flag = !1) } if ((clearInterval(c.resize_timer), t)) return (c.resize_flag = !1) i(!1), (c.resize_timer = setInterval(function () { c.resize_flag || i() }, r.timer)) } }), $.addWidget({ id: 'stickyHeaders', priority: 54, options: { stickyHeaders: '', stickyHeaders_appendTo: null, stickyHeaders_attachTo: null, stickyHeaders_xScroll: null, stickyHeaders_yScroll: null, stickyHeaders_offset: 0, stickyHeaders_filteredToTop: !0, stickyHeaders_cloneId: '-sticky', stickyHeaders_addResizeEvent: !0, stickyHeaders_includeCaption: !0, stickyHeaders_zIndex: 2, }, format: function (e, t, o) { if ( !( t.$table.hasClass('hasStickyHeaders') || (0 <= C.inArray('filter', t.widgets) && !t.$table.hasClass('hasFilters')) ) ) { var r, i, a, l, c = t.$table, d = C(o.stickyHeaders_attachTo || o.stickyHeaders_appendTo), s = t.namespace + 'stickyheaders ', f = C( o.stickyHeaders_yScroll || o.stickyHeaders_attachTo || z ), n = C( o.stickyHeaders_xScroll || o.stickyHeaders_attachTo || z ), h = c .children('thead:first') .children('tr') .not('.sticky-false') .children(), u = c.children('tfoot'), p = F(0, o), g = c .parent() .closest('.' + $.css.table) .hasClass('hasStickyHeaders') ? c .parent() .closest('table.tablesorter')[0] .config.widgetOptions.$sticky.parent() : [], m = g.length ? g.height() : 0, b = (o.$sticky = c .clone() .addClass( 'containsStickyHeaders ' + $.css.sticky + ' ' + o.stickyHeaders + ' ' + t.namespace.slice(1) + '_extra_table' ) .wrap('
')), y = b .parent() .addClass($.css.stickyHide) .css({ position: d.length ? 'absolute' : 'fixed', padding: parseInt( b.parent().parent().css('padding-left'), 10 ), top: p + m, left: 0, visibility: 'hidden', zIndex: o.stickyHeaders_zIndex || 2, }), p = b.children('thead:first'), _ = '', v = function (e, t) { for ( var r, i, a, l = e.filter(':visible'), s = l.length, n = 0; n < s; n++ ) (i = t.filter(':visible').eq(n)), (r = 'border-box' === (a = l.eq(n)).css('box-sizing') ? a.outerWidth() : 'collapse' === i.css('border-collapse') ? z.getComputedStyle ? parseFloat(z.getComputedStyle(a[0], null).width) : ((r = parseFloat(a.css('border-width'))), a.outerWidth() - parseFloat(a.css('padding-left')) - parseFloat(a.css('padding-right')) - r) : a.width()), i.css({ width: r, 'min-width': r, 'max-width': r }) }, w = function (e) { return !1 === e && g.length ? c.position().left : d.length ? parseInt(d.css('padding-left'), 10) || 0 : c.offset().left - parseInt(c.css('margin-left'), 10) - C(z).scrollLeft() }, x = function () { y.css({ left: w(), width: c.outerWidth() }), v(c, b), v(h, l) }, S = function (e) { var t, r, i, a, l, s, n c.is(':visible') && ((m = g.length ? g.offset().top - f.scrollTop() + g.height() : 0), (a = c.offset()), (t = F(0, o)), (i = (r = C.isWindow(f[0])) ? f.scrollTop() : g.length ? parseInt(g[0].style.top, 10) : f.offset().top), (i = d.length ? i : f.scrollTop()), (l = (!o.stickyHeaders_includeCaption && c.children('caption').height()) || 0), (i = i + t + m - l), (l = c.height() - (y.height() + (u.height() || 0)) - l), (l = 'visible' == (a = i > a.top && i < a.top + l ? 'visible' : 'hidden') ? $.css.stickyVis : $.css.stickyHide), (s = !y.hasClass(l)), (n = { visibility: a }), d.length && ((s = !0), (n.top = r ? i - d.offset().top : d.scrollTop())), (i = w(r)) !== parseInt(y.css('left'), 10) && ((s = !0), (n.left = i)), (n.top = (n.top || 0) + (!r && g.length ? g.height() : t + m)), s && y .removeClass($.css.stickyVis + ' ' + $.css.stickyHide) .addClass(l) .css(n), (a === _ && !e) || (x(), (_ = a))) } if ( (d.length && !d.css('position') && d.css('position', 'relative'), b.attr('id') && (b[0].id += o.stickyHeaders_cloneId), b.find('> thead:gt(0), tr.sticky-false').hide(), b.find('> tbody, > tfoot').remove(), b.find('caption').toggle(o.stickyHeaders_includeCaption), (l = p.children().children()), b.css({ height: 0, width: 0, margin: 0 }), l.find('.' + $.css.resizer).remove(), c .addClass('hasStickyHeaders') .bind('pagerComplete' + s, function () { x() }), $.bindEvents(e, p.children().children('.' + $.css.header)), o.stickyHeaders_appendTo ? C(o.stickyHeaders_appendTo).append(y) : c.after(y), t.onRenderHeader) ) for ( i = (a = p.children('tr').children()).length, r = 0; r < i; r++ ) t.onRenderHeader.apply(a.eq(r), [r, t, b]) n .add(f) .unbind( 'scroll resize '.split(' ').join(s).replace(/\s+/g, ' ') ) .bind('scroll resize '.split(' ').join(s), function (e) { S('resize' === e.type) }), t.$table .unbind('stickyHeadersUpdate' + s) .bind('stickyHeadersUpdate' + s, function () { S(!0) }), o.stickyHeaders_addResizeEvent && $.addHeaderResizeEvent(e), c.hasClass('hasFilters') && o.filter_columnFilters && (c.bind('filterEnd' + s, function () { var e = C(document.activeElement).closest('td'), e = e.parent().children().index(e) y.hasClass($.css.stickyVis) && o.stickyHeaders_filteredToTop && (z.scrollTo(0, c.position().top), 0 <= e) && t.$filters && t.$filters .eq(e) .find('a, select, input') .filter(':visible') .focus() }), $.filter.bindSearch(c, l.find('.' + $.css.filter)), o.filter_hideFilters) && $.filter.hideFilters(t, b), o.stickyHeaders_addResizeEvent && c.bind( 'resize' + t.namespace + 'stickyheaders', function () { x() } ), S(!0), c.triggerHandler('stickyHeadersInit') } }, remove: function (e, t, r) { var i = t.namespace + 'stickyheaders ' t.$table .removeClass('hasStickyHeaders') .unbind( 'pagerComplete resize filterEnd stickyHeadersUpdate ' .split(' ') .join(i) .replace(/\s+/g, ' ') ) .next('.' + $.css.stickyWrap) .remove(), r.$sticky && r.$sticky.length && r.$sticky.remove(), C(z) .add(r.stickyHeaders_xScroll) .add(r.stickyHeaders_yScroll) .add(r.stickyHeaders_attachTo) .unbind( 'scroll resize '.split(' ').join(i).replace(/\s+/g, ' ') ), $.addHeaderResizeEvent(e, !0) }, }) })(e, window), (function (c, t) { 'use strict' var d = c.tablesorter || {} c.extend(d.css, { resizableContainer: 'tablesorter-resizable-container', resizableHandle: 'tablesorter-resizable-handle', resizableNoSelect: 'tablesorter-disableSelection', resizableStorage: 'tablesorter-resizable', }), c(function () { var e = '' c('head').append(e) }), (d.resizable = { init: function (e, t) { if (!e.$table.hasClass('hasResizable')) { e.$table.addClass('hasResizable') var r, i, a, l = e.$table, s = l.parent(), n = parseInt(l.css('margin-top'), 10), o = (t.resizable_vars = { useStorage: d.storage && !1 !== t.resizable, $wrap: s, mouseXPosition: 0, $target: null, $next: null, overflow: 'auto' === s.css('overflow') || 'scroll' === s.css('overflow') || 'auto' === s.css('overflow-x') || 'scroll' === s.css('overflow-x'), storedSizes: [], }) for ( d.resizableReset(e.table, !0), o.tableWidth = l.width(), o.fullWidth = Math.abs(s.width() - o.tableWidth) < 20, o.useStorage && o.overflow && (d.storage( e.table, 'tablesorter-table-original-css-width', o.tableWidth ), (a = d.storage(e.table, 'tablesorter-table-resized-width') || 'auto'), d.resizable.setWidth(l, a, !0)), t.resizable_vars.storedSizes = s = (o.useStorage ? d.storage(e.table, d.css.resizableStorage) : []) || [], d.resizable.setWidths(e, t, s), d.resizable.updateStoredSizes(e, t), t.$resizable_container = c( '
' ) .css({ top: n }) .insertBefore(l), i = 0; i < e.columns; i++ ) (r = e.$headerIndexed[i]), (a = d.getColumnData(e.table, e.headers, i)), 'false' === d.getData(r, a, 'resizable') || c('
') .appendTo(t.$resizable_container) .attr({ 'data-column': i, unselectable: 'on' }) .data('header', r) .bind('selectstart', !1) d.resizable.bindings(e, t) } }, updateStoredSizes: function (e, t) { var r, i, a = e.columns, l = t.resizable_vars for (l.storedSizes = [], r = 0; r < a; r++) (i = e.$headerIndexed[r]), (l.storedSizes[r] = i.is(':visible') ? i.width() : 0) }, setWidth: function (e, t, r) { e.css({ width: t, 'min-width': r ? t : '', 'max-width': r ? t : '', }) }, setWidths: function (e, t, r) { var i, a, l = t.resizable_vars, s = c(e.namespace + '_extra_headers'), n = e.$table.children('colgroup').children('col') if ((r = r || l.storedSizes || []).length) { for (i = 0; i < e.columns; i++) d.resizable.setWidth(e.$headerIndexed[i], r[i], l.overflow), s.length && ((a = s.eq(i).add(n.eq(i))), d.resizable.setWidth(a, r[i], l.overflow)) ;(a = c(e.namespace + '_extra_table')).length && !d.hasWidget(e.table, 'scroller') && d.resizable.setWidth(a, e.$table.outerWidth(), l.overflow) } }, setHandlePosition: function (a, l) { var s, n = a.$table.height(), e = l.$resizable_container.children(), o = Math.floor(e.width() / 2) d.hasWidget(a.table, 'scroller') && ((n = 0), a.$table .closest('.' + d.css.scrollerWrap) .children() .each(function () { var e = c(this) n += ( e.filter('[style*="height"]').length ? e : e.children('table') ).height() })), !l.resizable_includeFooter && a.$table.children('tfoot').length && (n -= a.$table.children('tfoot').height()), (s = 3.3 <= parseFloat(c.fn.jquery) ? 0 : a.$table.position().left), e.each(function () { var e = c(this), t = parseInt(e.attr('data-column'), 10), r = a.columns - 1, i = e.data('header') i && (!i.is(':visible') || (!l.resizable_addLastColumn && d.resizable.checkVisibleColumns(a, t)) ? e.hide() : (t < r || (t === r && l.resizable_addLastColumn)) && e.css({ display: 'inline-block', height: n, left: i.position().left - s + i.outerWidth() - o, })) }) }, checkVisibleColumns: function (e, t) { for (var r = 0, i = t + 1; i < e.columns; i++) r += e.$headerIndexed[i].is(':visible') ? 1 : 0 return 0 === r }, toggleTextSelection: function (e, t, r) { e = e.namespace + 'tsresize' ;(t.resizable_vars.disabled = r), c('body').toggleClass(d.css.resizableNoSelect, r), r ? c('body') .attr('unselectable', 'on') .bind('selectstart' + e, !1) : c('body') .removeAttr('unselectable') .unbind('selectstart' + e) }, bindings: function (l, s) { var e = l.namespace + 'tsresize' s.$resizable_container.children().bind('mousedown', function (e) { var t = s.resizable_vars, r = c(l.namespace + '_extra_headers'), i = c(e.target).data('header'), a = parseInt(i.attr('data-column'), 10) ;(t.$target = i = i.add(r.filter('[data-column="' + a + '"]'))), (t.target = a), (t.$next = e.shiftKey || s.resizable_targetLast ? i .parent() .children() .not('.resizable-false') .filter(':last') : i.nextAll(':not(.resizable-false)').eq(0)), (a = parseInt(t.$next.attr('data-column'), 10)), (t.$next = t.$next.add( r.filter('[data-column="' + a + '"]') )), (t.next = a), (t.mouseXPosition = e.pageX), d.resizable.updateStoredSizes(l, s), d.resizable.toggleTextSelection(l, s, !0) }), c(document) .bind('mousemove' + e, function (e) { var t = s.resizable_vars t.disabled && 0 !== t.mouseXPosition && t.$target && (s.resizable_throttle ? (clearTimeout(t.timer), (t.timer = setTimeout( function () { d.resizable.mouseMove(l, s, e) }, isNaN(s.resizable_throttle) ? 5 : s.resizable_throttle ))) : d.resizable.mouseMove(l, s, e)) }) .bind('mouseup' + e, function () { s.resizable_vars.disabled && (d.resizable.toggleTextSelection(l, s, !1), d.resizable.stopResize(l, s), d.resizable.setHandlePosition(l, s)) }), c(t).bind('resize' + e + ' resizeEnd' + e, function () { d.resizable.setHandlePosition(l, s) }), l.$table .bind( 'columnUpdate pagerComplete resizableUpdate ' .split(' ') .join(e + ' '), function () { d.resizable.setHandlePosition(l, s) } ) .bind('resizableReset' + e, function () { d.resizableReset(l.table) }) .find('thead:first') .add(c(l.namespace + '_extra_table').find('thead:first')) .bind('contextmenu' + e, function () { var e = 0 === s.resizable_vars.storedSizes.length return ( d.resizableReset(l.table), d.resizable.setHandlePosition(l, s), (s.resizable_vars.storedSizes = []), e ) }) }, mouseMove: function (e, t, r) { if ( 0 !== t.resizable_vars.mouseXPosition && t.resizable_vars.$target ) { var i, a = 0, l = t.resizable_vars, s = l.$next, n = l.storedSizes[l.target], o = r.pageX - l.mouseXPosition if (l.overflow) { if (0 < n + o) { for ( l.storedSizes[l.target] += o, d.resizable.setWidth( l.$target, l.storedSizes[l.target], !0 ), i = 0; i < e.columns; i++ ) a += l.storedSizes[i] d.resizable.setWidth( e.$table.add(c(e.namespace + '_extra_table')), a ) } s.length || (l.$wrap[0].scrollLeft = e.$table.width()) } else l.fullWidth ? ((l.storedSizes[l.target] += o), (l.storedSizes[l.next] -= o)) : (l.storedSizes[l.target] += o), d.resizable.setWidths(e, t) ;(l.mouseXPosition = r.pageX), e.$table.triggerHandler('stickyHeadersUpdate') } }, stopResize: function (e, t) { var r = t.resizable_vars d.resizable.updateStoredSizes(e, t), r.useStorage && (d.storage(e.table, d.css.resizableStorage, r.storedSizes), d.storage( e.table, 'tablesorter-table-resized-width', e.$table.width() )), (r.mouseXPosition = 0), (r.$target = r.$next = null), e.$table.triggerHandler('stickyHeadersUpdate'), e.$table.triggerHandler('resizableComplete') }, }), d.addWidget({ id: 'resizable', priority: 40, options: { resizable: !0, resizable_addLastColumn: !1, resizable_includeFooter: !0, resizable_widths: [], resizable_throttle: !1, resizable_targetLast: !1, }, init: function (e, t, r, i) { d.resizable.init(r, i) }, format: function (e, t, r) { d.resizable.setHandlePosition(t, r) }, remove: function (e, t, r, i) { var a r.$resizable_container && ((a = t.namespace + 'tsresize'), t.$table .add(c(t.namespace + '_extra_table')) .removeClass('hasResizable') .children('thead') .unbind('contextmenu' + a), r.$resizable_container.remove(), d.resizable.toggleTextSelection(t, r, !1), d.resizableReset(e, i), c(document).unbind('mousemove' + a + ' mouseup' + a)) }, }), (d.resizableReset = function (l, s) { c(l).each(function () { var e, t, r = this.config, i = r && r.widgetOptions, a = i.resizable_vars if (l && r && r.$headerIndexed.length) { for ( a.overflow && a.tableWidth && (d.resizable.setWidth(r.$table, a.tableWidth, !0), a.useStorage) && d.storage( l, 'tablesorter-table-resized-width', a.tableWidth ), e = 0; e < r.columns; e++ ) (t = r.$headerIndexed[e]), i.resizable_widths && i.resizable_widths[e] ? d.resizable.setWidth( t, i.resizable_widths[e], a.overflow ) : t.hasClass('resizable-false') || d.resizable.setWidth(t, '', a.overflow) r.$table.triggerHandler('stickyHeadersUpdate'), d.storage && !s && d.storage(this, d.css.resizableStorage, []) } }) }) })(e, window), (function (t) { 'use strict' var o = t.tablesorter || {} function c(e) { e = o.storage(e.table, 'tablesorter-savesort') return e && e.hasOwnProperty('sortList') && t.isArray(e.sortList) ? e.sortList : [] } function d(e, t) { return (t || c(e)).join(',') !== e.sortList.join(',') } o.addWidget({ id: 'saveSort', priority: 20, options: { saveSort: !0 }, init: function (e, t, r, i) { t.format(e, r, i, !0) }, format: function (t, e, r, i) { var a, l = e.$table, r = !1 !== r.saveSort, s = { sortList: e.sortList }, n = o.debug(e, 'saveSort') n && (a = new Date()), l.hasClass('hasSaveSort') ? r && t.hasInitialized && o.storage && d(e) && (o.storage(t, 'tablesorter-savesort', s), n) && console.log( 'saveSort >> Saving last sort: ' + e.sortList + o.benchmark(a) ) : (l.addClass('hasSaveSort'), (s = ''), o.storage && ((s = c(e)), n && console.log( 'saveSort >> Last sort loaded: "' + s + '"' + o.benchmark(a) ), l.bind('saveSortReset', function (e) { e.stopPropagation(), o.storage(t, 'tablesorter-savesort', '') })), i && s && 0 < s.length ? (e.sortList = s) : t.hasInitialized && s && 0 < s.length && d(e, s) && o.sortOn(e, s)) }, remove: function (e, t) { t.$table.removeClass('hasSaveSort'), o.storage && o.storage(e, 'tablesorter-savesort', '') }, }) })(e), e.tablesorter ) }) return jQuery }) /* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $(document).ready(function () { PdProductAttributesList.initFancyboxOnProductImages() PdProductAttributesList.initTouchSpinOnProductQtyInputs() PdProductAttributesList.initEventAddToCartToButtons() $('#pdproductattributeslist table.table').tablesorter({ theme: 'default', headerTemplate: '{content} {icon}', widgets: ['uitheme', 'columns'], }) prestashop.on('updateProductList', function (params) { if (typeof params !== 'undefined') { PdProductAttributesList.initFancyboxOnProductImages() PdProductAttributesList.initTouchSpinOnProductQtyInputs() PdProductAttributesList.initEventAddToCartToButtons() } }) }) let PdProductAttributesList = { initFancyboxOnProductImages() { if (!!$.prototype.fancybox) { $('.option_image a.fancybox').fancybox({ hideOnContentClick: !0, openEffect: 'elastic', closeEffect: 'elastic', helpers: { overlay: { locked: !1 } }, }) } }, initTouchSpinOnProductQtyInputs() { if (!!$.prototype.TouchSpin) { var max = parseInt( $("#pdproductattributeslist input[name='qty']").data('max') ) $("#pdproductattributeslist input[name='qty']").TouchSpin({ min: 0, max: max, step: 1, decimals: 0, verticalbuttons: !0, verticaldownclass: 'fa fa-minus touchspin-down bootstrap-touchspin-down material-icons touchspin-down', verticalupclass: 'fa fa-plus touchspin-up bootstrap-touchspin-up material-icons touchspin-up', buttondown_class: 'btn btn-touchspin js-touchspin ', buttonup_class: 'btn btn-touchspin js-touchspin ', }) $("#pdproductattributeslist_grid input[name='qty']").TouchSpin({ min: 0, max: 9999999999, step: 1, decimals: 0, verticalbuttons: !0, verticaldownclass: 'fa fa-minus touchspin-down bootstrap-touchspin-down material-icons touchspin-down', verticalupclass: 'fa fa-plus touchspin-up bootstrap-touchspin-up material-icons touchspin-up', buttondown_class: 'btn btn-touchspin js-touchspin ', buttonup_class: 'btn btn-touchspin js-touchspin ', }) } }, executeAddProductsToCart(products) { $.ajax({ type: 'POST', url: pdproductattributeslist_ajax_link, dataType: 'json', data: { action: 'addProductsToCart', products: products, secure_key: pdproductattributeslist_secure_key, ajax: 1, }, success: function (resp) { if (resp) { prestashop.emit('updateCart', { reason: { cart: [] }, resp: resp }) Object.entries(resp).forEach(([k, v]) => { if (v.response) { if (v.id_product_attribute > 0) { message_ok = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_variant + ' ' + v.combination_name + ' ' + pdproductattributeslist_add_ok $.growl({ title: pdproductattributeslist_title_ok, message: message_ok, duration: 7000, }) } else { message_ok = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_add_ok $.growl({ title: pdproductattributeslist_title_ok, message: message_ok, duration: 7000, }) } } else if (v.response == !1) { if (v.id_product_attribute > 0) { message_error = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_variant + ' ' + v.combination_name + ', ' + pdproductattributeslist_max_qty + ' ' + v.max_quantity + ' ' + pdproductattributeslist_pcs $.growl.error({ title: pdproductattributeslist_title_error, message: message_error, duration: 15000, }) } else { message_error = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_max_qty + ' ' + v.max_quantity + ' ' + pdproductattributeslist_pcs $.growl.error({ title: pdproductattributeslist_title_error, message: message_error, duration: 15000, }) } } }) } else { $.growl.error({ title: pdproductattributeslist_title_error, message: pdproductattributeslist_add_error, duration: 15000, }) } }, }) }, initEventAddToCartToButtons() { $('body').on( 'click', 'button.add-to-cart-pdproductattributeslist', function () { var products_array = [] var tr_colection = $(this).parent().parent().parent().find('tr') $(tr_colection).each(function (index) { elem = $(this).find('td.option_gty') qty = parseInt(elem.find('input.quantity').val()) if (elem.length > 0 && qty > 0) { var product = { id_product: parseInt(elem.data('id-product')), id_product_attribute: parseInt(elem.data('id-product-attribute')), quantity: qty, id_customization: 0, } products_array.push(product) } }) if (products_array.length > 0) { PdProductAttributesList.executeAddProductsToCart(products_array) } else { $.growl.error({ title: pdproductattributeslist_title_error, message: pdproductattributeslist_add_error, }) } } ) }, } $(document).ready(function () { $.each(list_menu, function (index, value) { if (value.type == 'horizontal') { var megamenu_element = $('.cavas_menu[data-megamenu-id=' + value.id + ']') if ($('body').attr('id') == 'index') isHomeMenu = 1 megamenu_element.find('.megamenu > li > a').each(function () { menuURL = $(this) .attr('href') .replace('https://', '') .replace('http://', '') .replace('www.', '') .replace(/#\w*/, '') if ( currentURL == menuURL || currentURL.replace(current_link, '') == menuURL || isHomeMenu ) { $(this).parent().addClass('active') return !1 } }) if ($(window).width() <= 767) { set_target_blank(!1, megamenu_element) } else { set_target_blank(!0, megamenu_element) } if (value.show_cavas == 1) { $.fn.OffCavasmenu = function (opts) { var config = $.extend( {}, { opt1: null, text_warning_select: text_warning_select_txt, text_confirm_remove: text_confirm_remove_txt, JSON: null, }, opts ) this.each(function () { var $btn = megamenu_element.find('.navbar-toggler') var $nav = null if (!$btn.length) return var $nav = $( "
' ) var $menucontent = $($btn.data('target')).find('.megamenu').clone() $('body').append($nav) $('body main').append( "
wrapper_height) { if (!$('#page').hasClass('megamenu-autoheight')) { $('#page').addClass('megamenu-autoheight') } } else { $('#page').removeClass('megamenu-autoheight') } } function auto_height(menu_id) { windowHeight = $(window).innerHeight() $( '.off-canvas-nav-megamenu[data-megamenu-id=' + menu_id + '] .offcanvas-mainnav' ).css('min-height', windowHeight) } function off_canvas_active() { if ($('body').hasClass('off-canvas-active')) { $('body').removeClass('off-canvas-active').addClass('off-canvas-inactive') } else if ($('body').hasClass('off-canvas-inactive')) { $('body').removeClass('off-canvas-inactive').addClass('off-canvas-active') } else { $('body').addClass('off-canvas-active') } } function set_target_blank(show, megamenu_element) { if (show) { megamenu_element.find('.leo-top-menu li a').each(function () { if ( $(this).hasClass('has-category') && this.hasAttribute('data-toggle') && $(this).attr('target') == '_blank' ) { var value = $(this).attr('data-toggle') $(this).removeAttr('data-toggle') $(this).attr('remove-data-toggle', value) } }) } else { megamenu_element.find('.leo-top-menu li a').each(function () { if ( $(this).hasClass('has-category') && this.hasAttribute('remove-data-toggle') && $(this).attr('target') == '_blank' ) { var value = $(this).attr('remove-data-toggle') $(this).removeAttr('remove-data-toggle') $(this).attr('data-toggle', value) } }) } } function scrollSliderBarMenu(megamenu_element) { var menuElement = megamenu_element var columnElement = null var maxWindowSize = 991 if ($(columnElement).length && $(window).width() >= maxWindowSize) showOrHideSliderBarMenu(columnElement, menuElement, 1) megamenu_element.find('.verticalmenu-button').click(function () { if ($(menuElement).hasClass('active')) { showOrHideSliderBarMenu(columnElement, menuElement, 0) } else { showOrHideSliderBarMenu(columnElement, menuElement, 1) } }) var lastWidth = $(window).width() $(window).resize(function () { if ($(window).width() != lastWidth) { if ($(window).width() < maxWindowSize) { if ($(menuElement).hasClass('active')) showOrHideSliderBarMenu(columnElement, menuElement, 0) } else { if ($(columnElement).length && !$(menuElement).hasClass('active')) showOrHideSliderBarMenu(columnElement, menuElement, 1) } lastWidth = $(window).width() } }) } function showOrHideSliderBarMenu(columnElement, menuElement, active) { if (active) { $(menuElement).addClass('active') if ($(columnElement).length && $(window).width() >= 991) columnElement.css( 'padding-top', $('.block_content', $(menuElement)).height() + 'px' ) } else { $(menuElement).removeClass('active') if ($(columnElement).length) columnElement.css('padding-top', '') } } $(document).ready(function () { if (typeof enable_js_lang != 'undefined') { $('ul#first-currencies li:not(.selected)').css('opacity', 0.3) $('ul#first-currencies li:not(.selected)').hover( function () { $(this).css('opacity', 1) }, function () { $(this).css('opacity', 0.3) } ) } if (typeof enable_js_currency != 'undefined') { $('#setCurrency').mouseover(function () { $(this).addClass('countries_hover') $('.currencies_ul').addClass('currencies_ul_hover') }) $('#setCurrency').mouseout(function () { $(this).removeClass('countries_hover') $('.currencies_ul').removeClass('currencies_ul_hover') }) } if (typeof js_country != 'undefined') { $('#countries').mouseover(function () { $(this).addClass('countries_hover') $('.countries_ul').addClass('countries_ul_hover') }) $('#countries').mouseout(function () { $(this).removeClass('countries_hover') $('.countries_ul').removeClass('countries_ul_hover') }) } }) function setCurrency(id_currency) { $.ajax({ type: 'POST', headers: { 'cache-control': 'no-cache' }, url: prestashop.urls.base_url + 'index.php' + '?rand=' + new Date().getTime(), data: 'controller=change-currency&id_currency=' + parseInt(id_currency), success: function (msg) { location.reload(!0) }, }) } var matched, browser jQuery.uaMatch = function (ua) { ua = ua.toLowerCase() var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || [] return { browser: match[1] || '', version: match[2] || '0' } } matched = jQuery.uaMatch(navigator.userAgent) browser = {} if (matched.browser) { browser[matched.browser] = !0 browser.version = matched.version } if (browser.chrome) { browser.webkit = !0 } else if (browser.webkit) { browser.safari = !0 } jQuery.browser = browser ;(function ($) { $.fn.extend({ autocomplete: function (urlOrData, options) { var isUrl = typeof urlOrData == 'string' options = $.extend( {}, $.Autocompleter.defaults, { url: isUrl ? urlOrData : null, data: isUrl ? null : urlOrData, delay: isUrl ? $.Autocompleter.defaults.delay : 10, max: options && !options.scroll ? 10 : 150, }, options ) options.highlight = options.highlight || function (value) { return value } options.formatMatch = options.formatMatch || options.formatItem return this.each(function () { new $.Autocompleter(this, options) }) }, result: function (handler) { return this.bind('result', handler) }, search: function (handler) { return this.trigger('search', [handler]) }, flushCache: function () { return this.trigger('flushCache') }, setOptions: function (options) { return this.trigger('setOptions', [options]) }, unautocomplete: function () { return this.trigger('unautocomplete') }, }) $.Autocompleter = function (input, options) { var KEY = { UP: 38, DOWN: 40, DEL: 46, TAB: 9, RETURN: 13, ESC: 27, COMMA: 188, PAGEUP: 33, PAGEDOWN: 34, BACKSPACE: 8, } var $input = $(input) .attr('autocomplete', 'off') .addClass(options.inputClass) var $loading = $input.parent().find('.leoproductsearch-loading') var timeout var previousValue = '' var cache = $.Autocompleter.Cache(options) var hasFocus = 0 var lastKeyPressCode var config = { mouseDownOnSelect: !1 } var select = $.Autocompleter.Select(options, input, selectCurrent, config) var blockSubmit $.browser.opera && $(input.form).bind('submit.autocomplete', function () { if (blockSubmit) { blockSubmit = !1 return !1 } }) $input .bind( ($.browser.opera ? 'keypress' : 'keydown') + '.autocomplete', function (event) { lastKeyPressCode = event.keyCode switch (event.keyCode) { case KEY.UP: event.preventDefault() if (select.visible()) { select.prev() } else { onChange(0, !0) } break case KEY.DOWN: event.preventDefault() if (select.visible()) { select.next() } else { onChange(0, !0) } break case KEY.PAGEUP: event.preventDefault() if (select.visible()) { select.pageUp() } else { onChange(0, !0) } break case KEY.PAGEDOWN: event.preventDefault() if (select.visible()) { select.pageDown() } else { onChange(0, !0) } break case options.multiple && $.trim(options.multipleSeparator) == ',' && KEY.COMMA: case KEY.TAB: case KEY.RETURN: if (selectCurrent()) { event.preventDefault() blockSubmit = !0 return !1 } break case KEY.ESC: select.hide() break default: clearTimeout(timeout) timeout = setTimeout(onChange, options.delay) break } } ) .focus(function () { hasFocus++ }) .blur(function () { hasFocus = 0 if (!config.mouseDownOnSelect) { hideResults() } }) .click(function () { if (hasFocus++ > 1 && !select.visible()) { onChange(0, !0) } }) .bind('search', function () { var fn = arguments.length > 1 ? arguments[1] : null function findValueCallback(q, data) { var result if (data && data.length) { for (var i = 0; i < data.length; i++) { if (data[i].result.toLowerCase() == q.toLowerCase()) { result = data[i] break } } } if (typeof fn == 'function') fn(result) else $input.trigger('result', result && [result.data, result.value]) } $.each(trimWords($input.val()), function (i, value) { request(value, findValueCallback, findValueCallback) }) }) .bind('flushCache', function () { cache.flush() }) .bind('setOptions', function () { $.extend(options, arguments[1]) if ('data' in arguments[1]) cache.populate() }) .bind('unautocomplete', function () { select.unbind() $input.unbind() $(input.form).unbind('.autocomplete') }) function selectCurrent() { var selected = select.selected() if (!selected) return !1 var v = selected.result previousValue = v if (options.multiple) { var words = trimWords($input.val()) if (words.length > 1) { v = words.slice(0, words.length - 1).join(options.multipleSeparator) + options.multipleSeparator + v } v += options.multipleSeparator } $input.val(v) hideResultsNow() $input.trigger('result', [selected.data, selected.value]) return !0 } function onChange(crap, skipPrevCheck) { if (lastKeyPressCode == KEY.DEL) { select.hide() return } var currentValue = $input.val() if (!skipPrevCheck && currentValue == previousValue) return previousValue = currentValue currentValue = lastWord(currentValue) if (currentValue.length >= options.minChars) { $input.addClass(options.loadingClass) if (!options.matchCase) currentValue = currentValue.toLowerCase() request(currentValue, receiveData, hideResultsNow) } else { stopLoading() select.hide() } } function trimWords(value) { if (!value) { return [''] } var words = value.split(options.multipleSeparator) var result = [] $.each(words, function (i, value) { if ($.trim(value)) result[i] = $.trim(value) }) return result } function lastWord(value) { if (!options.multiple) return value var words = trimWords(value) return words[words.length - 1] } function autoFill(q, sValue) { if ( options.autoFill && lastWord($input.val()).toLowerCase() == q.toLowerCase() && lastKeyPressCode != KEY.BACKSPACE ) { $input.val( $input.val() + sValue.substring(lastWord(previousValue).length) ) $.Autocompleter.Selection( input, previousValue.length, previousValue.length + sValue.length ) } } function hideResults() { clearTimeout(timeout) timeout = setTimeout(hideResultsNow, 200) } function hideResultsNow() { var wasVisible = select.visible() select.hide() clearTimeout(timeout) stopLoading() if (options.mustMatch) { $input.search(function (result) { if (!result) { if (options.multiple) { var words = trimWords($input.val()).slice(0, -1) $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : '') ) } else $input.val('') } }) } if (wasVisible) $.Autocompleter.Selection(input, input.value.length, input.value.length) } function receiveData(q, data) { if (data && data.length && hasFocus) { stopLoading() select.display(data, q) autoFill(q, data[0].value) select.show() } else { hideResultsNow() } } function request(term, success, failure) { $loading.show() if (!options.matchCase) term = term.toLowerCase() var data = cache.load(term) if (data && data.length) { success(term, data) } else if (typeof options.url == 'string' && options.url.length > 0) { var extraParams = { timestamp: +new Date() } $.each(options.extraParams, function (key, param) { extraParams[key] = typeof param == 'function' ? param() : param }) $.ajax({ mode: 'abort', port: 'autocomplete' + input.name, dataType: options.dataType, url: options.url, data: $.extend( { cate: $('input[name="cate"]').val(), q: lastWord(term), limit: options.max, }, extraParams ), success: function (data) { var str = '
' if (data.suggest.length) { str += '
' str += '
' + $('#leosearchtopbox').data('label-suggestion') + '
' str += '' str += '
' } if (data.category.length) { str += '
' str += '
' + $('#leosearchtopbox').data('search-for') + ' "' + $('#leo_search_query_top').val() + '"
' if (data.category.length) { str += '' } str += '
' } if (data.products.length) { str += '
' str += '
' + $('#leosearchtopbox').data('products-for') + ' "' + $('#leo_search_query_top').val() + '"
' str += '' str += '
' str += '
' str += '' } else { str += "
Nie znaleziono żadnego produktu
" str += '
' } $('.leoproductsearch-result .ac_results').html(str) $('.leoproductsearch-result .ac_results').show() $('.suggest-item').click(function () { $('#leo_search_query_top').val($(this).attr('href')) onChange(0, !0) return !1 }) $loading.hide() }, }) } else { select.emptyList() failure(term) } } function parse(data) { var parsed = [] var rows = data.split('\n') for (var i = 0; i < rows.length; i++) { var row = $.trim(rows[i]) if (row) { row = row.split('|') parsed[parsed.length] = { data: row, value: row[0], result: (options.formatResult && options.formatResult(row, row[0])) || row[0], } } } return parsed } function stopLoading() { $input.removeClass(options.loadingClass) } } $.Autocompleter.defaults = { inputClass: 'ac_input', resultsClass: 'ac_results lps_results', loadingClass: 'ac_loading', minChars: 1, delay: 400, matchCase: !1, matchSubset: !0, matchContains: !1, cacheLength: 10, max: 100, mustMatch: !1, extraParams: {}, selectFirst: !0, formatItem: function (row) { return row[0] }, formatMatch: null, autoFill: !1, width: 0, multiple: !1, multipleSeparator: ', ', highlight: function (value, term) { return value.replace( new RegExp( '(?![^&;]+;)(?!<[^<>]*)(' + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, '\\$1') + ')(?![^<>]*>)(?![^&;]+;)', 'gi' ), '$1' ) }, scroll: !0, scrollHeight: 180, } $.Autocompleter.Cache = function (options) { var data = {} var length = 0 function matchSubset(s, sub) { if (!options.matchCase) s = s.toLowerCase() var i = s.indexOf(sub) if (i == -1) return !1 return i == 0 || options.matchContains } function add(q, cate, value) { if (length > options.cacheLength) { flush() } if (!data[q]) { length++ } data[q] = value } function populate() { if (!options.data) return !1 var stMatchSets = {}, nullData = 0 if (!options.url) options.cacheLength = 1 stMatchSets[''] = [] for (var i = 0, ol = options.data.length; i < ol; i++) { var rawValue = options.data[i] rawValue = typeof rawValue == 'string' ? [rawValue] : rawValue var value = options.formatMatch(rawValue, i + 1, options.data.length) if (value === !1) continue var firstChar = value.charAt(0).toLowerCase() if (!stMatchSets[firstChar]) stMatchSets[firstChar] = [] var row = { value: value, data: rawValue, result: (options.formatResult && options.formatResult(rawValue)) || value, } stMatchSets[firstChar].push(row) if (nullData++ < options.max) { stMatchSets[''].push(row) } } $.each(stMatchSets, function (i, value) { options.cacheLength++ add(i, value) }) } setTimeout(populate, 25) function flush() { data = {} length = 0 } return { flush: flush, add: add, populate: populate, load: function (q) { if (!options.cacheLength || !length) return null if (!options.url && options.matchContains) { var csub = [] for (var k in data) { if (k.length > 0) { var c = data[k] $.each(c, function (i, x) { if (matchSubset(x.value, q)) { csub.push(x) } }) } } return csub } else if (data[q]) { return data[q] } else if (options.matchSubset) { for (var i = q.length - 1; i >= options.minChars; i--) { var c = data[q.substr(0, i)] if (c) { var csub = [] $.each(c, function (i, x) { if (matchSubset(x.value, q)) { csub[csub.length] = x } }) return csub } } } return null }, } } $.Autocompleter.Select = function (options, input, select, config) { var CLASSES = { ACTIVE: 'ac_over' } var listItems, active = -1, data, term = '', needsInit = !0, element, list function init() { if (!needsInit) return element = $('
') .hide() .addClass(options.resultsClass) .css('position', 'absolute') .appendTo('.leoproductsearch-result') list = $('
') .appendTo(element) .mouseover(function (event) { if ( target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI' ) { active = $('li', list) .removeClass(CLASSES.ACTIVE) .index(target(event)) $(target(event)).addClass(CLASSES.ACTIVE) } }) .click(function (event) { $(target(event)).addClass(CLASSES.ACTIVE) select() input.focus() return !1 }) .mousedown(function () { config.mouseDownOnSelect = !0 }) .mouseup(function () { config.mouseDownOnSelect = !1 }) if (options.width > 0) element.css('width', options.width) needsInit = !1 } function target(event) { var element = event.target while (element && element.tagName != 'LI') element = element.parentNode if (!element) return [] return element } function moveSelect(step) { listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE) movePosition(step) var activeItem = listItems .slice(active, active + 1) .addClass(CLASSES.ACTIVE) if (options.scroll) { var offset = 0 listItems.slice(0, active).each(function () { offset += this.offsetHeight }) if ( offset + activeItem[0].offsetHeight - list.scrollTop() > list[0].clientHeight ) { list.scrollTop( offset + activeItem[0].offsetHeight - list.innerHeight() ) } else if (offset < list.scrollTop()) { list.scrollTop(offset) } } } function movePosition(step) { active += step if (active < 0) { active = listItems.size() - 1 } else if (active >= listItems.size()) { active = 0 } } function limitNumberOfItems(available) { return options.max && options.max < available ? options.max : available } function fillList() { list.empty() var max = limitNumberOfItems(data.length) for (var i = 0; i < max; i++) { if (!data[i]) continue var formatted = options.formatItem( data[i].data, i + 1, max, data[i].value, term ) if (formatted === !1) continue var li = $('
  • ') .html(options.highlight(formatted, term)) .addClass(i % 2 == 0 ? 'ac_even' : 'ac_odd') .appendTo(list)[0] $.data(li, 'ac_data', data[i]) } listItems = list.find('li') if (options.selectFirst) { listItems.slice(0, 1).addClass(CLASSES.ACTIVE) active = 0 } if ($.fn.bgiframe) list.bgiframe() } return { display: function (d, q) { init() data = d term = q fillList() }, next: function () { moveSelect(1) }, prev: function () { moveSelect(-1) }, pageUp: function () { if (active != 0 && active - 8 < 0) { moveSelect(-active) } else { moveSelect(-8) } }, pageDown: function () { if (active != listItems.size() - 1 && active + 8 > listItems.size()) { moveSelect(listItems.size() - 1 - active) } else { moveSelect(8) } }, hide: function () { element && element.hide() listItems && listItems.removeClass(CLASSES.ACTIVE) active = -1 }, visible: function () { return element && element.is(':visible') }, current: function () { return ( this.visible() && (listItems.filter('.' + CLASSES.ACTIVE)[0] || (options.selectFirst && listItems[0])) ) }, show: function () { var offset = $(input).offset() element .css({ width: typeof options.width == 'string' || options.width > 0 ? options.width : $(input).width() + parseInt($(input).css('padding-left')) + parseInt($(input).css('padding-right')) + parseInt($(input).css('margin-left')) + parseInt($(input).css('margin-right')), top: '100%', left: 0, }) .show() if (options.scroll) { list.css({ maxHeight: options.scrollHeight, overflow: 'auto' }) if ( $.browser.msie && typeof document.body.style.maxHeight === 'undefined' ) { var listHeight = 0 listItems.each(function () { listHeight += this.offsetHeight }) var scrollbarsVisible = listHeight > options.scrollHeight list.css( 'height', scrollbarsVisible ? options.scrollHeight : listHeight ) if (!scrollbarsVisible) { listItems.width( list.width() - parseInt(listItems.css('padding-left')) - parseInt(listItems.css('padding-right')) ) } } } }, selected: function () { var selected = listItems && listItems.filter('.' + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE) return selected && selected.length && $.data(selected[0], 'ac_data') }, emptyList: function () { list && list.empty() }, unbind: function () { element && element.remove() }, } } $.Autocompleter.Selection = function (field, start, end) { if (field.createTextRange) { var selRange = field.createTextRange() selRange.collapse(!0) selRange.moveStart('character', start) selRange.moveEnd('character', end) selRange.select() } else if (field.setSelectionRange) { field.setSelectionRange(start, end) } else { if (field.selectionStart) { field.selectionStart = start field.selectionEnd = end } } field.focus() } })(jQuery) var instantSearchQueries = [] $(document).click(function (event) { var $target = $(event.target) if (!$target.closest('.leoproductsearch-content').length) { $('.leoproductsearch-result .ac_results').hide() } }) $(document).ready(function () { $('#leo_search_query_top').click(function () { if ($(this).val().length > 2) { $('.leoproductsearch-result .ac_results').show() } }) if ( typeof ajaxsearch != 'undefined' && ajaxsearch && typeof blocksearch_type !== 'undefined' && blocksearch_type ) { var width_ac_results = $( '#leo_search_query_' + blocksearch_type ).outerWidth() $('#leo_search_query_' + blocksearch_type) .autocomplete(leo_search_url, { minChars: 3, max: numpro_display, width: width_ac_results > 0 ? width_ac_results : 500, selectFirst: !1, scroll: !1, dataType: 'json', formatItem: function (data, i, max, value, term) { return value }, extraParams: { ajaxSearch: 1, id_lang: prestashop.language.id, leoproductsearch_static_token: leoproductsearch_static_token, leoproductsearch_token: leoproductsearch_token, }, }) .result(function (event, data, formatted) { $('#leo_search_query_' + blocksearch_type).val(data.name) document.location.href = data.url }) $('#leo_search_query_' + blocksearch_type).click(function () { width_ac_results = $(this).outerWidth() $(this).setOptions({ width: width_ac_results }) }) } $('.cate-item').click(function () { if (!$(this).hasClass('active')) { $('.cate-item.active').removeClass('active') var cate_id = $(this).data('cate-id') var cate_name = $(this).data('cate-name') $('#leosearch-cate-id').val(cate_id) $('#leosearchtop-cate-id').val(cate_id) $('#dropdownListCate span').text(cate_name) $('#dropdownListCateTop span').text(cate_name) $(this).addClass('active') } $('#dropdownListCate').trigger('click') $('#dropdownListCateTop').trigger('click') var e = jQuery.Event('keydown') e.keyCode = 40 $(this).parents('form').find('.search_query').focus().trigger(e) return !1 }) $('.search_query').click(function () { if ($(this).val() != '') { } }) $('.search_query').change(function () { if ($(this).val() != '') { var e = jQuery.Event('keydown') e.keyCode = 40 $(this).trigger(e) } }) }) $(window).resize(function () { updatePositionOfResult() }) function updatePositionOfResult() { if ($('.ac_results').length) { width_ac_results = $('#leo_search_query_' + blocksearch_type).outerWidth() $('#leo_search_query_' + blocksearch_type).setOptions({ width: width_ac_results, }) $('.ac_results').width(width_ac_results) } } function tryToCloseInstantSearch() { if ($('#old_center_column').length > 0) { $('#center_column').remove() $('#old_center_column').attr('id', 'center_column') $('#center_column').show() return !1 } } function stopInstantSearchQueries() { for (i = 0; i < instantSearchQueries.length; i++) instantSearchQueries[i].abort() instantSearchQueries = new Array() } function initSlider(selector, options) { if ($.fn.slick) { $(selector).slick(options) } else { ;(function (factory) { 'use strict' if (typeof define === 'function' && define.amd) { define(['jquery'], factory) } else if (typeof exports !== 'undefined') { module.exports = factory(require('jquery')) } else { factory(jQuery) } })(function ($) { 'use strict' var Slick = window.Slick || {} Slick = (function () { var instanceUid = 0 function Slick(element, settings) { var _ = this, dataSettings _.defaults = { accessibility: !0, adaptiveHeight: !1, appendArrows: $(element), appendDots: $(element), arrows: !0, asNavFor: null, prevArrow: '', nextArrow: '', autoplay: !1, autoplaySpeed: 3000, centerMode: !1, centerPadding: '50px', cssEase: 'ease', customPaging: function (slider, i) { return $('