From 38b948622f650d90595c2d83b29f3e52c585fb54 Mon Sep 17 00:00:00 2001 From: kthoden Date: Tue, 9 Jun 2020 16:20:32 +0200 Subject: [PATCH] Remove built documentation from index and ignore it from now --- .gitignore | 3 + docs/_build/doctrees/environment.pickle | Bin 1637690 -> 0 bytes docs/_build/doctrees/index.doctree | Bin 4880 -> 0 bytes docs/_build/html/.buildinfo | 4 - docs/_build/html/_sources/index.rst.txt | 20 - 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 | 106 - docs/_build/html/objects.inv | Bin 323 -> 0 bytes docs/_build/html/search.html | 100 - docs/_build/html/searchindex.js | 1 - 25 files changed, 3 insertions(+), 14683 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 a3fbdbf..a9a1819 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ /opds/migrations/ /dist/ /django_opds.egg-info/ + +# Sphinx documentation +docs/_build/ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle deleted file mode 100644 index 02cc1b4a0ac170eb9852360481477d211d0d3f62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1637690 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�&5ve=l!hR(lUU8Wjuy(RiFifzamgGM5_VY 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

n6Al=`!V;4HSVXUd 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Ƚ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 wmLFC0SFqZP;=70i3 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, Klaus Thoden. - 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 d542565..0000000 --- a/docs/_build/html/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - Welcome to EOA OPDS module’s documentation! — EOA OPDS module documentation - - - - - - - - - - - - - - -
-
-
-
- -
-

Welcome to EOA OPDS module’s documentation!

-
-
-
-
-

Indices and tables

- -
- - -
-
-
- -
-
- -
© 2020, Klaus Thoden. - 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 be088f9c0c37f0d837eb5957d67051039d417818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfYrAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkKPeCA0 zP()K8ZEs|CY-I`~AXa5^b7^mGIv@%oAXI2&AaZ4GVQFq;WpW^IW*~HEX>%ZEX>4U6 zX>%ZBZ*6dLWpi_7WFU2OX>MmAdTeQ8E(& - - - - - Search — EOA OPDS module 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 f3af906..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:{index:0,page:0,search:0},titles:["Welcome to EOA OPDS module\u2019s documentation!"],titleterms:{document:0,eoa:0,indic:0,modul:0,opd:0,tabl:0,welcom:0}}) \ No newline at end of file