diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 79ea1a305..000000000 --- a/.eslintignore +++ /dev/null @@ -1,15 +0,0 @@ -core/openseadragon/*.js -core/openseadragonzoomlevels.js -core/openseadragonzoomlevels.BAK.js -core/openseadragon-scalebar.js -core/openseadragon-scalebar.BAK.js -core/openseadragon-imaginghelper.min.js -core/openseadragon-imaginghelper.min.BAK.js -apps/landing/skel.min.js -apps/landing/util.js -apps/landing/jquery.dropotron.min.js -apps/landing/jquery.min.js -apps/landing/jquery.scrollex.min.js -apps/segment/opencv.js -common/bootstrap-tour-standalone/bootstrap-tour-standalone.min.js -apps/viewer/turf.min.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 72874e116..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - 'env': { - 'browser': true, - 'es6': true, - }, - 'extends': [ - 'google', - ], - 'globals': { - 'Atomics': 'readonly', - 'SharedArrayBuffer': 'readonly', - }, - 'parserOptions': { - 'ecmaVersion': 2020, - }, - 'rules': { - "require-jsdoc" : 0, - "valid-jsdoc" : 0, - "max-len" : ["error", { "code": 125 ,"ignoreTemplateLiterals": true},], - "no-unused-vars" : 0, - "no-var" : 0, - "new-cap" : 0, - "prefer-const":0, - "linebreak-style": 0, - }, -}; diff --git a/.github/workflows/axe-a11y-check.yml b/.github/workflows/axe-a11y-check.yml index 5a4d93867..7bbb0dd2f 100644 --- a/.github/workflows/axe-a11y-check.yml +++ b/.github/workflows/axe-a11y-check.yml @@ -15,15 +15,15 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - run: npm install - - run: npm install -g http-server + - run: npm ci + - run: npm install -g http-server@14.1.1 - run: npm run build --if-present - run: http-server -s & - name: Install specific version of ChromeDriver @@ -31,10 +31,10 @@ jobs: - name: Run axe id: axe-test run: | - npm install -g @axe-core/cli + npm install -g @axe-core/cli@4.12.1 sleep 90 axe http://127.0.0.1:8080 --chromedriver-path $(npm root -g)/chromedriver/bin/chromedriver --exit || echo "status=warning" >> $GITHUB_ENV - + - name: Set output status to warning (if test fails) if: env.status == 'warning' run: echo "::warning::Accessibility tests failed, but this does not block (most) PRs." diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index f6b206019..2dad88e7c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -12,22 +12,17 @@ jobs: strategy: matrix: - node-version: [16.x, 18.x] + node-version: [24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - run: npm install - - run: npm install jsdom - - run: npm install -g http-server - - run: npm install -g mocha - - run: npm install eslint - - run: npm install eslint-config-google - - run: http-server -s & - - run: npm run build --if-present + - run: npm ci + - run: npx http-server -s . & - run: npm run lint - run: npm test + - run: npm run test-mocha diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f0374f9..8bfbd8bb8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,18 +14,21 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: '24.x' - - name: Install dependencies and ESLint - run: | - npm install - npm install eslint eslint-config-google + - name: Install dependencies + run: npm ci + + - name: Start static file server + run: npx http-server -s . & - - name: Run Jest tests and linting + - name: Run linting and tests run: | - npm run lint && npm test + npm run lint + npm test + npm run test-mocha diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 000000000..68e5128ca --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,4 @@ +{ + "require": "./test/config.js", + "spec": "test/ui/**/*.js" +} diff --git a/Dockerfile b/Dockerfile index 7b7505a24..3c4d29b45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM httpd:alpine +FROM httpd:2.4-alpine EXPOSE 80 ARG cacheoff COPY ./ /usr/local/apache2/htdocs/ diff --git a/apps/Info.html b/apps/Info.html index 27e380fa6..d912280fc 100644 --- a/apps/Info.html +++ b/apps/Info.html @@ -16,7 +16,7 @@ caMicroscope - Information Dashboard - + Infor + diff --git a/apps/admin/admin.html b/apps/admin/admin.html index cd93f55c8..99425f548 100644 --- a/apps/admin/admin.html +++ b/apps/admin/admin.html @@ -116,11 +116,7 @@ - + - + + + + + CaMicroscope Data Table - + caMicroscope
+ +
- + + + + + + diff --git a/apps/dicom-web/table.js b/apps/dicom-web/table.js index b4710805f..be49782f1 100644 --- a/apps/dicom-web/table.js +++ b/apps/dicom-web/table.js @@ -1,21 +1,3 @@ -/** - * static variables - */ - -const sources = [{ - 'name': 'j4care', - 'url': 'https://ihe.j4care.com:18443/dcm4chee-arc/aets/DCM4CHEE/rs', - -}, { - 'name': 'google', - 'url': 'https://dicomwebproxy.app/dicomWeb', -}, { - 'name': 'BMD', - 'url': 'https://dicom-wg26.bmd-software.com/ext/dicom-web', -}]; -// const j4careStudiesUrl = 'https://development.j4care.com:11443/dcm4chee-arc/aets/DCM4CHEE/rs' -// const dicomWebStudiesUrl = 'https://dicomwebproxy-bqmq3usc3a-uc.a.run.app/dicomWeb' - /** * global variables */ @@ -29,20 +11,15 @@ const datatableConfig = { ], }; - +// DICOMweb sources are persisted as a Configuration document +// (config_name: 'dicomweb_sources', configuration: [{id, name, url}]), +// the same pattern used for e.g. channel-view presets. `pageStates.sourcesDoc` +// holds the loaded document (or null if none exists yet) so add/remove can +// tell whether to create or update it. const pageStates = { + sourcesDoc: null, sources: { - data: [{ - 'name': 'j4care', - 'url': 'https://ihe.j4care.com:18443/dcm4chee-arc/aets/DCM4CHEE/rs', - - }, { - 'name': 'google', - 'url': 'https://dicomwebproxy-bqmq3usc3a-uc.a.run.app/dicomWeb', - }, { - 'name': 'BMD', - 'url': 'https://dicom-wg26.bmd-software.com/ext/dicom-web', - }], + data: [], }, studies: { data: null, @@ -56,6 +33,64 @@ const pageStates = { status: 'sources', // 'sources, studies, series, instsances' }; var studies = []; +var store; + +/** + * loads the dicomweb_sources Configuration document into pageStates. + * @return {promise} - resolves once pageStates.sourcesDoc/sources.data are populated + */ +function loadSources() { + return store.getConfigByName('dicomweb_sources').then((list) => { + const doc = (list && list.length) ? list[0] : null; + // Configuration/find returns _id as extended-JSON ({$oid: ...}), but + // Configuration/update expects a plain string; normalize it here. + if (doc && doc._id && doc._id.$oid) doc._id = doc._id.$oid; + pageStates.sourcesDoc = doc; + pageStates.sources.data = doc ? doc.configuration : []; + }); +} + +/** + * adds a new source (read from the Add Source dialog inputs), persists it, + * and refreshes the sources table. + */ +async function addSource() { + const name = document.getElementById('sourceNameInput').value.trim(); + const url = document.getElementById('sourceUrlInput').value.trim(); + if (!name || !/^https?:\/\//i.test(url)) { + alert('Please provide a name and a URL starting with http:// or https://'); + return; + } + const source = {id: randomId(), name: name, url: url}; + if (!pageStates.sourcesDoc) { + const result = await store.post('Configuration', { + config_name: 'dicomweb_sources', + configuration: [source], + }); + pageStates.sourcesDoc = {_id: result.insertedIds['0'], configuration: [source]}; + } else { + pageStates.sourcesDoc.configuration.push(source); + await store.updateDicomwebSources( + pageStates.sourcesDoc._id, pageStates.sourcesDoc.configuration); + } + pageStates.sources.data = pageStates.sourcesDoc.configuration; + document.getElementById('sourceNameInput').value = ''; + document.getElementById('sourceUrlInput').value = ''; + $('#add-source-dialog').modal('hide'); + datatable.clear().rows.add(pageStates.sources.data).draw(); +} + +/** + * removes a source by id, persists the change, and refreshes the sources table. + * @param {string} id - the source's id (not the Configuration doc's _id) + */ +async function removeSource(id) { + pageStates.sourcesDoc.configuration = pageStates.sourcesDoc.configuration.filter((s) => s.id !== id); + await store.updateDicomwebSources( + pageStates.sourcesDoc._id, pageStates.sourcesDoc.configuration); + pageStates.sources.data = pageStates.sourcesDoc.configuration; + datatable.clear().rows.add(pageStates.sources.data).draw(); +} function getStudies(baseUrl) { @@ -98,12 +133,13 @@ function sanitize(string) { } -function initialize() { +async function initialize() { const params = getUrlVars(); console.log('params'); console.log(params); // store - const store = new Store('../../data/'); + store = new Store('../../data/'); + await loadSources(); if (params.status=='studies'&¶ms.source) { pageStates.status = params.status; } else if (params.status=='series'&¶ms.source&¶ms.studyId) { // series table @@ -118,15 +154,20 @@ function initialize() { // switch (pageStates.status) { case 'sources': + $('#addSourceBtn').show(); $('#breadcrumb').append(``); function generateLink(data, type, row) { - return `${row.name}`; + return `${sanitize(row.name)}`; + } + function generateRemove(data, type, row) { + return ``; } datatable = $('#datatable').DataTable({ ...datatableConfig, 'data': pageStates[pageStates.status].data, 'columns': [ {data: 'name', title: 'Name', render: generateLink}, + {data: null, title: '', render: generateRemove}, ], }); @@ -134,8 +175,8 @@ function initialize() { case 'studies': // get source info - var idx = sources.findIndex((elt)=>elt.name==params.source); - var src = sources[idx]; + var idx = pageStates.sources.data.findIndex((elt)=>elt.name==decodeURIComponent(params.source)); + var src = pageStates.sources.data[idx]; // create breadcrumb for studies $('#breadcrumb').append(``); @@ -181,8 +222,8 @@ function initialize() { break; case 'series': // get source info - var idx = sources.findIndex((elt)=>elt.name==params.source); - var src = sources[idx]; + var idx = pageStates.sources.data.findIndex((elt)=>elt.name==decodeURIComponent(params.source)); + var src = pageStates.sources.data[idx]; // create breadcrumb for series $('#breadcrumb').append(``); @@ -323,8 +364,8 @@ function initialize() { break; case 'instances': // get source info - var idx = sources.findIndex((elt)=>elt.name==params.source); - var src = sources[idx]; + var idx = pageStates.sources.data.findIndex((elt)=>elt.name==decodeURIComponent(params.source)); + var src = pageStates.sources.data[idx]; // create breadcrumb for instances const backSeriesUrl = `../dicom-web/table.html?source=${params.source}&status=series&studyId=${params.studyId}`; $('#breadcrumb').append(``); diff --git a/apps/heatmap/heatmap.html b/apps/heatmap/heatmap.html index 475d599a0..d69b905fe 100644 --- a/apps/heatmap/heatmap.html +++ b/apps/heatmap/heatmap.html @@ -60,7 +60,7 @@ - + diff --git a/apps/landing/jquery.min.js b/apps/landing/jquery.min.js deleted file mode 100644 index f0bcaa5d0..000000000 --- a/apps/landing/jquery.min.js +++ /dev/null @@ -1,1594 +0,0 @@ -/* ! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a, b) { -'object'==typeof module&&'object'==typeof module.exports?module.exports=a.document?b(a, !0):function(a) { - if (!a.document) throw new Error('jQuery requires a window with a document'); return b(a); -}:b(a); -}('undefined'!=typeof window?window:this, function(a, b) { - var c=[]; var d=c.slice; var e=c.concat; var f=c.push; var g=c.indexOf; var h={}; var i=h.toString; var j=h.hasOwnProperty; var k={}; var l='1.11.3'; var m=function(a, b) { - return new m.fn.init(a, b); - }; var n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; var o=/^-ms-/; var p=/-([\da-z])/gi; var q=function(a, b) { - return b.toUpperCase(); - }; m.fn=m.prototype={jquery: l, constructor: m, selector: '', length: 0, toArray: function() { - return d.call(this); - }, get: function(a) { - return null!=a?0>a?this[a+this.length]:this[a]:d.call(this); - }, pushStack: function(a) { - var b=m.merge(this.constructor(), a); return b.prevObject=this, b.context=this.context, b; - }, each: function(a, b) { - return m.each(this, a, b); - }, map: function(a) { - return this.pushStack(m.map(this, function(b, c) { - return a.call(b, c, b); - })); - }, slice: function() { - return this.pushStack(d.apply(this, arguments)); - }, first: function() { - return this.eq(0); - }, last: function() { - return this.eq(-1); - }, eq: function(a) { - var b=this.length; var c=+a+(0>a?b:0); return this.pushStack(c>=0&&b>c?[this[c]]:[]); - }, end: function() { - return this.prevObject||this.constructor(null); - }, push: f, sort: c.sort, splice: c.splice}, m.extend=m.fn.extend=function() { - var a; var b; var c; var d; var e; var f; var g=arguments[0]||{}; var h=1; var i=arguments.length; var j=!1; for ('boolean'==typeof g&&(j=g, g=arguments[h]||{}, h++), 'object'==typeof g||m.isFunction(g)||(g={}), h===i&&(g=this, h--); i>h; h++) if (null!=(e=arguments[h])) for (d in e)a=g[d], c=e[d], g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1, f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{}, g[d]=m.extend(j, f, c)):void 0!==c&&(g[d]=c)); return g; - }, m.extend({expando: 'jQuery'+(l+Math.random()).replace(/\D/g, ''), isReady: !0, error: function(a) { - throw new Error(a); - }, noop: function() {}, isFunction: function(a) { - return 'function'===m.type(a); - }, isArray: Array.isArray||function(a) { - return 'array'===m.type(a); - }, isWindow: function(a) { - return null!=a&&a==a.window; - }, isNumeric: function(a) { - return !m.isArray(a)&&a-parseFloat(a)+1>=0; - }, isEmptyObject: function(a) { - var b; for (b in a) return !1; return !0; - }, isPlainObject: function(a) { - var b; if (!a||'object'!==m.type(a)||a.nodeType||m.isWindow(a)) return !1; try { - if (a.constructor&&!j.call(a, 'constructor')&&!j.call(a.constructor.prototype, 'isPrototypeOf')) return !1; - } catch (c) { - return !1; - } if (k.ownLast) for (b in a) return j.call(a, b); for (b in a);return void 0===b||j.call(a, b); - }, type: function(a) { - return null==a?a+'':'object'==typeof a||'function'==typeof a?h[i.call(a)]||'object':typeof a; - }, globalEval: function(b) { - b&&m.trim(b)&&(a.execScript||function(b) { - a.eval.call(a, b); - })(b); - }, camelCase: function(a) { - return a.replace(o, 'ms-').replace(p, q); - }, nodeName: function(a, b) { - return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase(); - }, each: function(a, b, c) { - var d; var e=0; var f=a.length; var g=r(a); if (c) { - if (g) { - for (;f>e; e++) if (d=b.apply(a[e], c), d===!1) break; - } else for (e in a) if (d=b.apply(a[e], c), d===!1) break; - } else if (g) { - for (;f>e; e++) if (d=b.call(a[e], e, a[e]), d===!1) break; - } else for (e in a) if (d=b.call(a[e], e, a[e]), d===!1) break; return a; - }, trim: function(a) { - return null==a?'':(a+'').replace(n, ''); - }, makeArray: function(a, b) { - var c=b||[]; return null!=a&&(r(Object(a))?m.merge(c, 'string'==typeof a?[a]:a):f.call(c, a)), c; - }, inArray: function(a, b, c) { - var d; if (b) { - if (g) return g.call(b, a, c); for (d=b.length, c=c?0>c?Math.max(0, d+c):c:0; d>c; c++) if (c in b&&b[c]===a) return c; - } return -1; - }, merge: function(a, b) { - var c=+b.length; var d=0; var e=a.length; while (c>d)a[e++]=b[d++]; if (c!==c) while (void 0!==b[d])a[e++]=b[d++]; return a.length=e, a; - }, grep: function(a, b, c) { - for (var d, e=[], f=0, g=a.length, h=!c; g>f; f++)d=!b(a[f], f), d!==h&&e.push(a[f]); return e; - }, map: function(a, b, c) { - var d; var f=0; var g=a.length; var h=r(a); var i=[]; if (h) for (;g>f; f++)d=b(a[f], f, c), null!=d&&i.push(d); else for (f in a)d=b(a[f], f, c), null!=d&&i.push(d); return e.apply([], i); - }, guid: 1, proxy: function(a, b) { - var c; var e; var f; return 'string'==typeof b&&(f=a[b], b=a, a=f), m.isFunction(a)?(c=d.call(arguments, 2), e=function() { - return a.apply(b||this, c.concat(d.call(arguments))); - }, e.guid=a.guid=a.guid||m.guid++, e):void 0; - }, now: function() { - return +new Date; - }, support: k}), m.each('Boolean Number String Function Array Date RegExp Object Error'.split(' '), function(a, b) { - h['[object '+b+']']=b.toLowerCase(); - }); function r(a) { - var b='length'in a&&a.length; var c=m.type(a); return 'function'===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:'array'===c||0===b||'number'==typeof b&&b>0&&b-1 in a; - } var s=function(a) { - var b; var c; var d; var e; var f; var g; var h; var i; var j; var k; var l; var m; var n; var o; var p; var q; var r; var s; var t; var u='sizzle'+1*new Date; var v=a.document; var w=0; var x=0; var y=ha(); var z=ha(); var A=ha(); var B=function(a, b) { - return a===b&&(l=!0), 0; - }; var C=1<<31; var D={}.hasOwnProperty; var E=[]; var F=E.pop; var G=E.push; var H=E.push; var I=E.slice; var J=function(a, b) { - for (var c=0, d=a.length; d>c; c++) if (a[c]===b) return c; return -1; - }; var K='checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped'; var L='[\\x20\\t\\r\\n\\f]'; var M='(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+'; var N=M.replace('w', 'w#'); var O='\\['+L+'*('+M+')(?:'+L+'*([*^$|!~]?=)'+L+'*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|('+N+'))|)'+L+'*\\]'; var P=':('+M+')(?:\\(((\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|'+O+')*)|.*)\\)|)'; var Q=new RegExp(L+'+', 'g'); var R=new RegExp('^'+L+'+|((?:^|[^\\\\])(?:\\\\.)*)'+L+'+$', 'g'); var S=new RegExp('^'+L+'*,'+L+'*'); var T=new RegExp('^'+L+'*([>+~]|'+L+')'+L+'*'); var U=new RegExp('='+L+'*([^\\]\'"]*?)'+L+'*\\]', 'g'); var V=new RegExp(P); var W=new RegExp('^'+N+'$'); var X={ID: new RegExp('^#('+M+')'), CLASS: new RegExp('^\\.('+M+')'), TAG: new RegExp('^('+M.replace('w', 'w*')+')'), ATTR: new RegExp('^'+O), PSEUDO: new RegExp('^'+P), CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\('+L+'*(even|odd|(([+-]|)(\\d*)n|)'+L+'*(?:([+-]|)'+L+'*(\\d+)|))'+L+'*\\)|)', 'i'), bool: new RegExp('^(?:'+K+')$', 'i'), needsContext: new RegExp('^'+L+'*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\('+L+'*((?:-\\d)?\\d*)'+L+'*\\)|)(?=[^-]|$)', 'i')}; var Y=/^(?:input|select|textarea|button)$/i; var Z=/^h\d$/i; var $=/^[^{]+\{\s*\[native \w/; var _=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/; var aa=/[+~]/; var ba=/'|\\/g; var ca=new RegExp('\\\\([\\da-f]{1,6}'+L+'?|('+L+')|.)', 'ig'); var da=function(a, b, c) { - var d='0x'+b-65536; return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296, 1023&d|56320); - }; var ea=function() { - m(); - }; try { - H.apply(E=I.call(v.childNodes), v.childNodes), E[v.childNodes.length].nodeType; - } catch (fa) { - H={apply: E.length?function(a, b) { - G.apply(a, I.call(b)); - }:function(a, b) { - var c=a.length; var d=0; while (a[c++]=b[d++]);a.length=c-1; - }}; - } function ga(a, b, d, e) { - var f; var h; var j; var k; var l; var o; var r; var s; var w; var x; if ((b?b.ownerDocument||b:v)!==n&&m(b), b=b||n, d=d||[], k=b.nodeType, 'string'!=typeof a||!a||1!==k&&9!==k&&11!==k) return d; if (!e&&p) { - if (11!==k&&(f=_.exec(a))) { - if (j=f[1]) { - if (9===k) { - if (h=b.getElementById(j), !h||!h.parentNode) return d; if (h.id===j) return d.push(h), d; - } else if (b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b, h)&&h.id===j) return d.push(h), d; - } else { - if (f[2]) return H.apply(d, b.getElementsByTagName(a)), d; if ((j=f[3])&&c.getElementsByClassName) return H.apply(d, b.getElementsByClassName(j)), d; - } - } if (c.qsa&&(!q||!q.test(a))) { - if (s=r=u, w=b, x=1!==k&&a, 1===k&&'object'!==b.nodeName.toLowerCase()) { - o=g(a), (r=b.getAttribute('id'))?s=r.replace(ba, '\\$&'):b.setAttribute('id', s), s='[id=\''+s+'\'] ', l=o.length; while (l--)o[l]=s+ra(o[l]); w=aa.test(a)&&pa(b.parentNode)||b, x=o.join(','); - } if (x) { - try { - return H.apply(d, w.querySelectorAll(x)), d; - } catch (y) {} finally { - r||b.removeAttribute('id'); - } - } - } - } return i(a.replace(R, '$1'), b, d, e); - } function ha() { - var a=[]; function b(c, e) { - return a.push(c+' ')>d.cacheLength&&delete b[a.shift()], b[c+' ']=e; - } return b; - } function ia(a) { - return a[u]=!0, a; - } function ja(a) { - var b=n.createElement('div'); try { - return !!a(b); - } catch (c) { - return !1; - } finally { - b.parentNode&&b.parentNode.removeChild(b), b=null; - } - } function ka(a, b) { - var c=a.split('|'); var e=a.length; while (e--)d.attrHandle[c[e]]=b; - } function la(a, b) { - var c=b&&a; var d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C); if (d) return d; if (c) while (c=c.nextSibling) if (c===b) return -1; return a?1:-1; - } function ma(a) { - return function(b) { - var c=b.nodeName.toLowerCase(); return 'input'===c&&b.type===a; - }; - } function na(a) { - return function(b) { - var c=b.nodeName.toLowerCase(); return ('input'===c||'button'===c)&&b.type===a; - }; - } function oa(a) { - return ia(function(b) { - return b=+b, ia(function(c, d) { - var e; var f=a([], c.length, b); var g=f.length; while (g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e])); - }); - }); - } function pa(a) { - return a&&'undefined'!=typeof a.getElementsByTagName&&a; - }c=ga.support={}, f=ga.isXML=function(a) { - var b=a&&(a.ownerDocument||a).documentElement; return b?'HTML'!==b.nodeName:!1; - }, m=ga.setDocument=function(a) { - var b; var e; var g=a?a.ownerDocument||a:v; return g!==n&&9===g.nodeType&&g.documentElement?(n=g, o=g.documentElement, e=g.defaultView, e&&e!==e.top&&(e.addEventListener?e.addEventListener('unload', ea, !1):e.attachEvent&&e.attachEvent('onunload', ea)), p=!f(g), c.attributes=ja(function(a) { - return a.className='i', !a.getAttribute('className'); - }), c.getElementsByTagName=ja(function(a) { - return a.appendChild(g.createComment('')), !a.getElementsByTagName('*').length; - }), c.getElementsByClassName=$.test(g.getElementsByClassName), c.getById=ja(function(a) { - return o.appendChild(a).id=u, !g.getElementsByName||!g.getElementsByName(u).length; - }), c.getById?(d.find.ID=function(a, b) { - if ('undefined'!=typeof b.getElementById&&p) { - var c=b.getElementById(a); return c&&c.parentNode?[c]:[]; - } - }, d.filter.ID=function(a) { - var b=a.replace(ca, da); return function(a) { - return a.getAttribute('id')===b; - }; - }):(delete d.find.ID, d.filter.ID=function(a) { - var b=a.replace(ca, da); return function(a) { - var c='undefined'!=typeof a.getAttributeNode&&a.getAttributeNode('id'); return c&&c.value===b; - }; - }), d.find.TAG=c.getElementsByTagName?function(a, b) { - return 'undefined'!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0; - }:function(a, b) { - var c; var d=[]; var e=0; var f=b.getElementsByTagName(a); if ('*'===a) { - while (c=f[e++])1===c.nodeType&&d.push(c); return d; - } return f; - }, d.find.CLASS=c.getElementsByClassName&&function(a, b) { - return p?b.getElementsByClassName(a):void 0; - }, r=[], q=[], (c.qsa=$.test(g.querySelectorAll))&&(ja(function(a) { - o.appendChild(a).innerHTML='', a.querySelectorAll('[msallowcapture^=\'\']').length&&q.push('[*^$]='+L+'*(?:\'\'|"")'), a.querySelectorAll('[selected]').length||q.push('\\['+L+'*(?:value|'+K+')'), a.querySelectorAll('[id~='+u+'-]').length||q.push('~='), a.querySelectorAll(':checked').length||q.push(':checked'), a.querySelectorAll('a#'+u+'+*').length||q.push('.#.+[+~]'); - }), ja(function(a) { - var b=g.createElement('input'); b.setAttribute('type', 'hidden'), a.appendChild(b).setAttribute('name', 'D'), a.querySelectorAll('[name=d]').length&&q.push('name'+L+'*[*^$|!~]?='), a.querySelectorAll(':enabled').length||q.push(':enabled', ':disabled'), a.querySelectorAll('*,:x'), q.push(',.*:'); - })), (c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a) { - c.disconnectedMatch=s.call(a, 'div'), s.call(a, '[s!=\'\']:x'), r.push('!=', P); - }), q=q.length&&new RegExp(q.join('|')), r=r.length&&new RegExp(r.join('|')), b=$.test(o.compareDocumentPosition), t=b||$.test(o.contains)?function(a, b) { - var c=9===a.nodeType?a.documentElement:a; var d=b&&b.parentNode; return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d))); - }:function(a, b) { - if (b) while (b=b.parentNode) if (b===a) return !0; return !1; - }, B=b?function(a, b) { - if (a===b) return l=!0, 0; var d=!a.compareDocumentPosition-!b.compareDocumentPosition; return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1, 1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v, a)?-1:b===g||b.ownerDocument===v&&t(v, b)?1:k?J(k, a)-J(k, b):0:4&d?-1:1); - }:function(a, b) { - if (a===b) return l=!0, 0; var c; var d=0; var e=a.parentNode; var f=b.parentNode; var h=[a]; var i=[b]; if (!e||!f) return a===g?-1:b===g?1:e?-1:f?1:k?J(k, a)-J(k, b):0; if (e===f) return la(a, b); c=a; while (c=c.parentNode)h.unshift(c); c=b; while (c=c.parentNode)i.unshift(c); while (h[d]===i[d])d++; return d?la(h[d], i[d]):h[d]===v?-1:i[d]===v?1:0; - }, g):n; - }, ga.matches=function(a, b) { - return ga(a, null, null, b); - }, ga.matchesSelector=function(a, b) { - if ((a.ownerDocument||a)!==n&&m(a), b=b.replace(U, '=\'$1\']'), !(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b))) { - try { - var d=s.call(a, b); if (d||c.disconnectedMatch||a.document&&11!==a.document.nodeType) return d; - } catch (e) {} - } return ga(b, n, null, [a]).length>0; - }, ga.contains=function(a, b) { - return (a.ownerDocument||a)!==n&&m(a), t(a, b); - }, ga.attr=function(a, b) { - (a.ownerDocument||a)!==n&&m(a); var e=d.attrHandle[b.toLowerCase()]; var f=e&&D.call(d.attrHandle, b.toLowerCase())?e(a, b, !p):void 0; return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null; - }, ga.error=function(a) { - throw new Error('Syntax error, unrecognized expression: '+a); - }, ga.uniqueSort=function(a) { - var b; var d=[]; var e=0; var f=0; if (l=!c.detectDuplicates, k=!c.sortStable&&a.slice(0), a.sort(B), l) { - while (b=a[f++])b===a[f]&&(e=d.push(f)); while (e--)a.splice(d[e], 1); - } return k=null, a; - }, e=ga.getText=function(a) { - var b; var c=''; var d=0; var f=a.nodeType; if (f) { - if (1===f||9===f||11===f) { - if ('string'==typeof a.textContent) return a.textContent; for (a=a.firstChild; a; a=a.nextSibling)c+=e(a); - } else if (3===f||4===f) return a.nodeValue; - } else while (b=a[d++])c+=e(b); return c; - }, d=ga.selectors={cacheLength: 50, createPseudo: ia, match: X, attrHandle: {}, find: {}, relative: {'>': {dir: 'parentNode', first: !0}, ' ': {dir: 'parentNode'}, '+': {dir: 'previousSibling', first: !0}, '~': {dir: 'previousSibling'}}, preFilter: {ATTR: function(a) { - return a[1]=a[1].replace(ca, da), a[3]=(a[3]||a[4]||a[5]||'').replace(ca, da), '~='===a[2]&&(a[3]=' '+a[3]+' '), a.slice(0, 4); - }, CHILD: function(a) { - return a[1]=a[1].toLowerCase(), 'nth'===a[1].slice(0, 3)?(a[3]||ga.error(a[0]), a[4]=+(a[4]?a[5]+(a[6]||1):2*('even'===a[3]||'odd'===a[3])), a[5]=+(a[7]+a[8]||'odd'===a[3])):a[3]&&ga.error(a[0]), a; - }, PSEUDO: function(a) { - var b; var c=!a[6]&&a[2]; return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||'':c&&V.test(c)&&(b=g(c, !0))&&(b=c.indexOf(')', c.length-b)-c.length)&&(a[0]=a[0].slice(0, b), a[2]=c.slice(0, b)), a.slice(0, 3)); - }}, filter: {TAG: function(a) { - var b=a.replace(ca, da).toLowerCase(); return '*'===a?function() { - return !0; - }:function(a) { - return a.nodeName&&a.nodeName.toLowerCase()===b; - }; - }, CLASS: function(a) { - var b=y[a+' ']; return b||(b=new RegExp('(^|'+L+')'+a+'('+L+'|$)'))&&y(a, function(a) { - return b.test('string'==typeof a.className&&a.className||'undefined'!=typeof a.getAttribute&&a.getAttribute('class')||''); - }); - }, ATTR: function(a, b, c) { - return function(d) { - var e=ga.attr(d, a); return null==e?'!='===b:b?(e+='', '='===b?e===c:'!='===b?e!==c:'^='===b?c&&0===e.indexOf(c):'*='===b?c&&e.indexOf(c)>-1:'$='===b?c&&e.slice(-c.length)===c:'~='===b?(' '+e.replace(Q, ' ')+' ').indexOf(c)>-1:'|='===b?e===c||e.slice(0, c.length+1)===c+'-':!1):!0; - }; - }, CHILD: function(a, b, c, d, e) { - var f='nth'!==a.slice(0, 3); var g='last'!==a.slice(-4); var h='of-type'===b; return 1===d&&0===e?function(a) { - return !!a.parentNode; - }:function(b, c, i) { - var j; var k; var l; var m; var n; var o; var p=f!==g?'nextSibling':'previousSibling'; var q=b.parentNode; var r=h&&b.nodeName.toLowerCase(); var s=!i&&!h; if (q) { - if (f) { - while (p) { - l=b; while (l=l[p]) if (h?l.nodeName.toLowerCase()===r:1===l.nodeType) return !1; o=p='only'===a&&!o&&'nextSibling'; - } return !0; - } if (o=[g?q.firstChild:q.lastChild], g&&s) { - k=q[u]||(q[u]={}), j=k[a]||[], n=j[0]===w&&j[1], m=j[0]===w&&j[2], l=n&&q.childNodes[n]; while (l=++n&&l&&l[p]||(m=n=0)||o.pop()) { - if (1===l.nodeType&&++m&&l===b) { - k[a]=[w, n, m]; break; - } - } - } else if (s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1]; else while (l=++n&&l&&l[p]||(m=n=0)||o.pop()) if ((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w, m]), l===b)) break; return m-=e, m===d||m%d===0&&m/d>=0; - } - }; - }, PSEUDO: function(a, b) { - var c; var e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error('unsupported pseudo: '+a); return e[u]?e(b):e.length>1?(c=[a, a, '', b], d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a, c) { - var d; var f=e(a, b); var g=f.length; while (g--)d=J(a, f[g]), a[d]=!(c[d]=f[g]); - }):function(a) { - return e(a, 0, c); - }):e; - }}, pseudos: {not: ia(function(a) { - var b=[]; var c=[]; var d=h(a.replace(R, '$1')); return d[u]?ia(function(a, b, c, e) { - var f; var g=d(a, null, e, []); var h=a.length; while (h--)(f=g[h])&&(a[h]=!(b[h]=f)); - }):function(a, e, f) { - return b[0]=a, d(b, null, f, c), b[0]=null, !c.pop(); - }; - }), has: ia(function(a) { - return function(b) { - return ga(a, b).length>0; - }; - }), contains: ia(function(a) { - return a=a.replace(ca, da), function(b) { - return (b.textContent||b.innerText||e(b)).indexOf(a)>-1; - }; - }), lang: ia(function(a) { - return W.test(a||'')||ga.error('unsupported lang: '+a), a=a.replace(ca, da).toLowerCase(), function(b) { - var c; do if (c=p?b.lang:b.getAttribute('xml:lang')||b.getAttribute('lang')) return c=c.toLowerCase(), c===a||0===c.indexOf(a+'-'); while ((b=b.parentNode)&&1===b.nodeType);return !1; - }; - }), target: function(b) { - var c=a.location&&a.location.hash; return c&&c.slice(1)===b.id; - }, root: function(a) { - return a===o; - }, focus: function(a) { - return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex); - }, enabled: function(a) { - return a.disabled===!1; - }, disabled: function(a) { - return a.disabled===!0; - }, checked: function(a) { - var b=a.nodeName.toLowerCase(); return 'input'===b&&!!a.checked||'option'===b&&!!a.selected; - }, selected: function(a) { - return a.parentNode&&a.parentNode.selectedIndex, a.selected===!0; - }, empty: function(a) { - for (a=a.firstChild; a; a=a.nextSibling) if (a.nodeType<6) return !1; return !0; - }, parent: function(a) { - return !d.pseudos.empty(a); - }, header: function(a) { - return Z.test(a.nodeName); - }, input: function(a) { - return Y.test(a.nodeName); - }, button: function(a) { - var b=a.nodeName.toLowerCase(); return 'input'===b&&'button'===a.type||'button'===b; - }, text: function(a) { - var b; return 'input'===a.nodeName.toLowerCase()&&'text'===a.type&&(null==(b=a.getAttribute('type'))||'text'===b.toLowerCase()); - }, first: oa(function() { - return [0]; - }), last: oa(function(a, b) { - return [b-1]; - }), eq: oa(function(a, b, c) { - return [0>c?c+b:c]; - }), even: oa(function(a, b) { - for (var c=0; b>c; c+=2)a.push(c); return a; - }), odd: oa(function(a, b) { - for (var c=1; b>c; c+=2)a.push(c); return a; - }), lt: oa(function(a, b, c) { - for (var d=0>c?c+b:c; --d>=0;)a.push(d); return a; - }), gt: oa(function(a, b, c) { - for (var d=0>c?c+b:c; ++db; b++)d+=a[b].value; return d; - } function sa(a, b, c) { - var d=b.dir; var e=c&&'parentNode'===d; var f=x++; return b.first?function(b, c, f) { - while (b=b[d]) if (1===b.nodeType||e) return a(b, c, f); - }:function(b, c, g) { - var h; var i; var j=[w, f]; if (g) { - while (b=b[d]) if ((1===b.nodeType||e)&&a(b, c, g)) return !0; - } else { - while (b=b[d]) { - if (1===b.nodeType||e) { - if (i=b[u]||(b[u]={}), (h=i[d])&&h[0]===w&&h[1]===f) return j[2]=h[2]; if (i[d]=j, j[2]=a(b, c, g)) return !0; - } - } - } - }; - } function ta(a) { - return a.length>1?function(b, c, d) { - var e=a.length; while (e--) if (!a[e](b, c, d)) return !1; return !0; - }:a[0]; - } function ua(a, b, c) { - for (var d=0, e=b.length; e>d; d++)ga(a, b[d], c); return c; - } function va(a, b, c, d, e) { - for (var f, g=[], h=0, i=a.length, j=null!=b; i>h; h++)(f=a[h])&&(!c||c(f, d, e))&&(g.push(f), j&&b.push(h)); return g; - } function wa(a, b, c, d, e, f) { - return d&&!d[u]&&(d=wa(d)), e&&!e[u]&&(e=wa(e, f)), ia(function(f, g, h, i) { - var j; var k; var l; var m=[]; var n=[]; var o=g.length; var p=f||ua(b||'*', h.nodeType?[h]:h, []); var q=!a||!f&&b?p:va(p, m, a, h, i); var r=c?e||(f?a:o||d)?[]:g:q; if (c&&c(q, r, h, i), d) { - j=va(r, n), d(j, [], h, i), k=j.length; while (k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l)); - } if (f) { - if (e||a) { - if (e) { - j=[], k=r.length; while (k--)(l=r[k])&&j.push(q[k]=l); e(null, r=[], j, i); - }k=r.length; while (k--)(l=r[k])&&(j=e?J(f, l):m[k])>-1&&(f[j]=!(g[j]=l)); - } - } else r=va(r===g?r.splice(o, r.length):r), e?e(null, g, r, i):H.apply(g, r); - }); - } function xa(a) { - for (var b, c, e, f=a.length, g=d.relative[a[0].type], h=g||d.relative[' '], i=g?1:0, k=sa(function(a) { - return a===b; - }, h, !0), l=sa(function(a) { - return J(b, a)>-1; - }, h, !0), m=[function(a, c, d) { - var e=!g&&(d||c!==j)||((b=c).nodeType?k(a, c, d):l(a, c, d)); return b=null, e; - }]; f>i; i++) { - if (c=d.relative[a[i].type])m=[sa(ta(m), c)]; else { - if (c=d.filter[a[i].type].apply(null, a[i].matches), c[u]) { - for (e=++i; f>e; e++) if (d.relative[a[e].type]) break; return wa(i>1&&ta(m), i>1&&ra(a.slice(0, i-1).concat({value: ' '===a[i-2].type?'*':''})).replace(R, '$1'), c, e>i&&xa(a.slice(i, e)), f>e&&xa(a=a.slice(e)), f>e&&ra(a)); - }m.push(c); - } - } return ta(m); - } function ya(a, b) { - var c=b.length>0; var e=a.length>0; var f=function(f, g, h, i, k) { - var l; var m; var o; var p=0; var q='0'; var r=f&&[]; var s=[]; var t=j; var u=f||e&&d.find.TAG('*', k); var v=w+=null==t?1:Math.random()||.1; var x=u.length; for (k&&(j=g!==n&&g); q!==x&&null!=(l=u[q]); q++) { - if (e&&l) { - m=0; while (o=a[m++]) { - if (o(l, g, h)) { - i.push(l); break; - } - }k&&(w=v); - }c&&((l=!o&&l)&&p--, f&&r.push(l)); - } if (p+=q, c&&q!==p) { - m=0; while (o=b[m++])o(r, s, g, h); if (f) { - if (p>0) while (q--)r[q]||s[q]||(s[q]=F.call(i)); s=va(s); - }H.apply(i, s), k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i); - } return k&&(w=v, j=t), r; - }; return c?ia(f):f; - } return h=ga.compile=function(a, b) { - var c; var d=[]; var e=[]; var f=A[a+' ']; if (!f) { - b||(b=g(a)), c=b.length; while (c--)f=xa(b[c]), f[u]?d.push(f):e.push(f); f=A(a, ya(e, d)), f.selector=a; - } return f; - }, i=ga.select=function(a, b, e, f) { - var i; var j; var k; var l; var m; var n='function'==typeof a&&a; var o=!f&&g(a=n.selector||a); if (e=e||[], 1===o.length) { - if (j=o[0]=o[0].slice(0), j.length>2&&'ID'===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]) { - if (b=(d.find.ID(k.matches[0].replace(ca, da), b)||[])[0], !b) return e; n&&(b=b.parentNode), a=a.slice(j.shift().value.length); - }i=X.needsContext.test(a)?0:j.length; while (i--) { - if (k=j[i], d.relative[l=k.type]) break; if ((m=d.find[l])&&(f=m(k.matches[0].replace(ca, da), aa.test(j[0].type)&&pa(b.parentNode)||b))) { - if (j.splice(i, 1), a=f.length&&ra(j), !a) return H.apply(e, f), e; break; - } - } - } return (n||h(a, o))(f, b, !p, e, aa.test(a)&&pa(b.parentNode)||b), e; - }, c.sortStable=u.split('').sort(B).join('')===u, c.detectDuplicates=!!l, m(), c.sortDetached=ja(function(a) { - return 1&a.compareDocumentPosition(n.createElement('div')); - }), ja(function(a) { - return a.innerHTML='', '#'===a.firstChild.getAttribute('href'); - })||ka('type|href|height|width', function(a, b, c) { - return c?void 0:a.getAttribute(b, 'type'===b.toLowerCase()?1:2); - }), c.attributes&&ja(function(a) { - return a.innerHTML='', a.firstChild.setAttribute('value', ''), ''===a.firstChild.getAttribute('value'); - })||ka('value', function(a, b, c) { - return c||'input'!==a.nodeName.toLowerCase()?void 0:a.defaultValue; - }), ja(function(a) { - return null==a.getAttribute('disabled'); - })||ka(K, function(a, b, c) { - var d; return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null; - }), ga; - }(a); m.find=s, m.expr=s.selectors, m.expr[':']=m.expr.pseudos, m.unique=s.uniqueSort, m.text=s.getText, m.isXMLDoc=s.isXML, m.contains=s.contains; var t=m.expr.match.needsContext; var u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/; var v=/^.[^:#\[\.,]*$/; function w(a, b, c) { - if (m.isFunction(b)) { - return m.grep(a, function(a, d) { - return !!b.call(a, d, a)!==c; - }); - } if (b.nodeType) { - return m.grep(a, function(a) { - return a===b!==c; - }); - } if ('string'==typeof b) { - if (v.test(b)) return m.filter(b, a, c); b=m.filter(b, a); - } return m.grep(a, function(a) { - return m.inArray(a, b)>=0!==c; - }); - }m.filter=function(a, b, c) { - var d=b[0]; return c&&(a=':not('+a+')'), 1===b.length&&1===d.nodeType?m.find.matchesSelector(d, a)?[d]:[]:m.find.matches(a, m.grep(b, function(a) { - return 1===a.nodeType; - })); - }, m.fn.extend({find: function(a) { - var b; var c=[]; var d=this; var e=d.length; if ('string'!=typeof a) { - return this.pushStack(m(a).filter(function() { - for (b=0; e>b; b++) if (m.contains(d[b], this)) return !0; - })); - } for (b=0; e>b; b++)m.find(a, d[b], c); return c=this.pushStack(e>1?m.unique(c):c), c.selector=this.selector?this.selector+' '+a:a, c; - }, filter: function(a) { - return this.pushStack(w(this, a||[], !1)); - }, not: function(a) { - return this.pushStack(w(this, a||[], !0)); - }, is: function(a) { - return !!w(this, 'string'==typeof a&&t.test(a)?m(a):a||[], !1).length; - }}); var x; var y=a.document; var z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/; var A=m.fn.init=function(a, b) { - var c; var d; if (!a) return this; if ('string'==typeof a) { - if (c='<'===a.charAt(0)&&'>'===a.charAt(a.length-1)&&a.length>=3?[null, a, null]:z.exec(a), !c||!c[1]&&b) return !b||b.jquery?(b||x).find(a):this.constructor(b).find(a); if (c[1]) { - if (b=b instanceof m?b[0]:b, m.merge(this, m.parseHTML(c[1], b&&b.nodeType?b.ownerDocument||b:y, !0)), u.test(c[1])&&m.isPlainObject(b)) for (c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c, b[c]); return this; - } if (d=y.getElementById(c[2]), d&&d.parentNode) { - if (d.id!==c[2]) return x.find(a); this.length=1, this[0]=d; - } return this.context=y, this.selector=a, this; - } return a.nodeType?(this.context=this[0]=a, this.length=1, this):m.isFunction(a)?'undefined'!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector, this.context=a.context), m.makeArray(a, this)); - }; A.prototype=m.fn, x=m(y); var B=/^(?:parents|prev(?:Until|All))/; var C={children: !0, contents: !0, next: !0, prev: !0}; m.extend({dir: function(a, b, c) { - var d=[]; var e=a[b]; while (e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e), e=e[b]; return d; - }, sibling: function(a, b) { - for (var c=[]; a; a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a); return c; - }}), m.fn.extend({has: function(a) { - var b; var c=m(a, this); var d=c.length; return this.filter(function() { - for (b=0; d>b; b++) if (m.contains(this, c[b])) return !0; - }); - }, closest: function(a, b) { - for (var c, d=0, e=this.length, f=[], g=t.test(a)||'string'!=typeof a?m(a, b||this.context):0; e>d; d++) { - for (c=this[d]; c&&c!==b; c=c.parentNode) { - if (c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c, a))) { - f.push(c); break; - } - } - } return this.pushStack(f.length>1?m.unique(f):f); - }, index: function(a) { - return a?'string'==typeof a?m.inArray(this[0], m(a)):m.inArray(a.jquery?a[0]:a, this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1; - }, add: function(a, b) { - return this.pushStack(m.unique(m.merge(this.get(), m(a, b)))); - }, addBack: function(a) { - return this.add(null==a?this.prevObject:this.prevObject.filter(a)); - }}); function D(a, b) { - do a=a[b]; while (a&&1!==a.nodeType);return a; - }m.each({parent: function(a) { - var b=a.parentNode; return b&&11!==b.nodeType?b:null; - }, parents: function(a) { - return m.dir(a, 'parentNode'); - }, parentsUntil: function(a, b, c) { - return m.dir(a, 'parentNode', c); - }, next: function(a) { - return D(a, 'nextSibling'); - }, prev: function(a) { - return D(a, 'previousSibling'); - }, nextAll: function(a) { - return m.dir(a, 'nextSibling'); - }, prevAll: function(a) { - return m.dir(a, 'previousSibling'); - }, nextUntil: function(a, b, c) { - return m.dir(a, 'nextSibling', c); - }, prevUntil: function(a, b, c) { - return m.dir(a, 'previousSibling', c); - }, siblings: function(a) { - return m.sibling((a.parentNode||{}).firstChild, a); - }, children: function(a) { - return m.sibling(a.firstChild); - }, contents: function(a) { - return m.nodeName(a, 'iframe')?a.contentDocument||a.contentWindow.document:m.merge([], a.childNodes); - }}, function(a, b) { - m.fn[a]=function(c, d) { - var e=m.map(this, b, c); return 'Until'!==a.slice(-5)&&(d=c), d&&'string'==typeof d&&(e=m.filter(d, e)), this.length>1&&(C[a]||(e=m.unique(e)), B.test(a)&&(e=e.reverse())), this.pushStack(e); - }; - }); var E=/\S+/g; var F={}; function G(a) { - var b=F[a]={}; return m.each(a.match(E)||[], function(a, c) { - b[c]=!0; - }), b; - }m.Callbacks=function(a) { - a='string'==typeof a?F[a]||G(a):m.extend({}, a); var b; var c; var d; var e; var f; var g; var h=[]; var i=!a.once&&[]; var j=function(l) { - for (c=a.memory&&l, d=!0, f=g||0, g=0, e=h.length, b=!0; h&&e>f; f++) { - if (h[f].apply(l[0], l[1])===!1&&a.stopOnFalse) { - c=!1; break; - } - }b=!1, h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable()); - }; var k={add: function() { - if (h) { - var d=h.length; !function f(b) { - m.each(b, function(b, c) { - var d=m.type(c); 'function'===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&'string'!==d&&f(c); - }); - }(arguments), b?e=h.length:c&&(g=d, j(c)); - } return this; - }, remove: function() { - return h&&m.each(arguments, function(a, c) { - var d; while ((d=m.inArray(c, h, d))>-1)h.splice(d, 1), b&&(e>=d&&e--, f>=d&&f--); - }), this; - }, has: function(a) { - return a?m.inArray(a, h)>-1:!(!h||!h.length); - }, empty: function() { - return h=[], e=0, this; - }, disable: function() { - return h=i=c=void 0, this; - }, disabled: function() { - return !h; - }, lock: function() { - return i=void 0, c||k.disable(), this; - }, locked: function() { - return !i; - }, fireWith: function(a, c) { - return !h||d&&!i||(c=c||[], c=[a, c.slice?c.slice():c], b?i.push(c):j(c)), this; - }, fire: function() { - return k.fireWith(this, arguments), this; - }, fired: function() { - return !!d; - }}; return k; - }, m.extend({Deferred: function(a) { - var b=[['resolve', 'done', m.Callbacks('once memory'), 'resolved'], ['reject', 'fail', m.Callbacks('once memory'), 'rejected'], ['notify', 'progress', m.Callbacks('memory')]]; var c='pending'; var d={state: function() { - return c; - }, always: function() { - return e.done(arguments).fail(arguments), this; - }, then: function() { - var a=arguments; return m.Deferred(function(c) { - m.each(b, function(b, f) { - var g=m.isFunction(a[b])&&a[b]; e[f[1]](function() { - var a=g&&g.apply(this, arguments); a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+'With'](this===d?c.promise():this, g?[a]:arguments); - }); - }), a=null; - }).promise(); - }, promise: function(a) { - return null!=a?m.extend(a, d):d; - }}; var e={}; return d.pipe=d.then, m.each(b, function(a, f) { - var g=f[2]; var h=f[3]; d[f[1]]=g.add, h&&g.add(function() { - c=h; - }, b[1^a][2].disable, b[2][2].lock), e[f[0]]=function() { - return e[f[0]+'With'](this===e?d:this, arguments), this; - }, e[f[0]+'With']=g.fireWith; - }), d.promise(e), a&&a.call(e, e), e; - }, when: function(a) { - var b=0; var c=d.call(arguments); var e=c.length; var f=1!==e||a&&m.isFunction(a.promise)?e:0; var g=1===f?a:m.Deferred(); var h=function(a, b, c) { - return function(e) { - b[a]=this, c[a]=arguments.length>1?d.call(arguments):e, c===i?g.notifyWith(b, c):--f||g.resolveWith(b, c); - }; - }; var i; var j; var k; if (e>1) for (i=new Array(e), j=new Array(e), k=new Array(e); e>b; b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)):--f; return f||g.resolveWith(k, c), g.promise(); - }}); var H; m.fn.ready=function(a) { - return m.ready.promise().done(a), this; - }, m.extend({isReady: !1, readyWait: 1, holdReady: function(a) { -a?m.readyWait++:m.ready(!0); - }, ready: function(a) { - if (a===!0?!--m.readyWait:!m.isReady) { - if (!y.body) return setTimeout(m.ready); m.isReady=!0, a!==!0&&--m.readyWait>0||(H.resolveWith(y, [m]), m.fn.triggerHandler&&(m(y).triggerHandler('ready'), m(y).off('ready'))); - } - }}); function I() { -y.addEventListener?(y.removeEventListener('DOMContentLoaded', J, !1), a.removeEventListener('load', J, !1)):(y.detachEvent('onreadystatechange', J), a.detachEvent('onload', J)); - } function J() { - (y.addEventListener||'load'===event.type||'complete'===y.readyState)&&(I(), m.ready()); - }m.ready.promise=function(b) { - if (!H) { - if (H=m.Deferred(), 'complete'===y.readyState)setTimeout(m.ready); else if (y.addEventListener)y.addEventListener('DOMContentLoaded', J, !1), a.addEventListener('load', J, !1); else { - y.attachEvent('onreadystatechange', J), a.attachEvent('onload', J); var c=!1; try { - c=null==a.frameElement&&y.documentElement; - } catch (d) {}c&&c.doScroll&&!function e() { - if (!m.isReady) { - try { - c.doScroll('left'); - } catch (a) { - return setTimeout(e, 50); - }I(), m.ready(); - } - }(); - } - } return H.promise(b); - }; var K='undefined'; var L; for (L in m(k)) break; k.ownLast='0'!==L, k.inlineBlockNeedsLayout=!1, m(function() { - var a; var b; var c; var d; c=y.getElementsByTagName('body')[0], c&&c.style&&(b=y.createElement('div'), d=y.createElement('div'), d.style.cssText='position:absolute;border:0;width:0;height:0;top:0;left:-9999px', c.appendChild(d).appendChild(b), typeof b.style.zoom!==K&&(b.style.cssText='display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1', k.inlineBlockNeedsLayout=a=3===b.offsetWidth, a&&(c.style.zoom=1)), c.removeChild(d)); - }), function() { - var a=y.createElement('div'); if (null==k.deleteExpando) { - k.deleteExpando=!0; try { - delete a.test; - } catch (b) { - k.deleteExpando=!1; - } - }a=null; - }(), m.acceptData=function(a) { - var b=m.noData[(a.nodeName+' ').toLowerCase()]; var c=+a.nodeType||1; return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute('classid')===b; - }; var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/; var N=/([A-Z])/g; function O(a, b, c) { - if (void 0===c&&1===a.nodeType) { - var d='data-'+b.replace(N, '-$1').toLowerCase(); if (c=a.getAttribute(d), 'string'==typeof c) { - try { - c='true'===c?!0:'false'===c?!1:'null'===c?null:+c+''===c?+c:M.test(c)?m.parseJSON(c):c; - } catch (e) {}m.data(a, b, c); - } else c=void 0; - } return c; - } function P(a) { - var b; for (b in a) if (('data'!==b||!m.isEmptyObject(a[b]))&&'toJSON'!==b) return !1; - - return !0; - } function Q(a, b, d, e) { - if (m.acceptData(a)) { - var f; var g; var h=m.expando; var i=a.nodeType; var j=i?m.cache:a; var k=i?a[h]:a[h]&&h; if (k&&j[k]&&(e||j[k].data)||void 0!==d||'string'!=typeof b) return k||(k=i?a[h]=c.pop()||m.guid++:h), j[k]||(j[k]=i?{}:{toJSON: m.noop}), ('object'==typeof b||'function'==typeof b)&&(e?j[k]=m.extend(j[k], b):j[k].data=m.extend(j[k].data, b)), g=j[k], e||(g.data||(g.data={}), g=g.data), void 0!==d&&(g[m.camelCase(b)]=d), 'string'==typeof b?(f=g[b], null==f&&(f=g[m.camelCase(b)])):f=g, f; - } - } function R(a, b, c) { - if (m.acceptData(a)) { - var d; var e; var f=a.nodeType; var g=f?m.cache:a; var h=f?a[m.expando]:m.expando; if (g[h]) { - if (b&&(d=c?g[h]:g[h].data)) { -m.isArray(b)?b=b.concat(m.map(b, m.camelCase)):b in d?b=[b]:(b=m.camelCase(b), b=b in d?[b]:b.split(' ')), e=b.length; while (e--) delete d[b[e]]; if (c?!P(d):!m.isEmptyObject(d)) return; - }(c||(delete g[h].data, P(g[h])))&&(f?m.cleanData([a], !0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null); - } - } - }m.extend({cache: {}, noData: {'applet ': !0, 'embed ': !0, 'object ': 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'}, hasData: function(a) { - return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando], !!a&&!P(a); - }, data: function(a, b, c) { - return Q(a, b, c); - }, removeData: function(a, b) { - return R(a, b); - }, _data: function(a, b, c) { - return Q(a, b, c, !0); - }, _removeData: function(a, b) { - return R(a, b, !0); - }}), m.fn.extend({data: function(a, b) { - var c; var d; var e; var f=this[0]; var g=f&&f.attributes; if (void 0===a) { - if (this.length&&(e=m.data(f), 1===f.nodeType&&!m._data(f, 'parsedAttrs'))) { - c=g.length; while (c--)g[c]&&(d=g[c].name, 0===d.indexOf('data-')&&(d=m.camelCase(d.slice(5)), O(f, d, e[d]))); m._data(f, 'parsedAttrs', !0); - } return e; - } return 'object'==typeof a?this.each(function() { - m.data(this, a); - }):arguments.length>1?this.each(function() { - m.data(this, a, b); - }):f?O(f, a, m.data(f, a)):void 0; - }, removeData: function(a) { - return this.each(function() { - m.removeData(this, a); - }); - }}), m.extend({queue: function(a, b, c) { - var d; return a?(b=(b||'fx')+'queue', d=m._data(a, b), c&&(!d||m.isArray(c)?d=m._data(a, b, m.makeArray(c)):d.push(c)), d||[]):void 0; - }, dequeue: function(a, b) { - b=b||'fx'; var c=m.queue(a, b); var d=c.length; var e=c.shift(); var f=m._queueHooks(a, b); var g=function() { - m.dequeue(a, b); - }; 'inprogress'===e&&(e=c.shift(), d--), e&&('fx'===b&&c.unshift('inprogress'), delete f.stop, e.call(a, g, f)), !d&&f&&f.empty.fire(); - }, _queueHooks: function(a, b) { - var c=b+'queueHooks'; return m._data(a, c)||m._data(a, c, {empty: m.Callbacks('once memory').add(function() { - m._removeData(a, b+'queue'), m._removeData(a, c); - })}); - }}), m.fn.extend({queue: function(a, b) { - var c=2; return 'string'!=typeof a&&(b=a, a='fx', c--), arguments.lengthh; h++)b(a[h], c, g?d:d.call(a[h], h, b(a[h], c))); return e?a:j?b.call(a):i?b(a[0], c):f; - }; var W=/^(?:checkbox|radio)$/i; !function() { - var a=y.createElement('input'); var b=y.createElement('div'); var c=y.createDocumentFragment(); if (b.innerHTML='
a', k.leadingWhitespace=3===b.firstChild.nodeType, k.tbody=!b.getElementsByTagName('tbody').length, k.htmlSerialize=!!b.getElementsByTagName('link').length, k.html5Clone='<:nav>'!==y.createElement('nav').cloneNode(!0).outerHTML, a.type='checkbox', a.checked=!0, c.appendChild(a), k.appendChecked=a.checked, b.innerHTML='', k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue, c.appendChild(b), b.innerHTML='', k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked, k.noCloneEvent=!0, b.attachEvent&&(b.attachEvent('onclick', function() { - k.noCloneEvent=!1; - }), b.cloneNode(!0).click()), null==k.deleteExpando) { - k.deleteExpando=!0; try { - delete b.test; - } catch (d) { - k.deleteExpando=!1; - } - } - }(), function() { - var b; var c; var d=y.createElement('div'); for (b in {submit: !0, change: !0, focusin: !0})c='on'+b, (k[b+'Bubbles']=c in a)||(d.setAttribute(c, 't'), k[b+'Bubbles']=d.attributes[c].expando===!1); d=null; - }(); var X=/^(?:input|select|textarea)$/i; var Y=/^key/; var Z=/^(?:mouse|pointer|contextmenu)|click/; var $=/^(?:focusinfocus|focusoutblur)$/; var _=/^([^.]*)(?:\.(.+)|)$/; function aa() { - return !0; - } function ba() { - return !1; - } function ca() { - try { - return y.activeElement; - } catch (a) {} - }m.event={global: {}, add: function(a, b, c, d, e) { - var f; var g; var h; var i; var j; var k; var l; var n; var o; var p; var q; var r=m._data(a); if (r) { - c.handler&&(i=c, c=i.handler, e=i.selector), c.guid||(c.guid=m.guid++), (g=r.events)||(g=r.events={}), (k=r.handle)||(k=r.handle=function(a) { - return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem, arguments); - }, k.elem=a), b=(b||'').match(E)||[''], h=b.length; while (h--)f=_.exec(b[h])||[], o=q=f[1], p=(f[2]||'').split('.').sort(), o&&(j=m.event.special[o]||{}, o=(e?j.delegateType:j.bindType)||o, j=m.event.special[o]||{}, l=m.extend({type: o, origType: q, data: d, handler: c, guid: c.guid, selector: e, needsContext: e&&m.expr.match.needsContext.test(e), namespace: p.join('.')}, i), (n=g[o])||(n=g[o]=[], n.delegateCount=0, j.setup&&j.setup.call(a, d, p, k)!==!1||(a.addEventListener?a.addEventListener(o, k, !1):a.attachEvent&&a.attachEvent('on'+o, k))), j.add&&(j.add.call(a, l), l.handler.guid||(l.handler.guid=c.guid)), e?n.splice(n.delegateCount++, 0, l):n.push(l), m.event.global[o]=!0); a=null; - } - }, remove: function(a, b, c, d, e) { - var f; var g; var h; var i; var j; var k; var l; var n; var o; var p; var q; var r=m.hasData(a)&&m._data(a); if (r&&(k=r.events)) { - b=(b||'').match(E)||[''], j=b.length; while (j--) { - if (h=_.exec(b[j])||[], o=q=h[1], p=(h[2]||'').split('.').sort(), o) { - l=m.event.special[o]||{}, o=(d?l.delegateType:l.bindType)||o, n=k[o]||[], h=h[2]&&new RegExp('(^|\\.)'+p.join('\\.(?:.*\\.|)')+'(\\.|$)'), i=f=n.length; while (f--)g=n[f], !e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&('**'!==d||!g.selector)||(n.splice(f, 1), g.selector&&n.delegateCount--, l.remove&&l.remove.call(a, g)); i&&!n.length&&(l.teardown&&l.teardown.call(a, p, r.handle)!==!1||m.removeEvent(a, o, r.handle), delete k[o]); - } else for (o in k)m.event.remove(a, o+b[j], c, d, !0); - } m.isEmptyObject(k)&&(delete r.handle, m._removeData(a, 'events')); - } - }, trigger: function(b, c, d, e) { - var f; var g; var h; var i; var k; var l; var n; var o=[d||y]; var p=j.call(b, 'type')?b.type:b; var q=j.call(b, 'namespace')?b.namespace.split('.'):[]; if (h=l=d=d||y, 3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf('.')>=0&&(q=p.split('.'), p=q.shift(), q.sort()), g=p.indexOf(':')<0&&'on'+p, b=b[m.expando]?b:new m.Event(p, 'object'==typeof b&&b), b.isTrigger=e?2:3, b.namespace=q.join('.'), b.namespace_re=b.namespace?new RegExp('(^|\\.)'+q.join('\\.(?:.*\\.|)')+'(\\.|$)'):null, b.result=void 0, b.target||(b.target=d), c=null==c?[b]:m.makeArray(c, [b]), k=m.event.special[p]||{}, e||!k.trigger||k.trigger.apply(d, c)!==!1)) { - if (!e&&!k.noBubble&&!m.isWindow(d)) { - for (i=k.delegateType||p, $.test(i+p)||(h=h.parentNode); h; h=h.parentNode)o.push(h), l=h; l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a); - }n=0; while ((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p, f=(m._data(h, 'events')||{})[b.type]&&m._data(h, 'handle'), f&&f.apply(h, c), f=g&&h[g], f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h, c), b.result===!1&&b.preventDefault()); if (b.type=p, !e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(), c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)) { - l=d[g], l&&(d[g]=null), m.event.triggered=p; try { - d[p](); - } catch (r) {}m.event.triggered=void 0, l&&(d[g]=l); - } return b.result; - } - }, dispatch: function(a) { - a=m.event.fix(a); var b; var c; var e; var f; var g; var h=[]; var i=d.call(arguments); var j=(m._data(this, 'events')||{})[a.type]||[]; var k=m.event.special[a.type]||{}; if (i[0]=a, a.delegateTarget=this, !k.preDispatch||k.preDispatch.call(this, a)!==!1) { - h=m.event.handlers.call(this, a, j), b=0; while ((f=h[b++])&&!a.isPropagationStopped()) { - a.currentTarget=f.elem, g=0; while ((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e, a.data=e.data, c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem, i), void 0!==c&&(a.result=c)===!1&&(a.preventDefault(), a.stopPropagation())); - } return k.postDispatch&&k.postDispatch.call(this, a), a.result; - } - }, handlers: function(a, b) { - var c; var d; var e; var f; var g=[]; var h=b.delegateCount; var i=a.target; if (h&&i.nodeType&&(!a.button||'click'!==a.type)) { - for (;i!=this; i=i.parentNode||this) { - if (1===i.nodeType&&(i.disabled!==!0||'click'!==a.type)) { - for (e=[], f=0; h>f; f++)d=b[f], c=d.selector+' ', void 0===e[c]&&(e[c]=d.needsContext?m(c, this).index(i)>=0:m.find(c, this, null, [i]).length), e[c]&&e.push(d); e.length&&g.push({elem: i, handlers: e}); - } - } - } return h]', 'i'); var ha=/^\s+/; var ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi; var ja=/<([\w:]+)/; var ka=/\s*$/g; var ra={option: [1, ''], legend: [1, '
', '
'], area: [1, '', ''], param: [1, '', ''], thead: [1, '', '
'], tr: [2, '', '
'], col: [2, '', '
'], td: [3, '', '
'], _default: k.htmlSerialize?[0, '', '']:[1, 'X
', '
']}; var sa=da(y); var ta=sa.appendChild(y.createElement('div')); ra.optgroup=ra.option, ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead, ra.th=ra.td; function ua(a, b) { - var c; var d; var e=0; var f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||'*'):typeof a.querySelectorAll!==K?a.querySelectorAll(b||'*'):void 0; if (!f) for (f=[], c=a.childNodes||a; null!=(d=c[e]); e++)!b||m.nodeName(d, b)?f.push(d):m.merge(f, ua(d, b)); return void 0===b||b&&m.nodeName(a, b)?m.merge([a], f):f; - } function va(a) { - W.test(a.type)&&(a.defaultChecked=a.checked); - } function wa(a, b) { - return m.nodeName(a, 'table')&&m.nodeName(11!==b.nodeType?b:b.firstChild, 'tr')?a.getElementsByTagName('tbody')[0]||a.appendChild(a.ownerDocument.createElement('tbody')):a; - } function xa(a) { - return a.type=(null!==m.find.attr(a, 'type'))+'/'+a.type, a; - } function ya(a) { - var b=pa.exec(a.type); return b?a.type=b[1]:a.removeAttribute('type'), a; - } function za(a, b) { - for (var c, d=0; null!=(c=a[d]); d++)m._data(c, 'globalEval', !b||m._data(b[d], 'globalEval')); - } function Aa(a, b) { - if (1===b.nodeType&&m.hasData(a)) { - var c; var d; var e; var f=m._data(a); var g=m._data(b, f); var h=f.events; if (h) { - delete g.handle, g.events={}; for (c in h) for (d=0, e=h[c].length; e>d; d++)m.event.add(b, c, h[c][d]); - }g.data&&(g.data=m.extend({}, g.data)); - } - } function Ba(a, b) { - var c; var d; var e; if (1===b.nodeType) { - if (c=b.nodeName.toLowerCase(), !k.noCloneEvent&&b[m.expando]) { - e=m._data(b); for (d in e.events)m.removeEvent(b, d, e.handle); b.removeAttribute(m.expando); - }'script'===c&&b.text!==a.text?(xa(b).text=a.text, ya(b)):'object'===c?(b.parentNode&&(b.outerHTML=a.outerHTML), k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):'input'===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked, b.value!==a.value&&(b.value=a.value)):'option'===c?b.defaultSelected=b.selected=a.defaultSelected:('input'===c||'textarea'===c)&&(b.defaultValue=a.defaultValue); - } - }m.extend({clone: function(a, b, c) { - var d; var e; var f; var g; var h; var i=m.contains(a.ownerDocument, a); if (k.html5Clone||m.isXMLDoc(a)||!ga.test('<'+a.nodeName+'>')?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML, ta.removeChild(f=ta.firstChild)), !(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a))) for (d=ua(f), h=ua(a), g=0; null!=(e=h[g]); ++g)d[g]&&Ba(e, d[g]); if (b) if (c) for (h=h||ua(a), d=d||ua(f), g=0; null!=(e=h[g]); g++)Aa(e, d[g]); else Aa(a, f); return d=ua(f, 'script'), d.length>0&&za(d, !i&&ua(a, 'script')), d=h=e=null, f; - }, buildFragment: function(a, b, c, d) { - for (var e, f, g, h, i, j, l, n=a.length, o=da(b), p=[], q=0; n>q; q++) { - if (f=a[q], f||0===f) { - if ('object'===m.type(f))m.merge(p, f.nodeType?[f]:f); else if (la.test(f)) { - h=h||o.appendChild(b.createElement('div')), i=(ja.exec(f)||['', ''])[1].toLowerCase(), l=ra[i]||ra._default, h.innerHTML=l[1]+f.replace(ia, '<$1>')+l[2], e=l[0]; while (e--)h=h.lastChild; if (!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])), !k.tbody) { - f='table'!==i||ka.test(f)?''!==l[1]||ka.test(f)?0:h:h.firstChild, e=f&&f.childNodes.length; while (e--)m.nodeName(j=f.childNodes[e], 'tbody')&&!j.childNodes.length&&f.removeChild(j); - }m.merge(p, h.childNodes), h.textContent=''; while (h.firstChild)h.removeChild(h.firstChild); h=o.lastChild; - } else p.push(b.createTextNode(f)); - } - } h&&o.removeChild(h), k.appendChecked||m.grep(ua(p, 'input'), va), q=0; while (f=p[q++]) { - if ((!d||-1===m.inArray(f, d))&&(g=m.contains(f.ownerDocument, f), h=ua(o.appendChild(f), 'script'), g&&za(h), c)) { - e=0; while (f=h[e++])oa.test(f.type||'')&&c.push(f); - } - } return h=null, o; - }, cleanData: function(a, b) { - for (var d, e, f, g, h=0, i=m.expando, j=m.cache, l=k.deleteExpando, n=m.event.special; null!=(d=a[h]); h++) { - if ((b||m.acceptData(d))&&(f=d[i], g=f&&j[f])) { - if (g.events) for (e in g.events)n[e]?m.event.remove(d, e):m.removeEvent(d, e, g.handle); j[f]&&(delete j[f], l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null, c.push(f)); - } - } - }}), m.fn.extend({text: function(a) { - return V(this, function(a) { - return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a)); - }, null, a, arguments.length); - }, append: function() { - return this.domManip(arguments, function(a) { - if (1===this.nodeType||11===this.nodeType||9===this.nodeType) { - var b=wa(this, a); b.appendChild(a); - } - }); - }, prepend: function() { - return this.domManip(arguments, function(a) { - if (1===this.nodeType||11===this.nodeType||9===this.nodeType) { - var b=wa(this, a); b.insertBefore(a, b.firstChild); - } - }); - }, before: function() { - return this.domManip(arguments, function(a) { - this.parentNode&&this.parentNode.insertBefore(a, this); - }); - }, after: function() { - return this.domManip(arguments, function(a) { - this.parentNode&&this.parentNode.insertBefore(a, this.nextSibling); - }); - }, remove: function(a, b) { - for (var c, d=a?m.filter(a, this):this, e=0; null!=(c=d[e]); e++)b||1!==c.nodeType||m.cleanData(ua(c)), c.parentNode&&(b&&m.contains(c.ownerDocument, c)&&za(ua(c, 'script')), c.parentNode.removeChild(c)); return this; - }, empty: function() { - for (var a, b=0; null!=(a=this[b]); b++) { - 1===a.nodeType&&m.cleanData(ua(a, !1)); while (a.firstChild)a.removeChild(a.firstChild); a.options&&m.nodeName(a, 'select')&&(a.options.length=0); - } return this; - }, clone: function(a, b) { - return a=null==a?!1:a, b=null==b?a:b, this.map(function() { - return m.clone(this, a, b); - }); - }, html: function(a) { - return V(this, function(a) { - var b=this[0]||{}; var c=0; var d=this.length; if (void 0===a) return 1===b.nodeType?b.innerHTML.replace(fa, ''):void 0; if (!('string'!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||['', ''])[1].toLowerCase()])) { - a=a.replace(ia, '<$1>'); try { - for (;d>c; c++)b=this[c]||{}, 1===b.nodeType&&(m.cleanData(ua(b, !1)), b.innerHTML=a); b=0; - } catch (e) {} - }b&&this.empty().append(a); - }, null, a, arguments.length); - }, replaceWith: function() { - var a=arguments[0]; return this.domManip(arguments, function(b) { - a=this.parentNode, m.cleanData(ua(this)), a&&a.replaceChild(b, this); - }), a&&(a.length||a.nodeType)?this:this.remove(); - }, detach: function(a) { - return this.remove(a, !0); - }, domManip: function(a, b) { - a=e.apply([], a); var c; var d; var f; var g; var h; var i; var j=0; var l=this.length; var n=this; var o=l-1; var p=a[0]; var q=m.isFunction(p); if (q||l>1&&'string'==typeof p&&!k.checkClone&&na.test(p)) { - return this.each(function(c) { - var d=n.eq(c); q&&(a[0]=p.call(this, c, d.html())), d.domManip(a, b); - }); - } if (l&&(i=m.buildFragment(a, this[0].ownerDocument, !1, this), c=i.firstChild, 1===i.childNodes.length&&(i=c), c)) { - for (g=m.map(ua(i, 'script'), xa), f=g.length; l>j; j++)d=i, j!==o&&(d=m.clone(d, !0, !0), f&&m.merge(g, ua(d, 'script'))), b.call(this[j], d, j); if (f) for (h=g[g.length-1].ownerDocument, m.map(g, ya), j=0; f>j; j++)d=g[j], oa.test(d.type||'')&&!m._data(d, 'globalEval')&&m.contains(h, d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||'').replace(qa, ''))); i=c=null; - } return this; - }}), m.each({appendTo: 'append', prependTo: 'prepend', insertBefore: 'before', insertAfter: 'after', replaceAll: 'replaceWith'}, function(a, b) { - m.fn[a]=function(a) { - for (var c, d=0, e=[], g=m(a), h=g.length-1; h>=d; d++)c=d===h?this:this.clone(!0), m(g[d])[b](c), f.apply(e, c.get()); return this.pushStack(e); - }; - }); var Ca; var Da={}; function Ea(b, c) { - var d; var e=m(c.createElement(b)).appendTo(c.body); var f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0], 'display'); return e.detach(), f; - } function Fa(a) { - var b=y; var c=Da[a]; return c||(c=Ea(a, b), 'none'!==c&&c||(Ca=(Ca||m('