From e494aaeed4624eb94c5af7462bf7ede5506382b9 Mon Sep 17 00:00:00 2001 From: Klaus Thoden Date: Thu, 27 Aug 2020 17:23:00 +0200 Subject: [PATCH] Remove build files from index --- .gitignore | 2 + docs/_build/doctrees/environment.pickle | Bin 1638848 -> 0 bytes docs/_build/doctrees/index.doctree | Bin 7580 -> 0 bytes docs/_build/html/.buildinfo | 4 - docs/_build/html/_sources/index.rst.txt | 59 - docs/_build/html/_static/basic.css | 768 -- docs/_build/html/_static/better.css | 314 - docs/_build/html/_static/better_basic.css | 455 - docs/_build/html/_static/doctools.js | 315 - .../html/_static/documentation_options.js | 11 - docs/_build/html/_static/file.png | Bin 286 -> 0 bytes docs/_build/html/_static/jquery-3.4.1.js | 10598 ---------------- docs/_build/html/_static/jquery.js | 2 - docs/_build/html/_static/language_data.js | 297 - docs/_build/html/_static/minus.png | Bin 90 -> 0 bytes docs/_build/html/_static/plus.png | Bin 90 -> 0 bytes docs/_build/html/_static/pygments.css | 69 - docs/_build/html/_static/searchtools.js | 506 - docs/_build/html/_static/underscore-1.3.1.js | 999 -- docs/_build/html/_static/underscore.js | 31 - docs/_build/html/genindex.html | 87 - docs/_build/html/index.html | 147 - docs/_build/html/objects.inv | Bin 357 -> 0 bytes docs/_build/html/search.html | 100 - docs/_build/html/searchindex.js | 1 - 25 files changed, 2 insertions(+), 14763 deletions(-) delete mode 100644 docs/_build/doctrees/environment.pickle delete mode 100644 docs/_build/doctrees/index.doctree delete mode 100644 docs/_build/html/.buildinfo delete mode 100644 docs/_build/html/_sources/index.rst.txt delete mode 100644 docs/_build/html/_static/basic.css delete mode 100644 docs/_build/html/_static/better.css delete mode 100644 docs/_build/html/_static/better_basic.css delete mode 100644 docs/_build/html/_static/doctools.js delete mode 100644 docs/_build/html/_static/documentation_options.js delete mode 100644 docs/_build/html/_static/file.png delete mode 100644 docs/_build/html/_static/jquery-3.4.1.js delete mode 100644 docs/_build/html/_static/jquery.js delete mode 100644 docs/_build/html/_static/language_data.js delete mode 100644 docs/_build/html/_static/minus.png delete mode 100644 docs/_build/html/_static/plus.png delete mode 100644 docs/_build/html/_static/pygments.css delete mode 100644 docs/_build/html/_static/searchtools.js delete mode 100644 docs/_build/html/_static/underscore-1.3.1.js delete mode 100644 docs/_build/html/_static/underscore.js delete mode 100644 docs/_build/html/genindex.html delete mode 100644 docs/_build/html/index.html delete mode 100644 docs/_build/html/objects.inv delete mode 100644 docs/_build/html/search.html delete mode 100644 docs/_build/html/searchindex.js diff --git a/.gitignore b/.gitignore index 57bab5a..bf818e6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ cred.cfg __pycache__/ auto/ + +docs/_build diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle deleted file mode 100644 index 527ae9978bd9fe356f5763bbdc2a0c36ad1e04a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1638848 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%0De8eXT9+~ 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

Er1`!*Iro)(nfHaYkHA&{Vb; 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%0D;g6Izv|og6_}*dO>gK3;kdK41{19 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Ƚ$rm7^RNI5u^3CR49l?+tFQ)tVI9_EBQ{|RwqiT} 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Ƚ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 diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo deleted file mode 100644 index 26ed94f..0000000 --- a/docs/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: a9c883f4d1b3d239cf9a08fd9c1c1ee0 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt deleted file mode 100644 index 2608513..0000000 --- a/docs/_build/html/_sources/index.rst.txt +++ /dev/null @@ -1,59 +0,0 @@ -.. Frontmatter creator documentation master file, created by - sphinx-quickstart on Thu Apr 2 08:21:24 2020. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -================================================= - Welcome to Frontmatter creator's documentation! -================================================= - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - -Code Generator -============== - -Generates LaTeX code for informative frontmatters. These will be -attached to the chapter PDFs of EOA publications we offer for -download. - -With the output comes also a script file which will replace the -original files on the server. - -Copy the ``generated_files`` folder to the server and from there run the -script. - -Dependencies ------------- - -- texlive-xetex -- python3-pypdf2 - -Config file ------------ - -The program requires a config file that stores some paths and, if a -postgres database is used, the credentials for it. If several -publication platforms are used, simply create different config files -for each instance. - -It should contain at least the following fields:: - - [server] - media_dir: - production_url: - -When using SQLite, you can specify the database file like this:: - - [sqlite] - database_file: - -Insert the postgres database credentials like this:: - - [postgres] - database_name: - user: - host: - password: "" diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css deleted file mode 100644 index 3f280f5..0000000 --- a/docs/_build/html/_static/basic.css +++ /dev/null @@ -1,768 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 15rem; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a.brackets:before, -span.brackets > a:before{ - content: "["; -} - -a.brackets:after, -span.brackets > a:after { - content: "]"; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > p:first-child, -td > p:first-child { - margin-top: 0px; -} - -th > p:last-child, -td > p:last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -li > p:first-child { - margin-top: 0px; -} - -li > p:last-child { - margin-bottom: 0px; -} - -dl.footnote > dt, -dl.citation > dt { - float: left; -} - -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; -} - -dl.footnote > dd:after, -dl.citation > dd:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dt:after { - content: ":"; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > p:first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0.5em; - content: ":"; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_build/html/_static/better.css b/docs/_build/html/_static/better.css deleted file mode 100644 index ab4be3f..0000000 --- a/docs/_build/html/_static/better.css +++ /dev/null @@ -1,314 +0,0 @@ -@import url("better_basic.css"); - - - - -/* main styles */ - -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 100%; - color: #000000; - margin: 0; - padding: 0; - line-height: 135%; -} - -a { - color: #008; - text-decoration: none; -} - -a:visited { - color: #208; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -a.toc-backref { - color: #000000; -} - -p { - margin: 1rem 0; -} - -h1, h2, h3, h4, h5, h6 { - margin-top: 1em; - margin-bottom: 0.5em; - color: #000000; - line-height: 135%; -} - -.body .section:first-child > :first-child, -.sphinxsidebarwrapper > :first-child, -.sphinxsidebar .search:first-child -{ - margin-top: 1rem; -} - -h1 { font-size: 1.5rem; font-weight: bold; } -h2 { font-size: 1.5rem; font-weight: normal; } -h3 { font-size: 1.25rem; font-weight: bold; } -h4 { font-size: 1.25rem; font-weight: normal; } -h5 { font-size: 1rem; font-weight: bold; } -h6 { font-size: 1rem; font-weight: normal; } - -/* page-level layout of containers */ - -header#pageheader, footer#pagefooter, .related, .document { - width: 100%; - max-width: 60rem; - margin: auto; -} - -.documentwrapper { - float: left; - width: 100%; -} - -.bodywrapper { - margin: 0 0 0 15rem; -} - -footer#pagefooter, footer#pagefooter a { - color: #000000; -} - - -footer#pagefooter { - padding-top: 2rem; - padding-bottom: 2rem; - text-align: center; -} - -footer#pagefooter a { - text-decoration: underline; -} - -/* header styles */ - -body > header h1 a, body > header h1 a:visited { - color: #000000; -} - -a.headerlink { - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -/* code styles */ - -pre, tt { - background-color: #eee; - color: #333; -} - -pre { - font-family: Monaco, Consolas, "Lucida Console", monospace; - margin: 1rem -5px; - padding: 5px; - border-left: none; - border-right: none; - font-size: 0.8rem; - line-height: 1rem; -} - -tt { - padding: 0 1px 0 1px; - font-family: Consolas, Monaco, monospace; -} - -/* API doc styles */ - -dl.function, -dl.class, -dl.method, -dl.attribute, -dl.data, -dl.classmethod { - margin-bottom: 2rem; -} - -/* relbar */ - -.related { - line-height: 30px; - width: 100%; - font-size: 0.9rem; -} - -.related.top { - border-bottom: 1px solid #aaa; -} - -.related.bottom { - border-top: 1px solid #aaa; -} - -.related ul { - padding: 0; - margin: 0; - list-style: none; -} - -.related li { - display: inline; -} - -nav#rellinks { - float: right; -} - -nav#rellinks li+li:before { - content: "|"; -} - -nav#breadcrumbs li+li:before { - content: "\00BB"; -} - -/* sidebar */ - -.sphinxsidebarwrapper { - padding: 0 1rem 0 0; -} - -.sphinxsidebar { - width: 15rem; - margin-left: -100%; - font-size: 0.9rem; - float: left; -} - -.sphinxsidebar h3 a { - color: #000000; -} - -.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; -} - -.sphinxsidebar ul { - margin: 0; - padding: 0; - margin-bottom: 1rem; - list-style: none; -} - -.sphinxsidebar ul ul, -.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -.sphinxsidebar input { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - height: 1.5rem; - font-size: 0.9rem; - margin: 0; - - background-color: white; - border: 1px solid #ccc; - color: #555; -} - -.sphinxsidebar .search { - margin-top: 2rem; -} - -.sphinxsidebar .search input[type=text] { - width: 90%; - display: inline-block; -} - -.sphinxsidebar .search input[type=submit] { - width: 4rem; - display: inline-block; -} - -/* paragraph-level markup */ - -.admonition p.admonition-title + p { - display: inline; -} - -.admonition p { - margin-bottom: 5px; -} - -.admonition pre { - margin-bottom: 5px; -} - -.admonition ul, .admonition ol { - margin-bottom: 5px; -} - -p.admonition-title { - display: inline; - margin-right: 0; -} - -p.admonition-title:after { - content: ":"; -} - -.note { - background-color: #eee; - border: 1px solid #ccc; -} - -.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -.topic { - background-color: #eee; -} - -.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -.warning tt { - background: #efc2c2; -} - -.note tt { - background: #d6d6d6; -} - -.viewcode-block:target { - background-color: #f4debf; - border-top: 1px solid #ac9; - border-bottom: 1px solid #ac9; -} - -/* responsive styles */ - -@media (max-width: 820px) { - /* kill the sidebar */ - .bodywrapper { margin: 0; } - .sphinxsidebar { - display: none; - } - header#pageheader, footer#pagefooter, .related, .document { - margin: 0 1rem; - width: calc(100% - 2rem); - width: -webkit-calc(100% - 2rem); - } -} \ No newline at end of file diff --git a/docs/_build/html/_static/better_basic.css b/docs/_build/html/_static/better_basic.css deleted file mode 100644 index bf43230..0000000 --- a/docs/_build/html/_static/better_basic.css +++ /dev/null @@ -1,455 +0,0 @@ -/* basic.css_t from Sphinx project modified for sphinx-better-theme */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- general body styles --------------------------------------------------- */ - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlighted { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.refcount { - color: #060; -} - -.optional { - font-size: 1.3em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js deleted file mode 100644 index daccd20..0000000 --- a/docs/_build/html/_static/doctools.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.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" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('

') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js deleted file mode 100644 index d3acadc..0000000 --- a/docs/_build/html/_static/documentation_options.js +++ /dev/null @@ -1,11 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false -}; \ No newline at end of file diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png deleted file mode 100644 index a858a410e4faa62ce324d814e4b816fff83a6fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( diff --git a/docs/_build/html/_static/jquery-3.4.1.js b/docs/_build/html/_static/jquery-3.4.1.js deleted file mode 100644 index 773ad95..0000000 --- a/docs/_build/html/_static/jquery-3.4.1.js +++ /dev/null @@ -1,10598 +0,0 @@ -/*! - * jQuery JavaScript Library v3.4.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2019-05-01T21:04Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.4.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a global context - globalEval: function( code, options ) { - DOMEval( code, { nonce: options && options.nonce } ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.4 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2019-04-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) && - - // Support: IE 8 only - // Exclude object elements - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && rdescend.test( selector ) ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = (elem.ownerDocument || elem).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( typeof elem.contentDocument !== "undefined" ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - } ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - // Support: IE 9-11 only - // Also use offsetWidth/offsetHeight for when box sizing is unreliable - // We use getClientRects() to check for hidden/disconnected. - // In those cases, the computed value can be trusted to be border-box - if ( ( !support.boxSizingReliable() && isBorderBox || - val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = Date.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url, options ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - - - - - -
-
-
-
- - -

Index

- -
- -
- - -
-
-
- -
-
- -
© 2020, Max Planck Institute for the History of Science. - Created using Sphinx - 2.4.1 - with the - better theme. - -
- - - - \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html deleted file mode 100644 index 2f9e29f..0000000 --- a/docs/_build/html/index.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - Welcome to Frontmatter creator’s documentation! — Frontmatter creator documentation - - - - - - - - - - - - - - -
-
-
-
- -
-

Welcome to Frontmatter creator’s documentation!

-
-
-
-

Code Generator

-

Generates LaTeX code for informative frontmatters. These will be -attached to the chapter PDFs of EOA publications we offer for -download.

-

With the output comes also a script file which will replace the -original files on the server.

-

Copy the generated_files folder to the server and from there run the -script.

-
-

Dependencies

-
    -
  • texlive-xetex

  • -
  • python3-pypdf2

  • -
-
-
-

Config file

-

The program requires a config file that stores some paths and, if a -postgres database is used, the credentials for it. If several -publication platforms are used, simply create different config files -for each instance.

-

It should contain at least the following fields:

-
[server]
-media_dir:
-production_url:
-
-
-

When using SQLite, you can specify the database file like this:

-
[sqlite]
-database_file:
-
-
-

Insert the postgres database credentials like this:

-
[postgres]
-database_name:
-user:
-host:
-password: ""
-
-
-
-
-
- - -
-
-
- -
-
- -
© 2020, Max Planck Institute for the History of Science. - Created using Sphinx - 2.4.1 - with the - better theme. - -
- - - - \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv deleted file mode 100644 index 132b421fefa98c1d1700c9aa9b42506383a2ceb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<0JAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkLa&K;Q zZDDkDWpW^6a%Ew3Z*mGFAXa5^b7^mGIv@%oAXI2&AaZ4GVQFq;WpW^IW*~HEX>%ZE zX>4U6X>%ZBZ*6dLWpi_7WFU2OX>MmAdTeQ8E(&j7n8OYHCe{o95uK}(U67EX}GK6$++4>$)G zEgc>=68ya>7>?MYQ@spdWjHpjg~oaM!=YoaXBH!`EN!V!(KyOC#Sid&g{cyxZ%+B4 z+DqWId#Vw$Y^J8LB5ybl2*WaQl%Pc@fl1UYbv~Xl6wxkF6fKV9oeFG!nY;bOp;3+B z*zU@fH9;nw%x0>nwF-aK{=05T?Z-sT&qTBDd2XKT;)B9?<%1U=%sBD+$05D|DrL_v DoZp{E diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html deleted file mode 100644 index 99bb32d..0000000 --- a/docs/_build/html/search.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - Search — Frontmatter creator documentation - - - - - - - - - - - - - - - - - - - -
-
-
-
- -

Search

-
- -

- Please activate JavaScript to enable the search - functionality. -

-
-

- From here you can search these documents. Enter your search - words into the box below and click "search". Note that the search - function will automatically search for all of the words. Pages - containing fewer words won't appear in the result list. -

-
- - - -
- -
- -
- -
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js deleted file mode 100644 index 7324edf..0000000 --- a/docs/_build/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.index":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["index.rst"],objects:{},objnames:{},objtypes:{},terms:{"public":0,The:0,These:0,With:0,also:0,attach:0,can:0,chapter:0,come:0,contain:0,copi:0,creat:0,credenti:0,databas:0,database_fil:0,database_nam:0,differ:0,download:0,each:0,eoa:0,field:0,folder:0,follow:0,from:0,generated_fil:0,host:0,inform:0,insert:0,instanc:0,latex:0,least:0,like:0,media_dir:0,offer:0,origin:0,output:0,password:0,path:0,pdf:0,platform:0,postgr:0,production_url:0,program:0,pypdf2:0,python3:0,replac:0,requir:0,run:0,script:0,server:0,sever:0,should:0,simpli:0,some:0,specifi:0,sqlite:0,store:0,texliv:0,thi:0,used:0,user:0,using:0,when:0,which:0,xetex:0,you:0},titles:["Welcome to Frontmatter creator\u2019s documentation!"],titleterms:{code:0,config:0,creator:0,depend:0,document:0,file:0,frontmatt:0,gener:0,welcom:0}}) \ No newline at end of file